diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml
new file mode 100644
index 0000000000..141fc9a7d8
--- /dev/null
+++ b/.github/workflows/compile_changelogs.yml
@@ -0,0 +1,36 @@
+name: Compile changelogs
+
+on:
+ schedule:
+ - cron: "0 0 * * *"
+
+jobs:
+ compile:
+ name: "Compile changelogs"
+ runs-on: ubuntu-latest
+ steps:
+ - name: "Setup python"
+ uses: actions/setup-python@v1
+ with:
+ python-version: '3.x'
+ - name: "Install deps"
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install pyyaml
+ - name: "Checkout"
+ uses: actions/checkout@v1
+ with:
+ fetch-depth: 25
+ - name: "Compile"
+ run: |
+ python tools/ss13_genchangelog.py html/changelog.html html/changelogs
+ - name: Commit
+ run: |
+ git config --local user.email "action@github.com"
+ git config --local user.name "Changelogs"
+ git pull origin master
+ git commit -m "Automatic changelog compile [ci skip]" -a || true
+ - name: "Push"
+ uses: ad-m/github-push-action@master
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml
new file mode 100644
index 0000000000..b827472254
--- /dev/null
+++ b/SpacemanDMM.toml
@@ -0,0 +1,2 @@
+[langserver]
+dreamchecker = true
diff --git a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
index 8113c586ff..dd7e700146 100644
--- a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
@@ -145,9 +145,6 @@
"aE" = (
/turf/open/floor/plating/asteroid/airless,
/area/ruin/powered)
-"aF" = (
-/turf/open/floor/plating/asteroid,
-/area/ruin/powered)
"aG" = (
/obj/structure/sink/puddle,
/turf/open/floor/plating/asteroid,
@@ -241,7 +238,7 @@
/turf/closed/mineral/random/low_chance/earth_like,
/area/ruin/powered)
"bb" = (
-/turf/closed/mineral/random/earth_like,
+/turf/closed/mineral/random/no_caves/earth_like,
/area/ruin/powered)
"bc" = (
/obj/item/circuitboard/machine/circuit_imprinter,
@@ -1137,7 +1134,7 @@ ao
ao
ak
af
-aF
+am
bb
bb
bb
@@ -1189,7 +1186,7 @@ an
an
ae
ae
-aF
+am
bb
bb
bb
@@ -1223,8 +1220,8 @@ bb
bb
bb
ba
-aF
-aF
+am
+am
ba
ba
ba
@@ -1241,7 +1238,7 @@ ar
af
at
at
-aF
+am
bb
fp
bb
@@ -1275,10 +1272,10 @@ bb
bb
bb
ad
-aF
-aF
-aF
-aF
+am
+am
+am
+am
ba
aH
aJ
@@ -1286,13 +1283,13 @@ aL
bb
bb
aT
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
aR
bb
bb
@@ -1328,23 +1325,23 @@ bb
bb
ad
au
-aF
+am
aB
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
ba
bb
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
+am
bg
bb
fp
@@ -1384,19 +1381,19 @@ bs
aC
bC
WH
-aF
-aF
-aF
+am
+am
+am
ba
bb
bb
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
bb
bb
bb
@@ -1432,23 +1429,23 @@ bb
bb
ad
ax
-aF
+am
aD
-aF
-aF
-aF
-aF
+am
+am
+am
+am
bb
bb
bb
aU
bd
-aF
-aF
+am
+am
bl
bm
-aF
-aF
+am
+am
bb
bb
bb
@@ -1484,20 +1481,20 @@ bb
bb
ad
ay
-aF
-aF
-aF
+am
+am
+am
aG
-aF
-aF
+am
+am
bb
bb
ba
av
be
-aF
-aF
-aF
+am
+am
+am
bn
bo
bo
@@ -1535,24 +1532,24 @@ bb
bb
bb
ba
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
bb
bb
bb
bc
bf
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
br
bb
bb
@@ -1590,22 +1587,22 @@ bb
bb
bb
bb
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
bb
bb
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
+am
+am
bb
bb
bb
@@ -1642,21 +1639,21 @@ bb
bb
bb
bb
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
aN
-aF
-aF
-aF
-aF
+am
+am
+am
+am
aR
-aF
-aF
-aF
-aF
+am
+am
+am
+am
bb
bb
fp
@@ -1695,22 +1692,22 @@ bb
bb
bb
ba
-aF
-aF
-aF
+am
+am
+am
ba
ba
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
+am
+am
+am
+am
ba
ba
ba
@@ -1752,16 +1749,16 @@ ba
aK
ba
ba
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
bp
-aF
-aF
+am
+am
aR
ba
ba
@@ -1805,15 +1802,15 @@ ba
fp
ba
aP
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
+am
+am
+am
aR
ba
ba
@@ -1858,15 +1855,15 @@ ba
ba
aQ
aP
-aF
-aF
+am
+am
aR
-aF
-aF
-aF
-aF
+am
+am
+am
+am
bb
-aF
+am
ba
ba
aZ
@@ -1910,12 +1907,12 @@ ba
ba
ba
ba
-aF
-aF
-aF
-aF
+am
+am
+am
+am
aP
-aF
+am
bg
bb
bb
@@ -1962,12 +1959,12 @@ bb
bb
ba
ba
-aF
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
+am
aS
bb
fp
@@ -2015,11 +2012,11 @@ bb
bb
ba
bg
-aF
-aF
-aF
-aF
-aF
+am
+am
+am
+am
+am
aS
bb
fp
@@ -2066,12 +2063,12 @@ bb
bb
fp
ba
-aF
-aF
+am
+am
bj
-aF
-aF
-aF
+am
+am
+am
aS
fp
bb
@@ -2120,9 +2117,9 @@ ba
ba
aS
bi
-aF
-aF
-aF
+am
+am
+am
aS
aS
bb
@@ -2171,10 +2168,10 @@ ba
aZ
ba
aS
-aF
-aF
-aF
-aF
+am
+am
+am
+am
aS
aS
ba
diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
index 69b56946f2..209feb82e3 100644
--- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
@@ -2688,7 +2688,7 @@
/obj/structure/window/reinforced{
dir = 1
},
-/obj/structure/piano{
+/obj/structure/musician/piano{
icon_state = "piano"
},
/turf/open/floor/plasteel/grimy,
diff --git a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm
index 75adc455b0..a1b2271d96 100644
--- a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm
+++ b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm
@@ -28,7 +28,7 @@
/turf/open/floor/holofloor/beach,
/area/ruin/space/has_grav/powered/aesthetic)
"i" = (
-/obj/structure/piano,
+/obj/structure/musician/piano,
/obj/structure/window{
dir = 8
},
diff --git a/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm
index 3118ad3f5f..1bfb337d99 100644
--- a/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm
+++ b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm
@@ -154,13 +154,7 @@
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"cX" = (
-/obj/structure/statue{
- desc = "A lifelike statue of a horrifying monster.";
- dir = 8;
- icon = 'icons/mob/lavaland/lavaland_monsters.dmi';
- icon_state = "goliath";
- name = "goliath"
- },
+/obj/structure/closet/secure_closet/miner,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"dk" = (
@@ -267,9 +261,13 @@
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"eS" = (
-/obj/structure/table,
-/obj/item/gps/mining,
-/obj/item/gps/mining,
+/obj/structure/statue{
+ desc = "A lifelike statue of a horrifying monster.";
+ dir = 8;
+ icon = 'icons/mob/lavaland/lavaland_monsters.dmi';
+ icon_state = "goliath";
+ name = "goliath"
+ },
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"fm" = (
@@ -427,7 +425,6 @@
/obj/effect/turf_decal/tile/brown{
dir = 4
},
-/obj/structure/displaycase,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"hP" = (
@@ -773,7 +770,8 @@
/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"nH" = (
-/obj/structure/displaycase,
+/obj/machinery/light,
+/obj/structure/closet/wardrobe/miner,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"nI" = (
@@ -1086,6 +1084,7 @@
/obj/effect/turf_decal/tile/brown{
dir = 1
},
+/obj/effect/turf_decal/tile/brown,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"re" = (
@@ -1181,9 +1180,6 @@
name = "Station Intercom (General)";
pixel_x = 28
},
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
dir = 8
},
@@ -1279,12 +1275,8 @@
/turf/open/floor/plasteel,
/area/mine/production)
"uG" = (
-/obj/structure/table,
-/obj/item/clothing/glasses/meson,
-/obj/item/storage/bag/ore,
-/obj/item/pickaxe,
-/obj/item/mining_scanner,
-/obj/item/flashlight,
+/obj/structure/ore_box,
+/obj/effect/turf_decal/box,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"uI" = (
@@ -1758,15 +1750,6 @@
"Cd" = (
/turf/closed/wall,
/area/mine/production)
-"Cg" = (
-/obj/structure/table,
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = 5;
- pixel_y = 3
- },
-/obj/item/tank/internals/emergency_oxygen,
-/turf/open/floor/plasteel,
-/area/mine/living_quarters)
"Cj" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -1870,7 +1853,6 @@
/obj/machinery/light{
dir = 1
},
-/obj/structure/chair,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Dv" = (
@@ -1880,12 +1862,6 @@
},
/turf/open/floor/plating,
/area/mine/laborcamp/security)
-"DN" = (
-/obj/machinery/computer/shuttle/mining/common{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/mine/living_quarters)
"Ed" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -2028,27 +2004,6 @@
},
/turf/open/floor/plating,
/area/mine/laborcamp)
-"Hk" = (
-/obj/docking_port/stationary{
- area_type = /area/lavaland/surface/outdoors;
- dir = 8;
- dwidth = 3;
- height = 7;
- id = "lavaland_common_away";
- name = "Mining base public dock";
- width = 7
- },
-/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"Hm" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/machinery/door/airlock/external{
- name = "Lavaland Shuttle Airlock"
- },
-/turf/open/floor/plasteel,
-/area/mine/living_quarters)
"Ho" = (
/obj/machinery/door/airlock{
name = "Restroom"
@@ -2121,12 +2076,6 @@
},
/turf/open/floor/plasteel/white,
/area/mine/living_quarters)
-"If" = (
-/obj/structure/chair{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/mine/living_quarters)
"Ii" = (
/obj/structure/table,
/obj/item/storage/box/donkpockets,
@@ -2757,9 +2706,6 @@
/obj/effect/turf_decal/tile/brown{
dir = 4
},
-/obj/structure/table,
-/obj/item/gps/mining,
-/obj/item/gps/mining,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Pq" = (
@@ -2882,7 +2828,6 @@
/obj/machinery/newscaster{
pixel_y = 32
},
-/obj/structure/chair,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Rv" = (
@@ -3399,15 +3344,6 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
-"Zw" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- name = "Lavaland Shuttle Airlock"
- },
-/turf/open/floor/plasteel,
-/area/mine/living_quarters)
"ZF" = (
/obj/machinery/telecomms/relay/preset/mining,
/obj/machinery/light/small{
@@ -4330,10 +4266,10 @@ VT
VT
VT
VT
-Lm
-Lm
-Lm
-Lm
+VT
+VT
+VT
+VT
VT
VT
VT
@@ -4386,14 +4322,14 @@ VT
VT
VT
VT
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
+VT
+VT
+VT
+VT
+VT
+VT
+VT
+VT
VT
VT
VT
@@ -4442,15 +4378,15 @@ wz
VT
VT
VT
+VT
+VT
+VT
+VT
+VT
Lm
Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
+VT
+VT
Lm
VT
VT
@@ -4499,17 +4435,17 @@ wz
wz
VT
VT
+VT
+VT
Lm
+VT
+VT
+VT
Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
+VT
+VT
+VT
+VT
Lm
VT
VT
@@ -4555,18 +4491,18 @@ Lm
wz
wz
Lm
+VT
+VT
+VT
Lm
Lm
Lm
Lm
Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
-Lm
+VT
+VT
+VT
+VT
VT
VT
VT
@@ -4612,6 +4548,8 @@ VT
VT
wz
Lm
+VT
+VT
Lm
Lm
Lm
@@ -4620,10 +4558,8 @@ Lm
Lm
Lm
Lm
-Lm
-Lm
-Lm
-Lm
+VT
+VT
VT
VT
VT
@@ -4669,6 +4605,7 @@ VT
VT
Lm
Lm
+VT
Lm
Lm
Lm
@@ -4678,8 +4615,7 @@ Lm
Lm
Lm
Lm
-Lm
-Lm
+VT
VT
VT
VT
@@ -4725,12 +4661,12 @@ my
VT
VT
VT
+VT
+VT
Lm
Lm
-Lm
-Lm
-Lm
-Lm
+VT
+VT
Lm
Lm
Lm
@@ -4786,10 +4722,10 @@ wz
Lm
Lm
Lm
+VT
Lm
Lm
Lm
-Hk
Lm
Lm
Lm
@@ -4843,11 +4779,11 @@ wz
Lm
Lm
Lm
+VT
+Lm
+Lm
Lm
Lm
-KV
-Zw
-KV
Lm
Lm
Lm
@@ -4902,9 +4838,9 @@ Lm
Lm
Lm
Lm
-KV
-Ag
-KV
+Lm
+Lm
+Lm
Lm
Lm
VT
@@ -4959,9 +4895,9 @@ VN
VN
XX
VN
-KV
-Hm
-KV
+VN
+VN
+VN
VT
VT
VT
@@ -5013,12 +4949,12 @@ pu
bn
VN
zy
-If
-DN
-If
-FE
+Ag
+Ag
+Ag
+Ag
qZ
-KV
+VN
VT
VT
VT
@@ -5074,8 +5010,8 @@ Ag
Ag
Ag
Ag
-Ag
-KV
+cX
+VN
VT
VT
VT
@@ -5132,7 +5068,7 @@ uG
uG
Ag
cX
-KV
+VN
VT
VT
VT
@@ -5188,8 +5124,8 @@ KO
uG
uG
Ag
-Ag
-KV
+cX
+VN
VT
VT
VT
@@ -5245,7 +5181,7 @@ RP
Ag
Ag
Ag
-oy
+nH
VN
VT
VT
@@ -5300,8 +5236,8 @@ VN
Pp
sx
eS
-Cg
-nH
+Ag
+Ag
hH
VN
wz
diff --git a/_maps/RandomZLevels/Cabin.dmm b/_maps/RandomZLevels/Cabin.dmm
index 4d07c02565..a0862213a2 100644
--- a/_maps/RandomZLevels/Cabin.dmm
+++ b/_maps/RandomZLevels/Cabin.dmm
@@ -713,7 +713,7 @@
/turf/open/floor/wood,
/area/awaymission/cabin)
"cz" = (
-/obj/structure/piano,
+/obj/structure/musician/piano,
/turf/open/floor/wood,
/area/awaymission/cabin)
"cA" = (
diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm
index e9d592c107..c84acf0131 100644
--- a/_maps/RandomZLevels/caves.dmm
+++ b/_maps/RandomZLevels/caves.dmm
@@ -924,8 +924,8 @@
/area/awaymission/caves/BMP_asteroid/level_two)
"cK" = (
/obj/structure/sign/warning/securearea{
- desc = "A warning sign which reads 'HOLY SHIT NIGGA WHAT ARE YOU DOING'.";
- name = "\improper HOLY SHIT NIGGA WHAT ARE YOU DOING"
+ desc = "A warning sign which reads 'HOLY SHIT DUDE WHAT ARE YOU DOING'.";
+ name = "\improper HOLY SHIT DUDE WHAT ARE YOU DOING"
},
/turf/closed/wall,
/area/awaymission/caves/BMP_asteroid/level_two)
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm
index 0a08edb9b2..d85c8b12d6 100644
--- a/_maps/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/moonoutpost19.dmm
@@ -761,7 +761,7 @@
},
/area/awaymission/moonoutpost19/syndicate)
"bF" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/high_loot{
dir = 1
},
/turf/open/floor/plasteel/freezer{
@@ -4121,7 +4121,7 @@
},
/area/awaymission/moonoutpost19/research)
"hP" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/high_loot{
dir = 4
},
/obj/effect/decal/cleanable/dirt,
@@ -4473,7 +4473,7 @@
},
/area/awaymission/moonoutpost19/research)
"iw" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/high_loot{
dir = 4
},
/obj/machinery/light/small{
@@ -4764,7 +4764,7 @@
},
/area/awaymission/moonoutpost19/arrivals)
"iZ" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/high_loot{
dir = 1
},
/turf/open/floor/plasteel/freezer{
diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm
index c24bf45f81..a40066df4f 100644
--- a/_maps/RandomZLevels/snowdin.dmm
+++ b/_maps/RandomZLevels/snowdin.dmm
@@ -5939,7 +5939,7 @@
/turf/open/floor/plasteel,
/area/awaymission/snowdin/post/garage)
"mD" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/high_loot{
dir = 1
},
/obj/machinery/light/small,
@@ -8796,7 +8796,7 @@
/turf/open/floor/plasteel/showroomfloor,
/area/awaymission/snowdin/post/cavern2)
"tk" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/high_loot{
dir = 1
},
/turf/open/floor/plasteel/showroomfloor,
@@ -9643,7 +9643,7 @@
/turf/open/floor/plasteel/showroomfloor,
/area/awaymission/snowdin/post/cavern1)
"vE" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/high_loot{
dir = 1
},
/turf/open/floor/plasteel/showroomfloor,
diff --git a/_maps/cogstation.dm b/_maps/cogstation.dm
new file mode 100644
index 0000000000..5c01aaec46
--- /dev/null
+++ b/_maps/cogstation.dm
@@ -0,0 +1 @@
+#define FORCE_MAP "_maps/cogstation.json"
\ No newline at end of file
diff --git a/_maps/cogstation.json b/_maps/cogstation.json
new file mode 100644
index 0000000000..8adabe69a2
--- /dev/null
+++ b/_maps/cogstation.json
@@ -0,0 +1,11 @@
+{
+ "map_name": "CogStation",
+ "map_path": "map_files/CogStation",
+ "map_file": "CogStation.dmm",
+ "shuttles": {
+ "cargo": "cargo_box",
+ "ferry": "ferry_fancy",
+ "whiteship": "whiteship_cog",
+ "emergency": "emergency_cog"
+ }
+}
\ No newline at end of file
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index a2f0026842..3b2ee52e24 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -1337,7 +1337,7 @@
/turf/open/floor/plasteel,
/area/security/prison)
"adf" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/prison{
dir = 1
},
/turf/open/floor/plasteel/freezer,
@@ -11677,7 +11677,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aAs" = (
-/obj/structure/piano{
+/obj/structure/musician/piano{
icon_state = "piano"
},
/turf/open/floor/plating,
@@ -13056,7 +13056,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/cryopod)
"aDL" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/structure/mirror{
@@ -13944,7 +13944,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/storage/eva)
"aGk" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/structure/mirror{
@@ -15799,7 +15799,7 @@
/area/hydroponics)
"aKJ" = (
/obj/machinery/vending/cola/black,
-/obj/structure/sign/poster/contraband/sun_kist{
+/obj/structure/sign/poster/contraband/starkist{
pixel_y = 32
},
/turf/open/floor/wood,
@@ -21467,7 +21467,7 @@
/turf/open/floor/plating,
/area/maintenance/port)
"aZt" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/structure/mirror{
@@ -55549,18 +55549,6 @@
/obj/structure/grille,
/turf/open/space/basic,
/area/space/nearstation)
-"iDS" = (
-/obj/docking_port/stationary{
- dir = 8;
- dwidth = 3;
- height = 5;
- id = "commonmining_home";
- name = "SS13: Common Mining Dock";
- roundstart_template = /datum/map_template/shuttle/mining_common/meta;
- width = 7
- },
-/turf/open/space/basic,
-/area/space)
"iEJ" = (
/obj/machinery/door/airlock/external{
name = "Escape Pod One"
@@ -55633,7 +55621,7 @@
},
/area/crew_quarters/theatre)
"iTU" = (
-/obj/structure/piano{
+/obj/structure/musician/piano{
icon_state = "piano"
},
/turf/open/floor/wood,
@@ -56816,7 +56804,7 @@
/turf/open/floor/plating,
/area/security/main)
"myh" = (
-/obj/structure/piano,
+/obj/structure/musician/piano,
/obj/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/wood,
@@ -57124,15 +57112,6 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"nGI" = (
-/obj/machinery/door/airlock/external{
- name = "Common Mining Shuttle Bay"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/hallway/secondary/entry)
"nLu" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -57504,7 +57483,7 @@
/turf/open/floor/wood,
/area/crew_quarters/bar)
"oIW" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/turf/open/floor/mineral/titanium/blue,
@@ -60202,17 +60181,6 @@
/obj/item/coin/gold,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
-"xfS" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/machinery/computer/shuttle/mining/common{
- dir = 4
- },
-/turf/open/floor/plasteel/white/corner{
- dir = 1
- },
-/area/hallway/secondary/entry)
"xgk" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -60535,15 +60503,6 @@
/obj/item/instrument/trombone,
/turf/open/floor/wood,
/area/crew_quarters/theatre)
-"xQG" = (
-/obj/machinery/door/airlock/external{
- name = "Common Mining Shuttle Bay"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/hallway/secondary/entry)
"xSW" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -60647,7 +60606,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/pool)
"ycd" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/structure/mirror{
@@ -69068,7 +69027,7 @@ aaa
aaa
aoV
aaa
-iDS
+aaa
aaa
aaa
aoV
@@ -69323,11 +69282,11 @@ aaa
aaa
aaa
aaa
-asE
-asE
-nGI
-asE
-asE
+aaa
+aaa
+aaa
+aaa
+aaa
aoV
aaa
aaa
@@ -69581,9 +69540,9 @@ aaa
aaa
aaa
aaf
-awW
-auP
-awW
+aaa
+aaa
+aaa
aaf
kls
aaa
@@ -69839,8 +69798,8 @@ aaa
aaa
arB
arB
-xQG
-asE
+arB
+arB
aAC
aaf
aaa
@@ -70095,7 +70054,7 @@ aaa
aaa
aaa
arB
-xfS
+awZ
ayk
awW
aAD
@@ -73439,7 +73398,7 @@ ayl
aIK
ayl
beM
-asE
+arB
aaa
aaa
aaa
diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm
new file mode 100644
index 0000000000..28eded5c85
--- /dev/null
+++ b/_maps/map_files/CogStation/CogStation.dmm
@@ -0,0 +1,136682 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aaa" = (
+/turf/open/space/basic,
+/area/space)
+"aab" = (
+/obj/structure/sign/poster/official/anniversary_vintage_reprint,
+/turf/closed/wall/r_wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"aac" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/fore)
+"aad" = (
+/turf/open/floor/engine{
+ name = "Holodeck Projector Floor"
+ },
+/area/holodeck/rec_center)
+"aae" = (
+/obj/docking_port/stationary{
+ dir = 2;
+ dwidth = 4;
+ height = 12;
+ id = "arrivals_stationary";
+ name = "cog arrivals";
+ roundstart_template = /datum/map_template/shuttle/arrival/cog;
+ width = 9
+ },
+/turf/open/space/basic,
+/area/space)
+"aaf" = (
+/turf/closed/wall,
+/area/science/test_area)
+"aag" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/stairs/medium,
+/area/hallway/secondary/entry)
+"aah" = (
+/obj/structure/sign/warning/electricshock,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/security/armory)
+"aai" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/fore)
+"aaj" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/port/fore)
+"aak" = (
+/obj/machinery/conveyor/auto{
+ id = "pb"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"aal" = (
+/turf/closed/wall,
+/area/maintenance/port/fore)
+"aam" = (
+/obj/structure/table,
+/obj/item/storage/box/lights/mixed,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aan" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating/airless,
+/area/ai_monitored/security/armory)
+"aao" = (
+/obj/machinery/power/solar{
+ id = "forestarboard";
+ name = "Fore-Starboard Solar Array"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/starboard/fore)
+"aap" = (
+/obj/structure/reagent_dispensers/watertank,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aaq" = (
+/obj/structure/rack,
+/obj/item/storage/toolbox/emergency,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aar" = (
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "pb"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"aas" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aat" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/observatory";
+ dir = 1;
+ name = "Observatory APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aau" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/port/fore";
+ dir = 8;
+ name = "Port Bow Maintenance APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aav" = (
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "solar"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"aaw" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/test_area)
+"aax" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/secondary/entry)
+"aay" = (
+/obj/structure/sign/warning/electricshock,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/security/armory)
+"aaz" = (
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating/airless,
+/area/ai_monitored/security/armory)
+"aaA" = (
+/turf/closed/wall/r_wall,
+/area/ai_monitored/security/armory)
+"aaB" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/kitchen/backroom";
+ dir = 1;
+ name = "Kitchen Coldroom APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"aaC" = (
+/obj/structure/closet/secure_closet/lethalshots,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/item/storage/box/firingpins,
+/obj/item/storage/box/firingpins,
+/obj/effect/spawner/lootdrop/armory_contraband/metastation,
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"aaD" = (
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"aaE" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/camera{
+ c_tag = "Port Bow Maintenance - Fore";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aaF" = (
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"aaG" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/stairs/left,
+/area/security/brig)
+"aaH" = (
+/obj/machinery/computer/communications,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/camera/motion{
+ c_tag = "Armory Motion Sensor";
+ pixel_x = 22
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"aaI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aaJ" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"aaK" = (
+/obj/machinery/power/solar{
+ id = "foreport";
+ name = "Fore-Port Solar Array"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/port)
+"aaL" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"aaM" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"aaN" = (
+/obj/structure/chair/stool,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aaO" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"aaP" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"aaQ" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"aaR" = (
+/obj/machinery/vending/snack/random,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aaS" = (
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aaT" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"aaU" = (
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"aaV" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"aaW" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aaX" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aaY" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 8;
+ sortType = 21
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"aaZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aba" = (
+/obj/machinery/door/airlock/external{
+ name = "Arrival Shuttle Airlock"
+ },
+/obj/structure/fans/tiny,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abb" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abc" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"abd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"abe" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"abf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"abg" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abh" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/solar/port)
+"abi" = (
+/obj/machinery/power/solar{
+ id = "foreport";
+ name = "Fore-Port Solar Array"
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/port)
+"abj" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"abk" = (
+/obj/structure/closet/crate/secure/plasma{
+ name = "Ballistics Crate"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/gun/ballistic/automatic/wt550,
+/obj/item/gun/ballistic/automatic/wt550,
+/obj/item/ammo_box/magazine/wt550m9/wtrubber,
+/obj/item/ammo_box/magazine/wt550m9/wtrubber,
+/obj/item/ammo_box/magazine/wt550m9/wtrubber,
+/obj/item/ammo_box/magazine/wt550m9/wtrubber,
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"abl" = (
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"abm" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"abn" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/rack,
+/obj/item/gun/ballistic/shotgun/riot{
+ pixel_y = 6
+ },
+/obj/item/gun/ballistic/shotgun/riot,
+/obj/item/gun/ballistic/shotgun/riot{
+ pixel_y = -6
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"abo" = (
+/obj/structure/closet/crate/secure/gear{
+ name = "Grenade Crate"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/storage/box/flashbangs{
+ pixel_x = 3;
+ pixel_y = 2
+ },
+/obj/item/storage/box/teargas{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/grenade/syndieminibomb/concussion/frag{
+ pixel_x = -4
+ },
+/obj/item/grenade/syndieminibomb/concussion/frag{
+ pixel_x = -4
+ },
+/obj/item/grenade/barrier,
+/obj/item/grenade/barrier,
+/obj/item/grenade/barrier,
+/obj/item/grenade/chem_grenade/incendiary{
+ pixel_x = 3
+ },
+/obj/item/grenade/chem_grenade/incendiary{
+ pixel_x = 3
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"abp" = (
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"abq" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/item/storage/box/rubbershot{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/storage/box/rubbershot,
+/obj/item/storage/box/rubbershot{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"abr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"abs" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abt" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abv" = (
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"abw" = (
+/obj/structure/closet/crate/secure/weapon{
+ name = "Energy Gun Crate"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/gun/energy/laser,
+/obj/item/gun/energy/laser,
+/obj/item/gun/energy{
+ pixel_y = -6
+ },
+/obj/item/gun/energy{
+ pixel_y = -6
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"abx" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/port)
+"aby" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"abz" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/fore)
+"abA" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"abB" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/closed/wall,
+/area/crew_quarters/theatre/clown)
+"abC" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/closed/wall,
+/area/crew_quarters/theatre/clown)
+"abD" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"abE" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/machinery/disposal/deliveryChute{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"abF" = (
+/obj/machinery/mass_driver{
+ dir = 8;
+ id = "sb_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"abG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/item/storage/box/trackimp{
+ pixel_x = 4
+ },
+/obj/item/storage/box/chemimp{
+ pixel_x = -4
+ },
+/obj/item/storage/lockbox/loyalty,
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"abH" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"abI" = (
+/obj/structure/table,
+/obj/structure/mirror{
+ icon_state = "mirror_broke";
+ pixel_x = -24
+ },
+/obj/item/storage/briefcase,
+/obj/item/circuitboard/machine/vending/donksofttoyvendor,
+/obj/item/storage/pill_bottle/happy,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"abJ" = (
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "sb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"abK" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abL" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"abM" = (
+/turf/closed/wall/r_wall,
+/area/router/aux)
+"abN" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/checker,
+/area/hallway/secondary/entry)
+"abO" = (
+/obj/item/electropack,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"abP" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/rack,
+/obj/item/gun/energy/ionrifle{
+ pixel_y = 4
+ },
+/obj/item/gun/energy/temperature/security{
+ pixel_y = -4
+ },
+/obj/item/clothing/suit/armor/laserproof,
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"abQ" = (
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"abR" = (
+/obj/structure/grille,
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"abS" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/brig)
+"abT" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/dorms/purple";
+ name = "Crew Quarters A APC";
+ pixel_y = -26
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"abU" = (
+/obj/machinery/space_heater,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/dorms/blue";
+ name = "Crew Quarters B APC";
+ pixel_y = -26
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"abV" = (
+/obj/structure/disposaloutlet,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"abW" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/router/aux)
+"abX" = (
+/obj/machinery/computer/secure_data,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Security Checkpoint";
+ pixel_x = 22
+ },
+/obj/machinery/newscaster/security_unit{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"abY" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"abZ" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "sb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"aca" = (
+/obj/machinery/conveyor{
+ dir = 5;
+ id = "pb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acb" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/fore)
+"acc" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/turf/open/floor/plating,
+/area/security/brig)
+"acd" = (
+/obj/machinery/button/door{
+ id = "armory";
+ name = "Armory Blast Door Control";
+ pixel_x = -28;
+ pixel_y = -28
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"ace" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "pb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acf" = (
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "pb_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acg" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"ach" = (
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"aci" = (
+/turf/closed/wall,
+/area/medical{
+ name = "Medical Booth"
+ })
+"acj" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "solar_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ack" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/rack,
+/obj/item/clothing/suit/armor/riot,
+/obj/item/clothing/suit/armor/riot,
+/obj/item/clothing/suit/armor/riot,
+/obj/item/clothing/head/helmet/riot,
+/obj/item/clothing/head/helmet/riot,
+/obj/item/clothing/head/helmet/riot,
+/obj/item/shield/riot{
+ pixel_x = -6
+ },
+/obj/item/shield/riot{
+ pixel_x = -6
+ },
+/obj/item/shield/riot{
+ pixel_x = -6
+ },
+/obj/item/clothing/mask/gas/sechailer/swat{
+ pixel_x = -4
+ },
+/obj/item/clothing/mask/gas/sechailer/swat{
+ pixel_x = -4
+ },
+/obj/item/clothing/mask/gas/sechailer/swat{
+ pixel_x = -4
+ },
+/obj/item/clothing/glasses/hud/security/night,
+/obj/item/clothing/glasses/hud/security/night,
+/obj/item/clothing/glasses/hud/security/night,
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"acl" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Armory";
+ req_one_access_txt = "3"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"acm" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/machinery/disposal/deliveryChute{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acn" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aco" = (
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"acp" = (
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"acq" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/obj/machinery/conveyor{
+ id = "solar_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acr" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 4;
+ sortType = 7
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acs" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"act" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/fore)
+"acu" = (
+/obj/structure/table,
+/obj/machinery/light,
+/obj/machinery/recharger,
+/obj/item/assembly/signaler{
+ pixel_x = 8;
+ pixel_y = 6
+ },
+/obj/item/assembly/signaler{
+ pixel_x = 8;
+ pixel_y = 4
+ },
+/obj/item/assembly/signaler{
+ pixel_x = 8;
+ pixel_y = 2
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"acv" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"acw" = (
+/obj/machinery/light/small,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"acx" = (
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acy" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/vending/security,
+/turf/open/floor/plasteel,
+/area/ai_monitored/security/armory)
+"acz" = (
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "sb_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acA" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "sb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acB" = (
+/obj/machinery/conveyor{
+ dir = 6;
+ id = "sb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acC" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/poddoor{
+ id = "armory";
+ name = "Armory"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"acD" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"acE" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/closed/wall/r_wall,
+/area/maintenance/fore)
+"acF" = (
+/turf/closed/wall,
+/area/crew_quarters/lounge)
+"acG" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "pb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acH" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"acI" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"acJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ id = "solar_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acK" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/medical{
+ name = "Medical Booth"
+ })
+"acL" = (
+/obj/machinery/door/poddoor{
+ id = "executionspaceblast"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"acM" = (
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_x = -32
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"acN" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"acO" = (
+/obj/structure/sign/warning/electricshock,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/security/armory)
+"acP" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"acQ" = (
+/turf/closed/wall,
+/area/crew_quarters/theatre/clown)
+"acR" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-16"
+ },
+/turf/open/floor/plasteel/checker,
+/area/hallway/secondary/entry)
+"acS" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"acT" = (
+/obj/structure/table/reinforced,
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"acU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/sign/warning/securearea{
+ pixel_y = 32
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/camera{
+ c_tag = "Armory Access";
+ network = list("ss13","rd")
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"acV" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/closet/crate/freezer,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/item/reagent_containers/food/snacks/meat/slab,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"acW" = (
+/obj/structure/disposalpipe/trunk,
+/obj/machinery/disposal/deliveryChute,
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"acX" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"acY" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"acZ" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ada" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/security/armory)
+"adb" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/security/brig)
+"adc" = (
+/obj/machinery/conveyor{
+ id = "sb_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"add" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/observatory)
+"ade" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/closed/wall/r_wall,
+/area/maintenance/fore)
+"adf" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/observatory)
+"adg" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/machinery/microwave{
+ pixel_y = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"adh" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/observatory)
+"adi" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"adj" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/observatory)
+"adk" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/conveyor{
+ id = "solar_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"adl" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"adm" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Fore Maintenance";
+ req_one_access_txt = "12;46"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"adn" = (
+/obj/structure/sign/nanotrasen,
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/entry)
+"ado" = (
+/obj/machinery/power/solar{
+ id = "forestarboard";
+ name = "Fore-Starboard Solar Array"
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/starboard/fore)
+"adp" = (
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"adq" = (
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/entry)
+"adr" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-16"
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"ads" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"adt" = (
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"adu" = (
+/obj/structure/sign/warning{
+ name = "\improper CONSTRUCTION AREA";
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"adv" = (
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"adw" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "solar"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"adx" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"ady" = (
+/obj/machinery/power/tracker,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating/airless,
+/area/solar/starboard/fore)
+"adz" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"adA" = (
+/obj/effect/turf_decal/tile/red,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"adB" = (
+/obj/structure/sign/poster/official/enlist{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"adC" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/observatory)
+"adD" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/vending/security,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"adE" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/item/gun/energy/laser/practice,
+/obj/item/gun/energy/laser/practice,
+/obj/machinery/syndicatebomb/training,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"adF" = (
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"adG" = (
+/obj/machinery/mass_driver{
+ id = "serv_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"adH" = (
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "solar"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"adI" = (
+/obj/machinery/disposal/bin{
+ name = "Service Delivery"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"adJ" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/closet,
+/obj/item/clothing/under/staffassistant,
+/obj/item/clothing/under/staffassistant,
+/obj/item/clothing/under/staffassistant,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"adK" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/stairs/medium,
+/area/security/brig)
+"adL" = (
+/obj/machinery/mass_driver{
+ id = "starboard_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"adM" = (
+/turf/closed/wall,
+/area/crew_quarters/observatory)
+"adN" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"adO" = (
+/obj/structure/noticeboard{
+ dir = 4;
+ pixel_x = -27
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"adP" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"adQ" = (
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"adR" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/storage/box/beakers,
+/obj/item/hand_labeler,
+/obj/item/folder/white{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/stamp/denied{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/item/stamp,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"adS" = (
+/turf/closed/wall,
+/area/construction)
+"adT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/construction)
+"adU" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"adV" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/starboard/fore";
+ dir = 1;
+ name = "Starboard Bow Maintenance APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"adW" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs/right,
+/area/security/brig)
+"adX" = (
+/obj/structure/chair/comfy/black{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"adY" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"adZ" = (
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"aea" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"aeb" = (
+/obj/structure/table,
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aec" = (
+/turf/closed/wall/r_wall,
+/area/construction)
+"aed" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aee" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"aef" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aeg" = (
+/obj/structure/sign/warning/electricshock,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/security/armory)
+"aeh" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aei" = (
+/obj/machinery/light,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/hallway/secondary/entry";
+ dir = 8;
+ name = "Arrival Shuttle Hallway APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aej" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on,
+/turf/open/floor/plating/airless,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aek" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/photocopier,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ael" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"aem" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aen" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aeo" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/circuitboard/machine/sleeper,
+/obj/structure/frame/machine,
+/turf/open/floor/plasteel,
+/area/construction)
+"aep" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aeq" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aer" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aes" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/random{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aet" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aeu" = (
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aev" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/fore)
+"aew" = (
+/turf/closed/wall/r_wall,
+/area/security/prison)
+"aex" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/table,
+/obj/item/storage/hypospraykit/regular,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aey" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aez" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aeA" = (
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aeB" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/toilet/fitness";
+ name = "Fitness Toilets APC";
+ pixel_y = -26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aeC" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aeD" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aeE" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/plasteel,
+/area/construction)
+"aeF" = (
+/obj/structure/table,
+/obj/item/assembly/infra,
+/obj/item/assembly/voice{
+ pixel_x = 4;
+ pixel_y = 12
+ },
+/obj/item/assembly/health{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = 4;
+ pixel_y = -2
+ },
+/turf/open/floor/plating,
+/area/construction)
+"aeG" = (
+/obj/item/stack/tile/plasteel{
+ pixel_x = 8;
+ pixel_y = 6
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/construction";
+ dir = 1;
+ name = "Construction Area APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/construction)
+"aeH" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aeI" = (
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aeJ" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/turf/open/floor/plating,
+/area/security/prison)
+"aeK" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"aeL" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aeM" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aeN" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Security Router";
+ req_one_access_txt = "1"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aeO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aeP" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"aeQ" = (
+/obj/structure/closet/secure_closet/brig,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aeR" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aeS" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Holodeck Door"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aeT" = (
+/obj/structure/table,
+/obj/item/storage/box/donkpockets,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aeU" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aeV" = (
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/clothing/suit/straight_jacket,
+/obj/item/clothing/suit/straight_jacket,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aeW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Construction Area";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"aeX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aeY" = (
+/turf/closed/wall,
+/area/crew_quarters/toilet/fitness)
+"aeZ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/crew_quarters/kitchen)
+"afa" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/kitchen)
+"afb" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Holodeck Door"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afc" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afd" = (
+/obj/machinery/newscaster{
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"afe" = (
+/obj/machinery/door/airlock,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aff" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness)
+"afg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/valve,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"afh" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc/highcap/fifteen_k{
+ areastring = /area/maintenance/solars/starboard/fore;
+ dir = 4;
+ name = "Starboard Bow Solars APC";
+ pixel_x = 28
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"afi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"afj" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afk" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afl" = (
+/obj/effect/landmark/secequipment,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"afm" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/construction)
+"afn" = (
+/obj/machinery/biogenerator,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"afo" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/landmark/start/mime,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/theatre/mime";
+ dir = 4;
+ name = "Mime's Office APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/theatre/mime)
+"afp" = (
+/turf/open/floor/plating,
+/area/construction)
+"afq" = (
+/obj/structure/table,
+/obj/item/modular_computer/laptop/preset/civilian,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"afr" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/item/camera{
+ pixel_y = -8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"afs" = (
+/obj/machinery/flasher{
+ id = "executionflash";
+ pixel_x = -25
+ },
+/obj/structure/chair/e_chair,
+/obj/effect/decal/cleanable/ash{
+ pixel_y = -8
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aft" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"afu" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afv" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afw" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"afx" = (
+/obj/machinery/computer/holodeck{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afy" = (
+/obj/structure/table,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afz" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afA" = (
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"afB" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afC" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"afD" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall/r_wall,
+/area/maintenance/port/fore)
+"afE" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall,
+/area/crew_quarters/theatre/clown)
+"afF" = (
+/obj/machinery/sparker{
+ id = "executionburn";
+ pixel_x = 25
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"afG" = (
+/obj/structure/sink{
+ pixel_y = 28
+ },
+/obj/item/paper/guides/jobs/hydroponics,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"afH" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/clothing/mask/gas/sechailer,
+/obj/item/clothing/mask/gas/sechailer,
+/obj/item/clothing/mask/gas/sechailer,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/requests_console{
+ department = "Security";
+ departmentType = 5;
+ name = "Security RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"afI" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afJ" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/plant_analyzer,
+/obj/item/cultivator,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/reagent_containers/glass/bucket,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"afK" = (
+/turf/closed/wall,
+/area/crew_quarters/kitchen)
+"afL" = (
+/obj/machinery/door/airlock,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afM" = (
+/obj/structure/closet/crate/internals,
+/obj/machinery/camera{
+ c_tag = "Construction Area";
+ pixel_x = 22
+ },
+/obj/item/flashlight,
+/obj/item/clothing/suit/hazardvest,
+/obj/item/tank/internals/emergency_oxygen/engi,
+/turf/open/floor/plating,
+/area/construction)
+"afN" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afO" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/checker,
+/area/hallway/secondary/entry)
+"afP" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"afR" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/table/reinforced,
+/obj/item/paicard,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"afS" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"afT" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"afU" = (
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/stairs/left,
+/area/hallway/secondary/entry)
+"afV" = (
+/obj/structure/closet/crate,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/clothing/gloves/color/white,
+/obj/item/stack/packageWrap,
+/obj/item/stack/packageWrap,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/structure/sign/poster/contraband/red_rum{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"afW" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"afX" = (
+/obj/item/cigbutt,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/obj/machinery/camera{
+ c_tag = "Port Bow Maintenance - Aft";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"afY" = (
+/obj/item/seeds/carrot,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"afZ" = (
+/obj/machinery/disposal/bin{
+ name = "Brig Catering"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5;
+ layer = 2.03
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/kitchen)
+"aga" = (
+/obj/structure/table,
+/obj/item/paper/fluff/holodeck/disclaimer,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agb" = (
+/obj/structure/table,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agc" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"agd" = (
+/obj/structure/fans/tiny/invisible,
+/obj/docking_port/stationary{
+ dwidth = 1;
+ height = 4;
+ name = "escape pod loader";
+ roundstart_template = /datum/map_template/shuttle/escape_pod/default;
+ width = 3
+ },
+/turf/open/space/basic,
+/area/space)
+"age" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"agf" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"agg" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"agh" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"agi" = (
+/obj/machinery/space_heater,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"agj" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Observatory Access"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"agk" = (
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agl" = (
+/obj/machinery/disposal/bin{
+ name = "Bar Catering"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 6;
+ layer = 2.03
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/bar,
+/turf/open/floor/plasteel,
+/area/crew_quarters/kitchen)
+"agm" = (
+/obj/structure/table,
+/obj/item/sharpener,
+/obj/item/kitchen/knife,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"agn" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall,
+/area/crew_quarters/lounge)
+"ago" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"agp" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agq" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"agr" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ags" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/mob/living/simple_animal/pet/redpanda{
+ name = "Stinky"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"agt" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agu" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"agv" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/security/brig)
+"agw" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"agx" = (
+/mob/living/simple_animal/bot/floorbot,
+/turf/open/floor/plating,
+/area/construction)
+"agy" = (
+/obj/effect/landmark/xeno_spawn,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"agz" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"agA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/warning{
+ name = "\improper CONSTRUCTION AREA";
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"agB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"agC" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"agD" = (
+/obj/machinery/seed_extractor,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"agE" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"agF" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/machinery/camera{
+ c_tag = "Observatory Viewing Area";
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agG" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/theatre/mime)
+"agH" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"agI" = (
+/obj/machinery/hydroponics/constructable,
+/obj/item/seeds/tower,
+/obj/item/seeds/amanita,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"agJ" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Fore Maintenance";
+ req_one_access_txt = "12;46"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"agK" = (
+/obj/structure/chair/comfy/black,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agL" = (
+/obj/machinery/power/tracker,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating/airless,
+/area/solar/port)
+"agM" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agN" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Holodeck Door"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agO" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Holodeck Door"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agP" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"agQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"agR" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agS" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agT" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/suit_storage_unit/engine,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"agU" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = 2;
+ pixel_y = 6
+ },
+/obj/item/storage/toolbox/mechanical{
+ pixel_y = 3
+ },
+/obj/item/assembly/timer{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/obj/item/t_scanner{
+ pixel_x = -2;
+ pixel_y = 5
+ },
+/obj/item/t_scanner,
+/obj/item/assembly/igniter{
+ pixel_x = 6;
+ pixel_y = -4
+ },
+/obj/structure/sign/poster/contraband/missing_gloves{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"agV" = (
+/obj/machinery/newscaster{
+ pixel_x = 28
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"agW" = (
+/turf/closed/wall/r_wall,
+/area/security/processing)
+"agX" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/external{
+ name = "Starboard Bow Solar Exterior Airlock";
+ req_access_txt = "10;13"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"agY" = (
+/obj/structure/table,
+/obj/item/storage/crayons,
+/obj/item/toy/beach_ball/holoball,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"agZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"aha" = (
+/obj/structure/table,
+/obj/machinery/microwave{
+ pixel_y = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahb" = (
+/obj/machinery/processor,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahc" = (
+/obj/structure/table,
+/obj/machinery/microwave{
+ pixel_y = 8
+ },
+/obj/structure/sign/poster/official/cleanliness{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahd" = (
+/obj/structure/sink/kitchen{
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahe" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"ahf" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Labor Camp Shuttle Airlock"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"ahg" = (
+/turf/closed/wall/r_wall,
+/area/security/warden)
+"ahh" = (
+/obj/machinery/power/port_gen/pacman,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"ahi" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/newscaster{
+ pixel_x = 28
+ },
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/item/storage/fancy/donut_box,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ahj" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Fore Maintenance - Fore";
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ahk" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/security/processing)
+"ahl" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/door/airlock/external{
+ name = "Labor Camp Shuttle Airlock"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"ahm" = (
+/obj/structure/falsewall/reinforced,
+/turf/closed/wall,
+/area/maintenance/port/fore)
+"ahn" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/closet/firecloset,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aho" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"ahp" = (
+/obj/machinery/gulag_item_reclaimer{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"ahq" = (
+/turf/open/floor/plasteel,
+/area/security/processing)
+"ahr" = (
+/obj/machinery/hydroponics/constructable,
+/obj/item/seeds/ambrosia,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"ahs" = (
+/obj/machinery/light,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/machinery/camera{
+ c_tag = "Kitchen";
+ dir = 1
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"aht" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/item/storage/box/disks,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ahu" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hydroponics)
+"ahv" = (
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_x = 32
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"ahw" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ahx" = (
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahy" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/turf/open/floor/plating,
+/area/security/warden)
+"ahz" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness)
+"ahA" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/crew_quarters/fitness)
+"ahB" = (
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/machinery/door/window/eastleft{
+ name = "Bathroom Stall"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"ahC" = (
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"ahD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/fore";
+ dir = 1;
+ name = "Fore Maintenance APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ahE" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ahF" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/structure/mirror{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"ahG" = (
+/obj/structure/sink{
+ pixel_y = 28
+ },
+/obj/structure/sign/poster/official/cleanliness{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"ahH" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"ahI" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/fitness";
+ name = "Fitness Room APC";
+ pixel_y = -26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ahJ" = (
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"ahK" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ahL" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/observatory)
+"ahM" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"ahN" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ahO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"ahP" = (
+/turf/closed/wall,
+/area/maintenance/solars/starboard/fore)
+"ahQ" = (
+/obj/structure/closet/lasertag/blue,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"ahR" = (
+/obj/item/beacon,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"ahS" = (
+/obj/structure/closet/cabinet,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"ahT" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/storage/bag/plants,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahU" = (
+/obj/machinery/vending/wardrobe/chef_wardrobe,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahV" = (
+/obj/structure/closet/lasertag/red,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"ahW" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"ahX" = (
+/obj/machinery/deepfryer,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ahY" = (
+/obj/machinery/vending/autodrobe,
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"ahZ" = (
+/obj/structure/table/glass,
+/obj/item/storage/toolbox/emergency{
+ pixel_y = 4
+ },
+/obj/item/radio/off,
+/obj/machinery/camera{
+ c_tag = "Arrival Shuttle Hallway"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/hallway/secondary/entry)
+"aia" = (
+/obj/effect/landmark/start/cook,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"aib" = (
+/obj/structure/table/glass,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/hallway/secondary/entry)
+"aic" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/security/armory)
+"aid" = (
+/obj/machinery/hydroponics/constructable,
+/obj/item/seeds/cotton,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"aie" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aif" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"aig" = (
+/obj/machinery/camera{
+ c_tag = "Observatory Holodeck";
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aih" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aii" = (
+/obj/structure/closet,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/gps,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aij" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aik" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ail" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aim" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ain" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/processing)
+"aio" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"aip" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aiq" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"air" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/stack/cable_coil/red{
+ pixel_x = 3;
+ pixel_y = 2
+ },
+/obj/item/stack/cable_coil/red,
+/obj/item/screwdriver,
+/obj/item/multitool{
+ pixel_x = -6;
+ pixel_y = -2
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"ais" = (
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"ait" = (
+/obj/machinery/vending/dinnerware,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"aiu" = (
+/obj/effect/landmark/start/mime,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/checker,
+/area/crew_quarters/theatre/mime)
+"aiv" = (
+/obj/structure/table,
+/obj/machinery/chem_dispenser/drinks/beer,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aiw" = (
+/obj/machinery/vending/cola/random,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aix" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/kitchen)
+"aiy" = (
+/obj/structure/bed,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/effect/landmark/start/clown,
+/obj/item/bedsheet/clown,
+/obj/structure/sign/plaques/kiddie/perfect_man{
+ pixel_y = 32
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"aiz" = (
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"aiA" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/construction)
+"aiB" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/kitchen";
+ name = "Kitchen APC";
+ pixel_y = -26
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"aiC" = (
+/turf/closed/wall,
+/area/hallway/secondary/service)
+"aiD" = (
+/obj/structure/closet/crate/wooden/toy,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera{
+ c_tag = "Clown's Office";
+ pixel_x = 22
+ },
+/obj/item/clothing/under/rank/yellowclown,
+/obj/item/clothing/under/rank/blueclown,
+/obj/item/clothing/under/rank/greenclown,
+/obj/item/toy/crayon/spraycan/lubecan,
+/obj/item/megaphone/clown,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"aiE" = (
+/obj/structure/window/reinforced,
+/turf/open/floor/plasteel,
+/area/security/processing)
+"aiF" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Starboard Bow Maintenance";
+ req_one_access_txt = "12;25;26;28;35;46"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"aiG" = (
+/obj/structure/closet,
+/obj/structure/window/reinforced,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"aiH" = (
+/obj/machinery/hydroponics/constructable,
+/obj/item/seeds/grass,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/security/prison)
+"aiI" = (
+/obj/structure/closet/boxinggloves,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aiJ" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"aiK" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aiL" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/prison)
+"aiM" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/observatory)
+"aiN" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aiO" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aiP" = (
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aiQ" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aiR" = (
+/obj/structure/rack,
+/obj/item/reagent_containers/glass/beaker/waterbottle,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aiS" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-06"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aiT" = (
+/obj/machinery/door/airlock/maintenance/abandoned{
+ name = "Port Bow Maintainance";
+ req_one_access_txt = "1"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aiU" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/deepfryer,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"aiV" = (
+/obj/item/stack/tile/plasteel{
+ pixel_x = 10;
+ pixel_y = 4
+ },
+/turf/open/floor/plating,
+/area/construction)
+"aiW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Observatory"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/observatory)
+"aiX" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall,
+/area/crew_quarters/observatory)
+"aiY" = (
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/structure/window/reinforced/tinted{
+ dir = 1
+ },
+/obj/machinery/door/window/eastright{
+ name = "Bathroom Stall"
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"aiZ" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/observatory)
+"aja" = (
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 2;
+ name = "2maintenance loot spawner"
+ },
+/obj/item/caution,
+/turf/open/floor/plating,
+/area/construction)
+"ajb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ajc" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"ajd" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"aje" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"ajf" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ajg" = (
+/obj/structure/table,
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/item/reagent_containers/food/snacks/pie/cream,
+/obj/item/instrument/bikehorn,
+/obj/item/flashlight/lamp/bananalamp{
+ pixel_y = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"ajh" = (
+/obj/structure/table/glass,
+/obj/item/paper_bin/construction,
+/obj/item/storage/crayons,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/hallway/secondary/entry)
+"aji" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"ajj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ajk" = (
+/obj/effect/landmark/start/clown,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"ajl" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/mob/living/simple_animal/cockroach,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ajm" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"ajn" = (
+/obj/machinery/power/smes,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"ajo" = (
+/obj/structure/table,
+/obj/item/toy/dummy,
+/obj/structure/mirror{
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/checker,
+/area/crew_quarters/theatre/mime)
+"ajp" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/observatory)
+"ajq" = (
+/obj/effect/landmark/start/clown,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/theatre/clown";
+ dir = 4;
+ name = "Clown's Office APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"ajr" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/observatory)
+"ajs" = (
+/obj/structure/table,
+/obj/item/reagent_containers/food/snacks/mint,
+/obj/item/reagent_containers/food/condiment/mayonnaise,
+/obj/item/bikehorn{
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ajt" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"aju" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"ajv" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/theatre/mime)
+"ajw" = (
+/turf/closed/wall,
+/area/construction/secondary)
+"ajx" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ajy" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/machinery/computer/prisoner/management,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ajz" = (
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ajA" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/closet/secure_closet/brig,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ajB" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Hydroponics"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ajC" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ajD" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/cook,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ajE" = (
+/obj/structure/closet/secure_closet/freezer/kitchen,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ajF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/construction/secondary)
+"ajG" = (
+/obj/machinery/computer/arcade,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ajH" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/crowbar,
+/obj/item/extinguisher,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ajI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ajJ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ajK" = (
+/obj/structure/sign/warning{
+ name = "\improper CONSTRUCTION AREA";
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"ajL" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/lounge";
+ name = "Lounge APC";
+ pixel_y = -26
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/observatory)
+"ajM" = (
+/obj/structure/table,
+/obj/machinery/reagentgrinder{
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/food/condiment/saltshaker{
+ pixel_x = -8;
+ pixel_y = 12
+ },
+/obj/item/reagent_containers/food/condiment/peppermill{
+ pixel_x = -8;
+ pixel_y = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ajN" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ajO" = (
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"ajP" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ajQ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"ajR" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/observatory)
+"ajS" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"ajT" = (
+/obj/structure/weightmachine/weightlifter,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ajU" = (
+/obj/structure/rack,
+/obj/item/wrench,
+/obj/item/light/tube,
+/obj/item/radio/off,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/structure/cable,
+/obj/machinery/camera{
+ c_tag = "Security - Interrogation Maintenance";
+ dir = 1
+ },
+/obj/machinery/power/apc/highcap/ten_k{
+ areastring = "/area/security/brig";
+ dir = 4;
+ name = "Brig APC";
+ pixel_x = 26
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"ajV" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/crew_quarters/theatre/mime)
+"ajW" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/observatory)
+"ajX" = (
+/obj/item/pipe{
+ pixel_x = 8;
+ pixel_y = 2
+ },
+/obj/item/melee/baseball_bat,
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/machinery/camera{
+ c_tag = "Secondary Construction Area"
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"ajY" = (
+/obj/machinery/space_heater,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ajZ" = (
+/obj/item/multitool,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/power/apc/highcap/ten_k{
+ areastring = "/area/tcommsat/computer";
+ dir = 1;
+ name = "Telecomms Access APC";
+ pixel_y = 28
+ },
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"aka" = (
+/turf/closed/wall,
+/area/crew_quarters/bar)
+"akb" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Mime's Office";
+ req_access_txt = "46"
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/mime)
+"akc" = (
+/obj/machinery/computer/slot_machine,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/construction/secondary)
+"akd" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"ake" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/rnd/production/techfab/department/service,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"akf" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/emergency{
+ pixel_y = 4
+ },
+/obj/item/electronics/firelock,
+/obj/item/electronics/firealarm,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/construction/secondary)
+"akg" = (
+/obj/machinery/power/solar_control{
+ dir = 4;
+ id = "foreport";
+ name = "Port Bow Solar Control"
+ },
+/obj/structure/sign/warning/electricshock{
+ pixel_x = -32
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"akh" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/construction/secondary)
+"aki" = (
+/obj/structure/closet/toolcloset,
+/turf/open/floor/plating,
+/area/construction/secondary)
+"akj" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"akk" = (
+/obj/item/stack/tile/plasteel{
+ pixel_x = 10;
+ pixel_y = 4
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"akl" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/computer/shuttle/labor{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"akm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/plasteel,
+/area/construction/secondary)
+"akn" = (
+/obj/machinery/power/solar_control{
+ id = "forestarboard";
+ name = "Starboard Bow Solar Control"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"ako" = (
+/obj/machinery/button/flasher{
+ id = "executionflash";
+ pixel_x = 7;
+ pixel_y = 24
+ },
+/obj/effect/decal/cleanable/generic,
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"akp" = (
+/obj/structure/closet/secure_closet/warden,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"akq" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/structure/table/reinforced,
+/obj/item/storage/box/prisoner,
+/obj/item/razor,
+/obj/item/paper/guides/jobs/security/labor_camp,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/security/processing)
+"akr" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/machinery/computer/prisoner/gulag_teleporter_computer{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Prison Shuttle Dock";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"aks" = (
+/obj/structure/table,
+/obj/machinery/recharger,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"akt" = (
+/obj/machinery/computer/prisoner/management,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Brig Control APC";
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"aku" = (
+/obj/machinery/computer/secure_data,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"akv" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"akw" = (
+/obj/structure/bed,
+/obj/item/clothing/glasses/sunglasses/blindfold,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"akx" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Secondary Construction Area";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"aky" = (
+/obj/machinery/computer/crew,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"akz" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/machinery/power/terminal{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"akA" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/security/warden)
+"akB" = (
+/obj/machinery/power/smes,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"akC" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/sign/warning/electricshock{
+ pixel_x = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"akD" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/item/hand_labeler{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"akE" = (
+/turf/closed/wall/r_wall,
+/area/router/sec)
+"akF" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"akG" = (
+/obj/structure/reagent_dispensers/fueltank,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"akH" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"akI" = (
+/turf/closed/wall/r_wall,
+/area/tcommsat/computer)
+"akJ" = (
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Telecommunications Maintenance";
+ req_access_txt = "61"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"akK" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"akL" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Brig";
+ pixel_x = 22
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"akM" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"akN" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "secblock";
+ name = "Security Router"
+ },
+/obj/machinery/conveyor/auto{
+ id = "sec"
+ },
+/turf/open/floor/plating,
+/area/router/sec)
+"akO" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/computer/security/labor{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"akP" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ name = "Security Router"
+ },
+/turf/open/floor/plating,
+/area/router/sec)
+"akQ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"akR" = (
+/obj/structure/punching_bag,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"akS" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced/tinted{
+ dir = 1
+ },
+/obj/item/soap/nanotrasen,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"akT" = (
+/obj/structure/chair/office/dark{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"akU" = (
+/obj/machinery/door/window/northleft{
+ name = "Showers"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"akV" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced/tinted{
+ dir = 1
+ },
+/obj/item/storage/firstaid/regular,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"akW" = (
+/obj/structure/table/wood,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/reagent_containers/hypospray/medipen,
+/obj/item/reagent_containers/hypospray/medipen,
+/obj/item/reagent_containers/hypospray/medipen,
+/obj/item/reagent_containers/hypospray/medipen,
+/obj/structure/sign/departments/restroom{
+ pixel_x = -32
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"akX" = (
+/turf/closed/wall,
+/area/crew_quarters/dorms/purple)
+"akY" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"akZ" = (
+/obj/machinery/power/terminal{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"ala" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"alb" = (
+/obj/machinery/power/smes,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"alc" = (
+/obj/structure/fermenting_barrel,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"ald" = (
+/obj/machinery/chem_master/condimaster,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"ale" = (
+/turf/closed/wall,
+/area/crew_quarters/dorms/blue)
+"alf" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"alg" = (
+/obj/structure/frame/machine,
+/obj/item/circuitboard/computer/arcade/minesweeper,
+/turf/open/floor/plating,
+/area/construction/secondary)
+"alh" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ali" = (
+/turf/open/floor/plating,
+/area/construction/secondary)
+"alj" = (
+/obj/machinery/gulag_teleporter,
+/turf/open/floor/plasteel,
+/area/security/processing)
+"alk" = (
+/obj/item/caution,
+/turf/open/floor/plating,
+/area/construction/secondary)
+"all" = (
+/obj/structure/table/glass,
+/obj/item/wrench{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/glass/bottle/mutagen{
+ pixel_x = -4
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"alm" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"aln" = (
+/obj/machinery/hydroponics/constructable,
+/turf/open/floor/grass,
+/area/hydroponics)
+"alo" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"alp" = (
+/obj/machinery/washing_machine,
+/turf/open/floor/plasteel,
+/area/construction/secondary)
+"alq" = (
+/obj/machinery/conveyor/auto{
+ id = "sec"
+ },
+/turf/open/floor/plating,
+/area/router/sec)
+"alr" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"als" = (
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "sec_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router/sec)
+"alt" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Labor Camp Shuttle Airlock";
+ req_access_txt = "2"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"alu" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"alv" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/door/airlock/external{
+ name = "Labor Camp Shuttle Airlock";
+ req_access_txt = "2"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"alw" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/landmark/start/warden,
+/obj/machinery/camera{
+ c_tag = "Security - Brig Control";
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"alx" = (
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"aly" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"alz" = (
+/obj/structure/disposaloutlet,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"alA" = (
+/obj/structure/bed,
+/obj/item/bedsheet/purple,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"alB" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/closet/emcloset,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"alC" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"alD" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"alE" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"alF" = (
+/obj/machinery/photocopier,
+/obj/machinery/newscaster/security_unit{
+ pixel_y = -28
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"alG" = (
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"alH" = (
+/obj/structure/table,
+/obj/item/storage/box/beakers{
+ pixel_x = -8
+ },
+/obj/item/storage/box/ingredients{
+ pixel_x = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"alI" = (
+/obj/structure/weightmachine/stacklifter,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"alJ" = (
+/obj/machinery/vending/hydroseeds,
+/turf/open/floor/grass,
+/area/hydroponics)
+"alK" = (
+/obj/effect/landmark/xmastree,
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"alL" = (
+/obj/structure/weightmachine/weightlifter,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"alM" = (
+/obj/structure/closet/firecloset,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"alN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"alO" = (
+/obj/structure/table/wood,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"alP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"alQ" = (
+/obj/structure/dresser,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"alR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"alS" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/obj/item/reagent_containers/food/drinks/drinkingglass,
+/obj/item/reagent_containers/rag,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"alT" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"alU" = (
+/obj/structure/chair/stool,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"alV" = (
+/obj/structure/bed,
+/obj/item/bedsheet/blue,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"alW" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"alX" = (
+/obj/structure/table,
+/obj/item/storage/box/ingredients,
+/obj/item/clothing/head/chefhat,
+/obj/item/reagent_containers/glass/beaker,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"alY" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/item/t_scanner,
+/turf/open/floor/plating,
+/area/construction/secondary)
+"alZ" = (
+/turf/closed/wall/r_wall,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"ama" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/security/warden)
+"amb" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"amc" = (
+/turf/closed/wall,
+/area/storage/tools)
+"amd" = (
+/obj/structure/table,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ame" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/security/warden)
+"amf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"amg" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"amh" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/machinery/recharger,
+/obj/item/pen/red{
+ pixel_y = 4
+ },
+/obj/item/pen/blue{
+ pixel_x = -4;
+ pixel_y = -4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ami" = (
+/obj/structure/sign/poster/contraband/grey_tide{
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"amj" = (
+/turf/closed/wall/rust,
+/area/maintenance/port/fore)
+"amk" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/port/fore)
+"aml" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"amm" = (
+/obj/structure/closet/crate/secure/weapon{
+ desc = "A secure clothing crate.";
+ name = "formal uniform crate";
+ req_access_txt = "3"
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"amn" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/mob/living/simple_animal/mouse/brown,
+/turf/open/floor/plating,
+/area/construction/secondary)
+"amo" = (
+/obj/machinery/vending/cigarette,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"amp" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Fore Maintenance";
+ req_one_access_txt = "12;46"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"amq" = (
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"amr" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Starboard Bow Maintenance";
+ req_one_access_txt = "12;25;26;28;35;46"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ams" = (
+/obj/machinery/camera{
+ c_tag = "Fitness Toilets";
+ pixel_x = 22
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"amt" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"amu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"amv" = (
+/obj/structure/punching_bag,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"amw" = (
+/obj/structure/sign/poster/contraband/eat{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"amx" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"amy" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/bar)
+"amz" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"amA" = (
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"amB" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/security/warden)
+"amC" = (
+/obj/structure/closet/secure_closet/freezer/fridge,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"amD" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"amE" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/crew_quarters/bar";
+ dir = 8;
+ name = "Bar APC";
+ pixel_x = -26
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"amF" = (
+/obj/effect/landmark/start/cook,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -30
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"amG" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/chapel/main)
+"amH" = (
+/obj/item/crowbar/large{
+ pixel_y = 3
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/construction/secondary)
+"amI" = (
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/obj/effect/landmark/start/warden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"amJ" = (
+/obj/structure/lattice,
+/obj/structure/sign/departments/botany{
+ pixel_x = -32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"amK" = (
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"amL" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"amM" = (
+/obj/machinery/light,
+/obj/machinery/disposal/bin{
+ name = "Kitchen Mailbox"
+ },
+/obj/effect/turf_decal/delivery/white,
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"amN" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/storage/tools)
+"amO" = (
+/obj/item/bedsheet/mime,
+/obj/structure/bed,
+/obj/effect/landmark/start/mime,
+/obj/machinery/camera{
+ c_tag = "Mime's Office";
+ pixel_x = 22
+ },
+/turf/open/floor/plasteel/checker,
+/area/crew_quarters/theatre/mime)
+"amP" = (
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/hallway/secondary/entry)
+"amQ" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/window/eastleft{
+ name = "Reception Window"
+ },
+/obj/machinery/door/window/westleft{
+ name = "Warden's Desk";
+ req_one_access_txt = "2"
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"amR" = (
+/obj/machinery/light/small,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"amS" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"amT" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"amU" = (
+/obj/structure/beebox,
+/obj/item/queen_bee/bought,
+/turf/open/floor/grass,
+/area/hydroponics)
+"amV" = (
+/turf/open/floor/grass,
+/area/hydroponics)
+"amW" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = -4
+ },
+/obj/item/book/manual/hydroponics_pod_people{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/paper/guides/jobs/hydroponics{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"amX" = (
+/obj/machinery/suit_storage_unit/security,
+/turf/open/floor/plasteel/dark,
+/area/security/processing)
+"amY" = (
+/turf/closed/wall,
+/area/chapel/main)
+"amZ" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ana" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"anb" = (
+/obj/structure/table,
+/obj/item/lipstick/black,
+/obj/item/lipstick/random{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/theatre/mime)
+"anc" = (
+/obj/item/cigbutt,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"and" = (
+/turf/closed/wall/r_wall,
+/area/chapel/main)
+"ane" = (
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"anf" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/construction/secondary";
+ dir = 1;
+ name = "Secondary Construction Area APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"ang" = (
+/turf/closed/wall/r_wall,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"anh" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/item/clothing/glasses/regular,
+/obj/machinery/door/window/northright{
+ name = "Medical Booth Desk";
+ req_access_txt = "5"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"ani" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/duelshotgun{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"anj" = (
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ank" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/easel,
+/obj/item/canvas/nineteenXnineteen,
+/obj/machinery/camera{
+ c_tag = "Crew Lounge";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"anl" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/vending/snack/random,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"anm" = (
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "disposal"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ann" = (
+/obj/effect/turf_decal/plaque{
+ desc = "It reads 'In honor of spacemen past, whose work allowed this station to find its new home. The fact that you stand on a station originally built light years away is a definitive representation of the ingenuity of the human spirit.' Beneath this is the image of a spaceman rocketing upwards by means of what appears to be a match and flatulence."
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"ano" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"anp" = (
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"anq" = (
+/turf/closed/wall,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"anr" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"ans" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/destTagger,
+/obj/machinery/button/door{
+ id = "secblock";
+ name = "Router Access Control";
+ pixel_x = 8;
+ pixel_y = 24;
+ req_access_txt = "1"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"ant" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"anu" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"anv" = (
+/obj/item/stack/sheet/plasteel{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/storage/box/beakers,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plating,
+/area/construction)
+"anw" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"anx" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"any" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/pill/patch/styptic,
+/obj/item/reagent_containers/pill/patch/styptic,
+/obj/item/reagent_containers/pill/patch/styptic,
+/obj/item/reagent_containers/pill/patch/styptic,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"anz" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"anA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Fitness Room Maintenance";
+ req_one_access_txt = "12;46"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness)
+"anB" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/sign/barsign{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"anC" = (
+/obj/machinery/computer/cargo/request,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/requests_console{
+ department = "Security Router";
+ name = "Security Router RC";
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"anD" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"anE" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"anF" = (
+/obj/machinery/smartfridge,
+/turf/closed/wall,
+/area/crew_quarters/kitchen)
+"anG" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"anH" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/airlock/security{
+ name = "Security Checkpoint";
+ req_access_txt = "1"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/security/checkpoint)
+"anI" = (
+/obj/machinery/computer/arcade/orion_trail,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"anJ" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/item/paper_bin,
+/obj/item/stamp/denied{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/item/stamp{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/obj/item/pen,
+/obj/machinery/power/apc{
+ areastring = "/area/security/checkpoint";
+ dir = 4;
+ name = "Security Checkpoint APC";
+ pixel_x = 24
+ },
+/obj/machinery/requests_console{
+ department = "Security";
+ departmentType = 5;
+ name = "Security RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"anK" = (
+/turf/closed/wall/r_wall,
+/area/security/detectives_office)
+"anL" = (
+/obj/machinery/computer/arcade/minesweeper,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"anM" = (
+/obj/machinery/recharge_station,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"anN" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/analyzer,
+/obj/item/wrench{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"anO" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/storage/belt/utility,
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"anP" = (
+/obj/machinery/computer/arcade,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"anQ" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"anR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"anS" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/storage/tools";
+ name = "Auxiliary Tool Storage APC";
+ pixel_y = -26
+ },
+/obj/machinery/camera{
+ c_tag = "Auxiliary Tool Storage";
+ dir = 4;
+ pixel_y = -22
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"anT" = (
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"anU" = (
+/turf/closed/wall/r_wall,
+/area/security/brig)
+"anV" = (
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"anW" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "sec_off"
+ },
+/turf/open/floor/plating,
+/area/router/sec)
+"anX" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"anY" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"anZ" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"aoa" = (
+/obj/item/clockwork/component/geis_capacitor/fallen_armor,
+/obj/structure/table/bronze,
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aob" = (
+/obj/structure/closet/emcloset,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aoc" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/requests_console{
+ department = "Recreation";
+ name = "Recreation RC";
+ pixel_y = -32
+ },
+/obj/item/storage/box/drinkingglasses,
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aod" = (
+/obj/machinery/computer/security{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"aoe" = (
+/obj/structure/closet/secure_closet/personal/cabinet,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"aof" = (
+/obj/structure/sign/poster/official/foam_force_ad{
+ pixel_y = 32
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"aog" = (
+/turf/open/floor/grass,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aoh" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aoi" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"aoj" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"aok" = (
+/obj/structure/chair/wood/normal{
+ dir = 1
+ },
+/obj/machinery/button/door{
+ id = "Dorm1";
+ name = "Dormitory Door Lock";
+ normaldoorcontrol = 1;
+ pixel_x = -7;
+ pixel_y = -24;
+ specialfunctions = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"aol" = (
+/obj/machinery/button/door{
+ id = "Dorm3";
+ name = "Dormitory Door Lock";
+ normaldoorcontrol = 1;
+ pixel_x = 7;
+ pixel_y = -24;
+ specialfunctions = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"aom" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"aon" = (
+/obj/structure/closet/secure_closet/personal/cabinet,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"aoo" = (
+/obj/structure/rack,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/clothing/ears/earmuffs,
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/construction/secondary)
+"aop" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"aoq" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/warden)
+"aor" = (
+/obj/machinery/shower{
+ dir = 1
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"aos" = (
+/obj/structure/window/reinforced,
+/obj/structure/closet/athletic_mixed,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aot" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aou" = (
+/obj/structure/chair/comfy/brown{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aov" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"aow" = (
+/mob/living/simple_animal/banana_spider{
+ name = "Henry"
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"aox" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"aoy" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/checkpoint)
+"aoz" = (
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 4;
+ name = "4maintenance loot spawner"
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/construction/secondary)
+"aoA" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/item/flashlight/lamp,
+/obj/machinery/door/window/westright{
+ name = "Security Checkpoint";
+ req_access_txt = "1"
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"aoB" = (
+/obj/structure/bed,
+/obj/item/clothing/glasses/sunglasses/blindfold,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Prison Beds";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/security/prison";
+ dir = 4;
+ name = "Prison APC";
+ pixel_x = 26
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aoC" = (
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"aoD" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"aoE" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/chapel/main)
+"aoF" = (
+/turf/closed/wall/r_wall,
+/area/security/main)
+"aoG" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"aoH" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Port Bow Solars External Access";
+ req_access_txt = "10;13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aoI" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"aoJ" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/space_heater,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aoK" = (
+/turf/closed/wall/r_wall,
+/area/router/service)
+"aoL" = (
+/obj/structure/chair/stool,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"aoM" = (
+/obj/structure/closet/crate,
+/obj/item/stock_parts/matter_bin,
+/obj/item/stock_parts/micro_laser,
+/obj/item/stock_parts/scanning_module,
+/obj/item/stock_parts/capacitor,
+/turf/open/floor/plating,
+/area/construction)
+"aoN" = (
+/obj/structure/closet/crate/internals,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/flashlight,
+/obj/item/flashlight,
+/obj/item/tank/internals/emergency_oxygen,
+/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/item/clothing/mask/breath,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = -26
+ },
+/obj/item/clothing/head/hardhat/orange,
+/obj/item/clothing/head/hardhat/orange,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aoO" = (
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aoP" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aoQ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"aoR" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Brig Control";
+ req_access_txt = "3"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/warden)
+"aoS" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/conveyor{
+ id = "serv_off"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "servblock";
+ name = "Service Router"
+ },
+/turf/open/floor/plating,
+/area/router/service)
+"aoT" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "servblock";
+ name = "Service Router"
+ },
+/turf/open/floor/plating,
+/area/router/service)
+"aoU" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"aoV" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aoW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external/glass{
+ name = "Port Bow Solars External Access";
+ req_access_txt = "10;13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aoX" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aoY" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aoZ" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"apa" = (
+/obj/structure/chair/sofa/right,
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"apb" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"apc" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"apd" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"ape" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"apf" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"apg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"aph" = (
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"api" = (
+/obj/machinery/door/window/southright{
+ name = "Weightroom"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"apj" = (
+/obj/structure/window/reinforced,
+/obj/structure/punching_bag,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"apk" = (
+/obj/structure/closet/lasertag/blue,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"apl" = (
+/obj/structure/chair/sofa/right,
+/obj/item/clothing/head/beret/black,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"apm" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"apn" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"apo" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/construction)
+"app" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"apq" = (
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/hallway/secondary/entry)
+"apr" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/button/massdriver{
+ id = "sec_out";
+ pixel_x = 24;
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"aps" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/security{
+ name = "Security EVA Prep Room";
+ req_access_txt = "2"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"apt" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/construction)
+"apu" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"apv" = (
+/turf/closed/wall,
+/area/hallway/secondary/entry)
+"apw" = (
+/obj/structure/chair/sofa/left,
+/obj/effect/landmark/start/assistant,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"apx" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"apy" = (
+/obj/machinery/vr_sleeper{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"apz" = (
+/obj/machinery/vr_sleeper{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"apA" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/crew_quarters/dorms/purple)
+"apB" = (
+/obj/structure/flora/tree/jungle/small,
+/turf/open/floor/grass,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"apC" = (
+/turf/closed/wall/r_wall,
+/area/hydroponics)
+"apD" = (
+/obj/machinery/door/airlock{
+ id_tag = "Dorm1";
+ name = "Room 1"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"apE" = (
+/obj/machinery/biogenerator,
+/turf/open/floor/grass,
+/area/hydroponics)
+"apF" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"apG" = (
+/mob/living/simple_animal/chicken{
+ name = "Featherbottom";
+ real_name = "Featherbottom"
+ },
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"apH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/security/main)
+"apI" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"apJ" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/camera{
+ c_tag = "Hydroponics - Fore";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"apK" = (
+/obj/structure/reagent_dispensers/watertank/high,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -30
+ },
+/obj/item/reagent_containers/glass/bucket,
+/turf/open/floor/grass,
+/area/hydroponics)
+"apL" = (
+/obj/structure/chair/sofa/left,
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"apM" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"apN" = (
+/obj/machinery/door/airlock{
+ id_tag = "Dorm3";
+ name = "Room 3"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"apO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/crew_quarters/dorms/blue)
+"apP" = (
+/obj/structure/table,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"apQ" = (
+/obj/machinery/door/airlock/security/glass{
+ name = "Solitary Confinement";
+ req_one_access_txt = "2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"apR" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/obj/item/reagent_containers/food/condiment/saltshaker{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/food/condiment/peppermill{
+ pixel_x = -5;
+ pixel_y = 7
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"apS" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"apT" = (
+/obj/machinery/light/small,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/construction)
+"apU" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/obj/item/gun/ballistic/revolver/russian,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"apV" = (
+/turf/closed/wall/rust,
+/area/chapel/main)
+"apW" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/crew_quarters/kitchen)
+"apX" = (
+/obj/structure/fermenting_barrel,
+/turf/open/floor/grass,
+/area/hydroponics)
+"apY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"apZ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Fitness Toilets"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"aqa" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aqb" = (
+/obj/machinery/door/firedoor,
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Secondary Construction Area";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/construction/secondary)
+"aqc" = (
+/obj/structure/sign/departments/medbay/alt,
+/turf/closed/wall/r_wall,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aqd" = (
+/obj/structure/chair/sofa/right,
+/obj/machinery/camera{
+ c_tag = "Chapel - Fore"
+ },
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aqe" = (
+/obj/machinery/conveyor{
+ id = "serv_off"
+ },
+/turf/open/floor/plating,
+/area/router/service)
+"aqf" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aqg" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Fitness Room";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aqh" = (
+/obj/structure/chair/sofa/left,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aqi" = (
+/obj/structure/table,
+/obj/item/clipboard,
+/obj/item/paper_bin{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/pen,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aqj" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aqk" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aql" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/bar)
+"aqm" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"aqn" = (
+/turf/closed/wall/r_wall,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aqo" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"aqp" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"aqq" = (
+/obj/structure/chair/stool,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aqr" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aqs" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aqt" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/structure/sign/poster/contraband/hacking_guide{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aqu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aqv" = (
+/obj/structure/sign/poster/official/no_erp{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"aqw" = (
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/solars/port)
+"aqx" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"aqy" = (
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "serv_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router/service)
+"aqz" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aqA" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"aqB" = (
+/turf/closed/wall,
+/area/hydroponics)
+"aqC" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/hydroponics)
+"aqD" = (
+/obj/machinery/vending/sustenance,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aqE" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"aqF" = (
+/turf/open/floor/plasteel,
+/area/router/sec)
+"aqG" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"aqH" = (
+/obj/machinery/power/apc{
+ name = "Security Router APC";
+ pixel_y = -24
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/router/sec)
+"aqI" = (
+/obj/structure/flora/ausbushes/genericbush,
+/turf/open/floor/grass,
+/area/hydroponics)
+"aqJ" = (
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"aqK" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"aqL" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"aqM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aqN" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock{
+ name = "Service Hallway";
+ req_one_access_txt = "25;26;28;35"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"aqO" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Engineering EVA";
+ req_access_txt = "11"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aqP" = (
+/obj/structure/chair/stool,
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"aqQ" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"aqR" = (
+/obj/item/grown/bananapeel,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"aqS" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aqT" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aqU" = (
+/turf/closed/wall/r_wall,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"aqV" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Purple Dorms Maintenance";
+ req_access_txt = "12"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/dorms/purple)
+"aqW" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/book/manual/chef_recipes,
+/obj/item/storage/box/donkpockets,
+/obj/structure/disposalpipe/segment,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"aqX" = (
+/obj/structure/sign/warning/fire{
+ desc = "A sign that states the labeled room's number.";
+ icon_state = "roomnum";
+ name = "Room Number 1";
+ pixel_y = 28
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"aqY" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aqZ" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"ara" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"arb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/barbershop";
+ dir = 4;
+ name = "Barbershop APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"arc" = (
+/obj/structure/closet/secure_closet/freezer/cream_pie,
+/obj/item/toy/figure/clown,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"ard" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"are" = (
+/obj/machinery/chem_heater,
+/obj/effect/turf_decal/stripes/end{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"arf" = (
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"arg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"arh" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"ari" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"arj" = (
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/dorms/purple)
+"ark" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"arl" = (
+/obj/machinery/vending/kink,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Locker Room";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"arm" = (
+/obj/structure/chair/sofa/right,
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"arn" = (
+/obj/machinery/vending/tool,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aro" = (
+/obj/structure/closet/firecloset,
+/obj/machinery/camera{
+ c_tag = "Starboard Bow Maintenance - Starboard";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"arp" = (
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "disposal"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"arq" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"arr" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = -32
+ },
+/obj/item/stock_parts/cell/high/plus,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"ars" = (
+/obj/structure/chair/stool,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/landmark/start/bartender,
+/obj/item/clothing/under/janimaid,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"art" = (
+/obj/structure/punching_bag,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"aru" = (
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/dorms/blue)
+"arv" = (
+/obj/structure/table,
+/obj/item/modular_computer/laptop/preset/civilian{
+ pixel_x = 1;
+ pixel_y = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"arw" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/airlock/public/glass{
+ name = "Crew Quarters"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"arx" = (
+/obj/machinery/button/door{
+ id = "kitchenlock";
+ name = "Kitchen Lockup";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"ary" = (
+/obj/machinery/food_cart,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"arz" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"arA" = (
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"arB" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"arC" = (
+/obj/structure/sign/warning/fire{
+ desc = "A sign that states the labeled room's number.";
+ dir = 4;
+ icon_state = "roomnum";
+ name = "Room Number 3";
+ pixel_y = 28
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"arD" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 8;
+ icon_state = "intact"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Blue Dorms Maintenance";
+ req_one_access_txt = "12;46"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/dorms/blue)
+"arE" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/starboard/central)
+"arF" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"arG" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"arH" = (
+/obj/machinery/disposal/bin{
+ name = "Detective's Mailbox"
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/delivery/white,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"arI" = (
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness)
+"arJ" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"arK" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/item/destTagger,
+/obj/machinery/button/massdriver{
+ id = "serv_out";
+ pixel_x = 8;
+ pixel_y = -4
+ },
+/obj/machinery/requests_console{
+ department = "Service Router";
+ name = "Service Router RC";
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"arL" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "serv_off"
+ },
+/turf/open/floor/plating,
+/area/router/service)
+"arM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/router/service)
+"arN" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4;
+ name = "Sauna"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"arO" = (
+/obj/machinery/door/firedoor,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"arP" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"arQ" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"arR" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/falsewall/reinforced{
+ req_access_txt = "1"
+ },
+/turf/open/floor/plasteel,
+/area/router/sec)
+"arS" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/crew_quarters/dorms/purple)
+"arT" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"arU" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/sign/warning/fire{
+ desc = "A sign that states the labeled room's number.";
+ dir = 1;
+ icon_state = "roomnum";
+ name = "Room Number 2";
+ pixel_y = -28
+ },
+/obj/machinery/camera{
+ c_tag = "Dormitories - Purple";
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"arV" = (
+/obj/machinery/vr_sleeper{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/sign/poster/official/soft_cap_pop_art{
+ pixel_x = -32
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"arW" = (
+/obj/structure/closet/firecloset,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/general/hidden,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"arX" = (
+/obj/machinery/computer/med_data{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"arY" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"arZ" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"asa" = (
+/obj/machinery/computer/arcade,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"asb" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"asc" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"asd" = (
+/turf/closed/wall/rust,
+/area/maintenance/starboard/fore)
+"ase" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Purple Dorms"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms/purple)
+"asf" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Blue Dorms"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/dorms/blue)
+"asg" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"ash" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"asi" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asj" = (
+/obj/effect/turf_decal/tile/red,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ask" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Prison Fore";
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/mob/living/simple_animal/mouse/brown/Tom,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"asl" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/machinery/camera{
+ c_tag = "Port Bow Solar Maintenance";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"asm" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/hallway/secondary/service";
+ dir = 8;
+ name = "Service Hall APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"asn" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"aso" = (
+/obj/structure/sign/warning/fire{
+ desc = "A sign that states the labeled room's number.";
+ dir = 8;
+ icon_state = "roomnum";
+ name = "Room Number 4";
+ pixel_y = -28
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Dormitories - Blue";
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"asp" = (
+/obj/structure/chair/comfy/brown,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"asq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/crew_quarters/dorms/blue)
+"asr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ass" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/light/small,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"ast" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/portable_atmospherics/canister/toxins,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"asu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/rust,
+/area/maintenance/disposal)
+"asv" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asw" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asx" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asy" = (
+/obj/effect/landmark/start/assistant,
+/obj/machinery/holopad,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/hallway/secondary/entry)
+"asz" = (
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Prison Bathroom";
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
+"asA" = (
+/obj/structure/table,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/turf/open/floor/plating,
+/area/router/service)
+"asB" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asC" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asD" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/button/door{
+ id = "servblock";
+ name = "Router Access Control";
+ pixel_x = 8;
+ pixel_y = 24;
+ req_one_access_txt = "12;25;26;28;35;46"
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"asF" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/security{
+ name = "Labor Camp Arrivals"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"asG" = (
+/obj/structure/sign/warning/nosmoking/circle,
+/turf/closed/wall/r_wall,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"asH" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"asI" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/portable_atmospherics/canister/toxins,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"asJ" = (
+/turf/closed/wall,
+/area/crew_quarters/toilet)
+"asK" = (
+/obj/machinery/vr_sleeper{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"asL" = (
+/turf/closed/wall,
+/area/security/brig)
+"asM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"asN" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asO" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"asP" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"asQ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"asR" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"asS" = (
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"asT" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/mob/living/simple_animal/mouse/gray{
+ desc = "A strangely observant rodent.";
+ name = "Remy"
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"asU" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Engineering Router";
+ req_access_txt = "11"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"asV" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"asW" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/vending/snack/random,
+/turf/open/floor/plasteel,
+/area/security/main)
+"asX" = (
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/table/reinforced,
+/obj/item/tape,
+/obj/item/radio/off,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"asY" = (
+/obj/structure/window/reinforced,
+/obj/structure/table/reinforced,
+/obj/item/clipboard,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"asZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"ata" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/main)
+"atb" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"atc" = (
+/turf/closed/wall,
+/area/security/main)
+"atd" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Service Router APC";
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"ate" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/router/service)
+"atf" = (
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/starboard/central)
+"atg" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/router/service)
+"ath" = (
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/dark,
+/area/router/service)
+"ati" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external,
+/turf/open/floor/plasteel,
+/area/router/service)
+"atj" = (
+/obj/structure/window/reinforced,
+/obj/structure/table/reinforced,
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"atk" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"atl" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/router/service)
+"atm" = (
+/obj/structure/table,
+/obj/item/kitchen/rollingpin,
+/obj/item/reagent_containers/food/condiment/enzyme,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"atn" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/door/airlock/external,
+/turf/open/floor/plasteel,
+/area/router/service)
+"ato" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"atp" = (
+/obj/machinery/door/airlock{
+ id_tag = "Dorm2";
+ name = "Room 2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"atq" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/security/processing)
+"atr" = (
+/obj/machinery/door/airlock{
+ id_tag = "Dorm4";
+ name = "Room 4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"ats" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Clown's Office";
+ req_access_txt = "46"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/theatre/clown)
+"att" = (
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"atu" = (
+/obj/machinery/computer/cargo/request{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router/service)
+"atv" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"atw" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"atx" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"aty" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"atz" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"atA" = (
+/obj/machinery/vending/cigarette,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"atB" = (
+/obj/machinery/shower{
+ dir = 4
+ },
+/obj/item/bikehorn/rubberducky,
+/obj/structure/sign/poster/official/no_erp{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"atC" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"atD" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router/service)
+"atE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/router/service)
+"atF" = (
+/turf/closed/wall/r_wall,
+/area/engine/gravity_generator)
+"atG" = (
+/turf/open/floor/plasteel/dark,
+/area/router/service)
+"atH" = (
+/obj/structure/tank_dispenser/oxygen,
+/obj/machinery/power/apc{
+ areastring = "/area/security/processing";
+ name = "Labor Shuttle Dock APC";
+ pixel_y = -26
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/dark,
+/area/security/processing)
+"atI" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/warden)
+"atJ" = (
+/turf/closed/wall/rust,
+/area/crew_quarters/theatre/clown)
+"atK" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"atL" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"atM" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"atN" = (
+/obj/structure/closet/secure_closet/personal/cabinet,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"atO" = (
+/obj/structure/table,
+/obj/item/storage/bag/tray,
+/obj/item/clothing/gloves/color/white,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"atP" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/obj/item/reagent_containers/food/drinks/drinkingglass,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"atQ" = (
+/obj/structure/closet/lasertag/red,
+/obj/structure/sign/poster/official/space_cops{
+ pixel_x = -32
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"atR" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/machinery/vending/wardrobe/bar_wardrobe,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"atS" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Bar Backroom";
+ req_access_txt = "25"
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"atT" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"atU" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"atV" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"atW" = (
+/obj/machinery/disposal/bin{
+ name = "Parolee Exit"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"atX" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/stock_parts/cell/high/plus,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"atY" = (
+/obj/machinery/button/door{
+ id = "Dorm2";
+ name = "Dormitory Door Lock";
+ normaldoorcontrol = 1;
+ pixel_x = -7;
+ pixel_y = 24;
+ specialfunctions = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"atZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/closed/wall,
+/area/hallway/secondary/entry)
+"aua" = (
+/obj/structure/chair/wood/normal,
+/obj/machinery/button/door{
+ id = "Dorm4";
+ name = "Dormitory Door Lock";
+ normaldoorcontrol = 1;
+ pixel_x = 7;
+ pixel_y = 24;
+ specialfunctions = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"aub" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"auc" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aud" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"aue" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/item/seeds/random,
+/turf/open/floor/plating,
+/area/router/service)
+"auf" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/router/service)
+"aug" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/table/glass,
+/obj/item/storage/bag/plants,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"auh" = (
+/obj/structure/table/wood,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/item/storage/pill_bottle/dice,
+/obj/item/toy/cards/deck,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aui" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1;
+ name = "Freezer AC Pump"
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"auj" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"auk" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"aul" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/mob/living/simple_animal/mouse/brown{
+ name = "Chewy"
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"aum" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"aun" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/vending/hydronutrients,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"auo" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/table/glass,
+/obj/machinery/reagentgrinder{
+ pixel_y = 6
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aup" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/obj/structure/table/glass,
+/obj/item/reagent_containers/glass/bucket{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"auq" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/router/service)
+"aur" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/router/service)
+"aus" = (
+/turf/open/floor/engine,
+/area/engine/gravity_generator)
+"aut" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"auu" = (
+/obj/effect/landmark/start/botanist,
+/turf/open/floor/plasteel/dark,
+/area/router/service)
+"auv" = (
+/obj/structure/bed,
+/obj/item/bedsheet/purple,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"auw" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aux" = (
+/obj/machinery/light/small,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"auy" = (
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"auz" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/chem_master,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"auA" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/beacon,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"auB" = (
+/obj/structure/dresser,
+/turf/open/floor/carpet/purple,
+/area/crew_quarters/dorms/purple)
+"auC" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"auD" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"auE" = (
+/obj/structure/bed,
+/obj/item/clothing/glasses/sunglasses/blindfold,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"auF" = (
+/obj/structure/table/wood,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"auG" = (
+/obj/machinery/light/small,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"auH" = (
+/obj/structure/girder/displaced,
+/obj/item/reagent_containers/rag,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"auI" = (
+/obj/structure/closet/secure_closet/brig,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"auJ" = (
+/obj/structure/bed,
+/obj/item/bedsheet/blue,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/dorms/blue)
+"auK" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/security/brig)
+"auL" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"auM" = (
+/obj/machinery/door/firedoor,
+/obj/structure/sign/poster/official/bless_this_spess{
+ pixel_x = -32
+ },
+/obj/machinery/door/airlock/public/glass,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"auN" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"auO" = (
+/obj/structure/closet/crate/freezer,
+/turf/open/floor/plating,
+/area/router/service)
+"auP" = (
+/obj/structure/chair/sofa/right,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/effect/landmark/start/assistant/override,
+/turf/open/floor/plasteel,
+/area/security/main)
+"auQ" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/airlock/public/glass,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"auR" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/engine/secure_construction";
+ dir = 1;
+ name = "Engineering Construction Area APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"auS" = (
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"auT" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"auU" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs/left,
+/area/router/service)
+"auV" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"auW" = (
+/obj/structure/chair/sofa/left,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/the_owl{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"auX" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/stairs/right,
+/area/router/service)
+"auY" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"auZ" = (
+/obj/structure/disposalpipe/junction/flip,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ava" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"avb" = (
+/turf/closed/wall,
+/area/hallway/secondary/civilian)
+"avc" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avd" = (
+/obj/structure/sign/warning{
+ name = "\improper COLD TEMPERATURES";
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"ave" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"avf" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Starboard Bow Maintenance";
+ req_one_access_txt = "12;25;26;28;35;46"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/hallway/secondary/civilian)
+"avg" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Brig";
+ req_access_txt = "2"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"avh" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"avi" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance/abandoned{
+ name = "Port Bow Maintainance";
+ req_one_access_txt = "13"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"avj" = (
+/obj/machinery/photocopier,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"avk" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/item/plant_analyzer,
+/obj/structure/table/glass,
+/obj/machinery/plantgenes{
+ pixel_y = 6
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"avl" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"avm" = (
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/civilian)
+"avn" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/spiderlings{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"avo" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"avp" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/glass{
+ name = "East Primary Hallway";
+ req_one_access_txt = "10;12;25;26;28;35;46"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/router/service)
+"avq" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/glass{
+ name = "East Primary Hallway";
+ req_one_access_txt = "10;12;25;26;28;35;46"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/router/service)
+"avr" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/fore)
+"avs" = (
+/turf/closed/wall,
+/area/router/service)
+"avt" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"avu" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"avv" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plating,
+/area/space/nearstation)
+"avw" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
+/obj/structure/sign/poster/official/wtf_is_co2{
+ pixel_x = 32
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"avx" = (
+/obj/structure/table,
+/obj/item/hand_labeler,
+/obj/item/crowbar/large,
+/obj/item/crowbar{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"avy" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plating,
+/area/space/nearstation)
+"avz" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/light,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"avA" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"avB" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"avC" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avD" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/space/fragile,
+/obj/item/clothing/head/helmet/space/fragile,
+/obj/item/storage/belt/utility,
+/obj/item/tank/internals/air,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/service)
+"avE" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avF" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"avG" = (
+/turf/closed/wall,
+/area/security/prison)
+"avH" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible,
+/obj/machinery/meter,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avI" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avJ" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/vending/cola/random,
+/turf/open/floor/plasteel,
+/area/security/main)
+"avK" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avL" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"avM" = (
+/obj/structure/chair/comfy/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"avN" = (
+/turf/closed/wall,
+/area/crew_quarters/barbershop)
+"avO" = (
+/obj/structure/table,
+/obj/structure/bedsheetbin/color,
+/obj/item/clothing/gloves/color/white,
+/obj/machinery/camera{
+ c_tag = "Laundry Room"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"avP" = (
+/obj/structure/reagent_dispensers/keg,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"avQ" = (
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avR" = (
+/obj/machinery/washing_machine,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"avS" = (
+/obj/machinery/washing_machine,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"avT" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"avU" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 6
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avV" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"avW" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"avX" = (
+/obj/structure/table,
+/obj/structure/bedsheetbin,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"avY" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "AIShutter";
+ name = "AI Core Shutters"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"avZ" = (
+/obj/effect/landmark/start/cook,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"awa" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/visible,
+/obj/machinery/meter,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"awb" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awc" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"awd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"awe" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"awf" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awg" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera{
+ c_tag = "Civilian Wing Hallway - Fore"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awh" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/fruit_bowl{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"awi" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awj" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awk" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"awl" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "applebush"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awm" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/port)
+"awn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "AIShutter";
+ name = "AI Core Shutters"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"awo" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"awp" = (
+/turf/closed/wall,
+/area/hydroponics/lobby)
+"awq" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plating,
+/area/space/nearstation)
+"awr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aws" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"awt" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/item/folder/red,
+/obj/machinery/door/window/westleft{
+ name = "Security Checkpoint";
+ req_access_txt = "1"
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"awu" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"awv" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction,
+/obj/structure/table,
+/obj/item/clothing/gloves/color/white,
+/obj/item/reagent_containers/spray/cleaner,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"aww" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"awx" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hydroponics/lobby)
+"awy" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Laundry Room Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/barbershop)
+"awz" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"awA" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"awB" = (
+/obj/machinery/microwave,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/table/wood/fancy,
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
+/area/crew_quarters/bar)
+"awC" = (
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"awD" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"awE" = (
+/obj/structure/reagent_dispensers/fueltank,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"awF" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"awG" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"awH" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"awI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awJ" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/flasher/portable,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"awK" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"awL" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"awM" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/crowbar/large,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"awN" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"awO" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/port/central";
+ dir = 1;
+ name = "Central Port Maintenance APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"awP" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"awQ" = (
+/obj/structure/window/plasma/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced/tinted,
+/obj/structure/table,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/bar,
+/turf/open/floor/plasteel,
+/area/security/main)
+"awR" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"awS" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"awT" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 1;
+ sortType = 7
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"awU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"awV" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/vending/assist,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"awW" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"awX" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 1
+ },
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"awY" = (
+/obj/structure/closet/wardrobe/orange,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"awZ" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axa" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"axb" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"axc" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/port)
+"axd" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"axe" = (
+/obj/structure/closet/crate,
+/obj/item/storage/belt/utility,
+/obj/item/clothing/glasses/meson,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"axf" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"axg" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/machinery/camera{
+ c_tag = "Arcade";
+ dir = 4
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"axh" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/structure/sign/poster/contraband/random{
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"axi" = (
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/effect/turf_decal/bot,
+/obj/structure/closet/secure_closet/brig,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axj" = (
+/obj/machinery/vr_sleeper{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"axk" = (
+/obj/item/storage/pill_bottle/penis_enlargement,
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
+"axl" = (
+/obj/machinery/shower{
+ dir = 8;
+ pixel_y = -4
+ },
+/obj/item/soap/homemade,
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
+"axm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/closed/wall,
+/area/security/prison)
+"axn" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"axo" = (
+/obj/structure/table,
+/obj/item/tape,
+/obj/item/wrench,
+/obj/item/radio/off,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axp" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"axq" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"axr" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Hydroponics";
+ req_access_txt = "35"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"axs" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"axt" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/heater{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"axu" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/security/brig)
+"axv" = (
+/obj/structure/closet/secure_closet/security/sec,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/clothing/accessory/armband/deputy,
+/obj/item/encryptionkey/headset_sec,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/item/clothing/head/cowboyhat/sec,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axw" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"axx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/camera{
+ c_tag = "Fore Maintenance - Aft";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"axy" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/botanist,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"axz" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/reagent_dispensers/peppertank{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axA" = (
+/obj/structure/closet/secure_closet/security/sec,
+/obj/effect/turf_decal/bot,
+/obj/item/clothing/accessory/armband/science,
+/obj/item/encryptionkey/headset_sci,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axB" = (
+/obj/structure/closet/secure_closet/security/sec,
+/obj/effect/turf_decal/bot,
+/obj/item/clothing/accessory/armband/medblue,
+/obj/item/encryptionkey/headset_med,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axC" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axD" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock{
+ name = "Hydroponics Storage";
+ req_access_txt = "35"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"axE" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/contraband/kudzu{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"axF" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"axG" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"axH" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"axI" = (
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"axJ" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"axK" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axL" = (
+/obj/structure/sign/warning{
+ name = "\improper CONSTRUCTION AREA";
+ pixel_y = 32
+ },
+/obj/item/assembly/prox_sensor,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"axM" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"axN" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/computer/security{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axO" = (
+/obj/structure/weightmachine/stacklifter,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"axP" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"axQ" = (
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"axR" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/open/floor/plating,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"axS" = (
+/obj/structure/closet/crate,
+/obj/item/storage/box/lights/mixed,
+/obj/item/clothing/mask/gas,
+/obj/item/cane,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"axT" = (
+/obj/structure/table,
+/obj/machinery/recharger,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/storage/crayons{
+ pixel_y = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"axV" = (
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"axW" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axX" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"axY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"axZ" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"aya" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "AI Core Exterior";
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"ayb" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"ayc" = (
+/obj/structure/kitchenspike,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"ayd" = (
+/turf/closed/wall,
+/area/hallway/primary/port/fore)
+"aye" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/open/space/basic,
+/area/space/nearstation)
+"ayf" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 2
+ },
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"ayg" = (
+/obj/machinery/vending/wardrobe/hydro_wardrobe,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"ayh" = (
+/obj/machinery/door/airlock{
+ name = "Bathroom"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
+"ayi" = (
+/obj/structure/table,
+/obj/item/clipboard,
+/obj/item/paper_bin{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/pen,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"ayj" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/security/brig)
+"ayk" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"ayl" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"aym" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ayn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/turf/open/floor/plating,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"ayo" = (
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"ayp" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"ayq" = (
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"ayr" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"ays" = (
+/obj/structure/table,
+/obj/item/reagent_containers/food/drinks/soda_cans/space_up,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"ayt" = (
+/obj/structure/closet/crate,
+/obj/item/reagent_containers/glass/beaker/waterbottle/large/empty,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"ayu" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ayv" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"ayw" = (
+/obj/structure/disposalpipe/junction{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Service Hallway - Fore";
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"ayx" = (
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"ayy" = (
+/turf/open/floor/carpet,
+/area/chapel/main)
+"ayz" = (
+/obj/structure/chair/pew/right{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
+"ayA" = (
+/obj/structure/window/reinforced,
+/obj/structure/destructible/cult/tome,
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"ayB" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"ayC" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayD" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"ayE" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hydroponics/lobby)
+"ayF" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ayG" = (
+/obj/structure/chair/comfy/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"ayH" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/mob/living/simple_animal/cockroach,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"ayI" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayJ" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/port)
+"ayK" = (
+/obj/structure/flora/tree/jungle/small,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"ayL" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"ayM" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayN" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"ayO" = (
+/obj/structure/window/plasma/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced/tinted,
+/obj/structure/table,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/bar,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"ayP" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"ayQ" = (
+/obj/machinery/vr_sleeper{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ayR" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Prison Wing";
+ req_access_txt = "2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayS" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayT" = (
+/obj/machinery/vending/security,
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayU" = (
+/obj/vehicle/ridden/secway,
+/obj/effect/turf_decal/bot,
+/obj/item/key/security,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayV" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"ayW" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayX" = (
+/obj/structure/closet/wardrobe/mixed,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"ayY" = (
+/obj/machinery/vending/medical,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"ayZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aza" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/item/clothing/gloves/botanic_leather,
+/obj/item/hand_labeler,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"azb" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"azc" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"azd" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/item/clothing/mask/gas,
+/obj/machinery/camera{
+ c_tag = "Central Port Maintenace - Port"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aze" = (
+/obj/machinery/power/apc{
+ name = "AI Chamber APC";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"azf" = (
+/obj/machinery/newscaster/security_unit{
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"azg" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"azh" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"azi" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Interrogation Maintenance";
+ req_access_txt = "63;12"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/security/brig)
+"azj" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"azk" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"azl" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Brig Aft";
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"azm" = (
+/obj/structure/chair/stool/bar,
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"azn" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"azo" = (
+/obj/structure/chair/office/light{
+ dir = 1;
+ pixel_y = 3
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"azp" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"azq" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plating,
+/area/space/nearstation)
+"azr" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"azs" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"azt" = (
+/obj/structure/chair/pew/right{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"azu" = (
+/obj/structure/chair/pew{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
+"azv" = (
+/obj/machinery/door/window/westleft{
+ name = "Holy Driver";
+ req_one_access_txt = "22"
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "Holydriver"
+ },
+/turf/open/floor/plating,
+/area/chapel/main)
+"azw" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "Holydriver"
+ },
+/turf/open/floor/plating,
+/area/chapel/main)
+"azx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"azy" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"azz" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"azA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"azB" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"azC" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/barbershop)
+"azD" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"azE" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"azF" = (
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/storage/tools)
+"azG" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"azH" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/sign/departments/botany{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"azI" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"azJ" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"azK" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/machinery/door/window/westleft{
+ name = "Boxing Ring"
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"azL" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"azM" = (
+/obj/structure/table,
+/obj/machinery/recharger{
+ pixel_y = 2
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"azN" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"azO" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"azP" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/cola/random,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"azQ" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/snack/random,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"azR" = (
+/obj/structure/closet/secure_closet/bar,
+/obj/structure/disposalpipe/segment,
+/obj/item/clothing/under/janimaid,
+/obj/item/stack/spacecash/c10,
+/obj/item/clothing/under/waiter,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"azS" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/closet,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/cable_coil/red{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/stack/cable_coil/red,
+/obj/item/wrench,
+/obj/item/screwdriver{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"azT" = (
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"azU" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"azV" = (
+/obj/structure/kitchenspike,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"azW" = (
+/obj/effect/landmark/start/botanist,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"azX" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"azY" = (
+/obj/structure/closet/secure_closet/hydroponics,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/power/apc{
+ areastring = "/area/hydroponics/lobby";
+ dir = 4;
+ name = "Hydroponics Lobby APC";
+ pixel_x = 24
+ },
+/obj/item/clothing/suit/beekeeper_suit,
+/obj/item/melee/flyswatter,
+/obj/item/clothing/head/beekeeper_head,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"azZ" = (
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "chapelgun";
+ name = "Holy Driver"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/chapel/main)
+"aAa" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen)
+"aAb" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aAc" = (
+/obj/machinery/space_heater,
+/obj/machinery/atmospherics/pipe/manifold/general/visible,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aAd" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/processing)
+"aAe" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aAf" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/mineral_door/wood,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/barbershop)
+"aAg" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction,
+/obj/machinery/gibber,
+/obj/machinery/camera{
+ c_tag = "Kitchen Coldroom";
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"aAh" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/easel,
+/obj/item/canvas/nineteenXnineteen,
+/obj/item/storage/crayons,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAi" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aAj" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aAk" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aAl" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"aAm" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/machinery/door/airlock/freezer{
+ name = "Kitchen Coldroom";
+ req_access_txt = "28"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"aAn" = (
+/obj/machinery/vending/wardrobe/sec_wardrobe,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aAo" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/sign/poster/official/twelve_gauge{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"aAp" = (
+/obj/machinery/computer/security/telescreen/entertainment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/bar)
+"aAq" = (
+/obj/structure/sink{
+ dir = 8;
+ pixel_x = -12
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"aAr" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aAs" = (
+/obj/structure/closet/firecloset,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aAt" = (
+/obj/structure/rack,
+/obj/item/storage/toolbox/emergency,
+/obj/machinery/camera{
+ c_tag = "Hydroponics Storage";
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aAu" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/circuitboard/machine/hydroponics,
+/obj/item/circuitboard/machine/hydroponics,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aAv" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/item/gun/energy/e_gun/advtaser{
+ pixel_y = 6
+ },
+/obj/item/gun/energy/e_gun/advtaser,
+/obj/item/gun/energy/e_gun/advtaser{
+ pixel_y = -6
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aAw" = (
+/obj/machinery/door/poddoor{
+ id = "chapelgun";
+ name = "Chapel Launcher Door"
+ },
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/chapel/main)
+"aAx" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aAy" = (
+/obj/machinery/atmospherics/components/binary/circulator{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aAz" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aAA" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aAB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aAC" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aAD" = (
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aAE" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aAF" = (
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aAG" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aAH" = (
+/obj/structure/chair/pew{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aAI" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aAJ" = (
+/obj/structure/transit_tube/station/reverse/flipped{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/end{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aAK" = (
+/obj/structure/transit_tube/horizontal,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aAL" = (
+/obj/machinery/shower{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/cleanliness{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aAM" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Hydroponics";
+ req_access_txt = "35"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aAN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aAO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/crew_quarters/toilet)
+"aAP" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aAQ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Security Office";
+ req_access_txt = "63"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aAR" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Telecomms Access Maintenance";
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aAS" = (
+/obj/structure/closet/secure_closet/security/sec,
+/obj/effect/turf_decal/bot,
+/obj/item/clothing/accessory/armband/engine,
+/obj/item/encryptionkey/headset_eng,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aAT" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aAU" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aAV" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aAW" = (
+/obj/machinery/chem_master/condimaster{
+ name = "BrewMaster 3000"
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aAX" = (
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aAY" = (
+/obj/structure/chair,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aAZ" = (
+/obj/structure/chair,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aBa" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aBb" = (
+/obj/machinery/light,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aBc" = (
+/obj/structure/closet/secure_closet/hydroponics,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/clothing/suit/beekeeper_suit,
+/obj/item/melee/flyswatter,
+/obj/item/clothing/head/beekeeper_head,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aBd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aBe" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aBf" = (
+/obj/structure/closet{
+ name = "Evidence Closet"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aBg" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aBh" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aBi" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aBj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/security/brig)
+"aBk" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/crew_quarters/barbershop)
+"aBl" = (
+/obj/structure/chair/comfy/brown,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/barbershop)
+"aBm" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=2";
+ freq = 1400;
+ location = "Dormitories"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aBn" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aBo" = (
+/obj/structure/table,
+/obj/item/storage/pill_bottle/epinephrine,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/barbershop)
+"aBp" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/computer/pod/old{
+ density = 0;
+ icon = 'icons/obj/airlock_machines.dmi';
+ icon_state = "airlock_control_standby";
+ id = "chapelgun";
+ name = "Mass Driver Controller";
+ pixel_x = 24
+ },
+/obj/machinery/conveyor_switch/oneway{
+ id = "Holydriver"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aBq" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aBr" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/barbershop)
+"aBs" = (
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aBt" = (
+/obj/structure/chair/comfy/brown,
+/obj/machinery/newscaster{
+ pixel_y = 32
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/barbershop)
+"aBu" = (
+/obj/item/flashlight/lantern,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aBv" = (
+/obj/structure/chair/pew/left{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aBw" = (
+/obj/structure/chair/comfy/brown,
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/barbershop)
+"aBx" = (
+/obj/structure/window/plasma/reinforced{
+ dir = 8
+ },
+/obj/structure/table,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/bar,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aBy" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-16"
+ },
+/obj/machinery/camera{
+ c_tag = "Port Bow Hall - Central";
+ dir = 4;
+ network = list("ss13","medbay")
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aBz" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aBA" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/healthanalyzer,
+/obj/item/storage/hypospraykit/fire{
+ pixel_x = -4
+ },
+/obj/item/storage/hypospraykit/brute{
+ pixel_x = 4
+ },
+/obj/structure/sign/poster/official/nt_storm{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aBB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aBC" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aBD" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aBE" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aBF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aBG" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/crew_quarters/bar)
+"aBH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aBI" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aBJ" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/closet/emcloset,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aBK" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aBL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aBM" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/abandoned_gambling_den";
+ name = "Arcade APC";
+ pixel_y = -26
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aBN" = (
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aBO" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock{
+ name = "Hydroponics Storage";
+ req_access_txt = "35"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aBP" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aBQ" = (
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aBR" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aBS" = (
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aBT" = (
+/obj/item/razor,
+/obj/item/toy/figure/chef{
+ pixel_x = -6
+ },
+/obj/item/toy/figure/bartender{
+ pixel_x = 4
+ },
+/obj/structure/table/wood/fancy,
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"aBU" = (
+/obj/structure/window/reinforced/tinted,
+/obj/structure/rack,
+/obj/item/soap/nanotrasen,
+/obj/item/reagent_containers/food/drinks/bottle/vodka,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aBV" = (
+/obj/item/flashlight/lantern,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aBW" = (
+/obj/structure/window/reinforced,
+/obj/item/clothing/head/hardhat/cakehat,
+/obj/structure/table/wood/fancy,
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"aBX" = (
+/obj/structure/table,
+/obj/machinery/chem_dispenser/drinks,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aBY" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/camera{
+ c_tag = "Security Maintenance";
+ dir = 1;
+ network = list("ss13","medbay")
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aBZ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aCa" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/main)
+"aCb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/security/brig)
+"aCc" = (
+/obj/structure/closet/secure_closet/security/sec,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/clothing/accessory/armband/cargo,
+/obj/item/encryptionkey/headset_cargo,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCd" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/highcap/fifteen_k{
+ areastring = /area/maintenance/solars/port;
+ dir = 1;
+ name = "Port Solars APC";
+ pixel_y = 26
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aCe" = (
+/obj/effect/spawner/structure/window,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/bar)
+"aCf" = (
+/obj/machinery/light/small,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"aCg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/landmark/start/depsec/supply,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCh" = (
+/obj/structure/mineral_door/wood{
+ name = "Barbershop"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aCi" = (
+/obj/structure/closet/l3closet/security,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCj" = (
+/obj/machinery/door/window/southleft{
+ name = "Showers"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aCk" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/crew_quarters/toilet/fitness)
+"aCl" = (
+/obj/structure/closet/bombcloset/security,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCm" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aCn" = (
+/obj/machinery/vending/boozeomat,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aCo" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"aCp" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/fitness)
+"aCq" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/closed/wall,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"aCr" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aCs" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"aCt" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCu" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
+"aCv" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"aCw" = (
+/obj/structure/window/reinforced/tinted,
+/obj/machinery/shower{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aCx" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aCy" = (
+/obj/structure/table/wood,
+/obj/item/storage/book/bible,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aCz" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aCA" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aCB" = (
+/obj/structure/chair/stool/bar,
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"aCC" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/security/prison)
+"aCD" = (
+/obj/item/trash/plate,
+/obj/item/kitchen/fork,
+/obj/structure/table/wood/fancy,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"aCE" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/button/door{
+ id = "briglockdown";
+ name = "Brig Lockdown";
+ pixel_x = 24;
+ req_access_txt = "2"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCF" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"aCG" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCH" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Brig";
+ req_access_txt = "2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aCI" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/structure/sign/departments/botany{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aCJ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/chapel/main)
+"aCK" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/security/prison)
+"aCL" = (
+/obj/structure/table,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/item/book/manual/wiki/security_space_law,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aCM" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/poster/contraband/fun_police{
+ pixel_x = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aCN" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aCO" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"aCP" = (
+/obj/structure/chair/sofa/left,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/landmark/start/botanist,
+/obj/machinery/camera{
+ c_tag = "Hydroponics Lobby"
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aCQ" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/grown/harebell,
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aCR" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/table/glass,
+/obj/item/modular_computer/laptop/preset/civilian{
+ pixel_x = 1;
+ pixel_y = 4
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aCS" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aCT" = (
+/obj/machinery/disposal/bin{
+ name = "Hydroponics Mailbox"
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/delivery/white,
+/obj/machinery/requests_console{
+ department = "Hydroponics";
+ name = "Hydroponics RC";
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aCU" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plating,
+/area/space/nearstation)
+"aCV" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aCW" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/disposalpipe/junction,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCX" = (
+/obj/effect/turf_decal/bot,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aCY" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/biogenerator,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aCZ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/electricshock,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aDa" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/crew_quarters/barbershop)
+"aDb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/security/main)
+"aDc" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Barbershop";
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aDd" = (
+/obj/structure/chair/office/dark,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aDe" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aDf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aDg" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Central Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aDh" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Port Bow Primary Hallway"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aDi" = (
+/obj/structure/closet/secure_closet/evidence,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aDj" = (
+/obj/structure/closet/wardrobe/green,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aDk" = (
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/machinery/door/window/eastright{
+ name = "Bathroom Stall"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aDl" = (
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aDm" = (
+/obj/structure/table,
+/obj/machinery/recharger,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"aDn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/transit_tube/horizontal,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/bridge)
+"aDo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aDp" = (
+/obj/effect/spawner/structure/window,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/barbershop)
+"aDq" = (
+/obj/structure/table,
+/obj/machinery/reagentgrinder,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aDr" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Civilian Wing Hallway"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aDs" = (
+/obj/effect/turf_decal/tile/red,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aDt" = (
+/obj/structure/closet{
+ name = "Evidence Closet 1"
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aDu" = (
+/obj/structure/closet{
+ name = "Evidence Closet 2"
+ },
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aDv" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aDw" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aDx" = (
+/obj/structure/closet/crate,
+/obj/item/gun/ballistic/shotgun/toy/unrestricted,
+/obj/item/gun/ballistic/shotgun/toy/unrestricted,
+/obj/item/toy/gun,
+/obj/item/toy/sword,
+/obj/item/toy/sword,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"aDy" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aDz" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/sign/departments/restroom{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aDA" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aDB" = (
+/obj/structure/closet{
+ name = "Evidence Closet 3"
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aDC" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aDD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"aDE" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aDF" = (
+/obj/structure/table,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aDG" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aDH" = (
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aDI" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aDJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aDK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aDL" = (
+/obj/structure/closet{
+ name = "Evidence Closet 4"
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aDM" = (
+/turf/closed/wall,
+/area/maintenance/central)
+"aDN" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aDO" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aDP" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aDQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aDR" = (
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aDS" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/barbershop)
+"aDT" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aDU" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aDV" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aDW" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aDX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aDY" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aDZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aEa" = (
+/obj/structure/transit_tube/horizontal,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aEb" = (
+/obj/structure/transit_tube/crossing/horizontal,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aEc" = (
+/obj/structure/closet{
+ name = "Evidence Closet 5"
+ },
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aEd" = (
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aEe" = (
+/obj/structure/transit_tube/horizontal,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aEf" = (
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Satellite Exterior - Port Bow";
+ dir = 1;
+ network = list("tcomms")
+ },
+/turf/open/space/basic,
+/area/space)
+"aEg" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"aEh" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/airlock/maintenance{
+ name = "Fore Maintenance";
+ req_one_access_txt = "12;46"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/port/fore)
+"aEi" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aEj" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aEk" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aEl" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aEm" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aEn" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aEo" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/fashion{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aEp" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aEq" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aEr" = (
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/lighter,
+/obj/item/clothing/glasses/sunglasses{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aEs" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aEt" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aEu" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aEv" = (
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aEw" = (
+/obj/structure/chair,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aEx" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aEy" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aEz" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aEA" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_x = -32
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aEB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aEC" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aED" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/landmark/start/security_officer,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aEE" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aEF" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"aEG" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aEH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aEI" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aEJ" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-08"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aEK" = (
+/obj/structure/table,
+/obj/item/razor,
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aEL" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aEM" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/grown/poppy,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aEN" = (
+/obj/structure/table,
+/obj/machinery/light,
+/obj/item/razor,
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aEO" = (
+/obj/structure/table,
+/obj/item/clothing/accessory/pocketprotector/cosmetology,
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aEP" = (
+/obj/item/twohanded/required/kirbyplants,
+/turf/open/floor/wood,
+/area/crew_quarters/barbershop)
+"aEQ" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/central)
+"aER" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/effect/turf_decal/bot,
+/obj/structure/sign/warning/nosmoking{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aES" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "briglockdown";
+ name = "Brig Lockdown"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aET" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "briglockdown";
+ name = "Brig Lockdown"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aEU" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aEV" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aEW" = (
+/obj/structure/table,
+/obj/machinery/computer/libraryconsole/bookmanagement,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aEX" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/safety_internals{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aEY" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/effect/turf_decal/bot,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aEZ" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Emergency Storage APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFa" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 10
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFb" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFc" = (
+/obj/structure/table,
+/obj/item/clothing/suit/toggle/owlwings,
+/obj/item/clothing/under/owl,
+/obj/item/clothing/mask/gas/owl_mask,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aFd" = (
+/obj/machinery/space_heater,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFe" = (
+/obj/machinery/photocopier,
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aFf" = (
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=serv";
+ location = "sec1"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aFg" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aFh" = (
+/obj/structure/chair/pew/right{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aFi" = (
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=market";
+ location = "sec2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aFj" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hos)
+"aFk" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aFl" = (
+/obj/structure/chair/sofa/right,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/reagent_containers/glass/bottle/diethylamine,
+/obj/structure/sign/poster/official/hydro_ad{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFm" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hos)
+"aFn" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aFo" = (
+/obj/machinery/door/window/southleft{
+ name = "Weightroom"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"aFp" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Bar"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aFq" = (
+/obj/structure/table/wood,
+/obj/item/candle{
+ pixel_x = 4
+ },
+/obj/item/candle{
+ pixel_y = 8
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aFr" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aFs" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aFt" = (
+/obj/structure/table/glass,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aFu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aFv" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/hallway/secondary/entry)
+"aFw" = (
+/obj/structure/table,
+/obj/item/multitool,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/camera{
+ c_tag = "Central Maintenance - Power Monitoring";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aFx" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/item/folder/blue,
+/obj/machinery/door/window/westleft{
+ name = "Hydroponics Desk";
+ req_access_txt = "35"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFy" = (
+/obj/machinery/computer/monitor,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aFz" = (
+/obj/structure/table,
+/obj/item/multitool{
+ pixel_x = 8;
+ pixel_y = 2
+ },
+/obj/item/stack/cable_coil/random,
+/obj/item/crowbar,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aFA" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/landmark/start/botanist,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFB" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFC" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aFD" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=AftH";
+ location = "Hydroponics"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFE" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/techstorage/tcomms,
+/turf/open/floor/circuit,
+/area/bridge)
+"aFF" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aFG" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/security/prison)
+"aFH" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFI" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=4";
+ dir = 4;
+ freq = 1400;
+ location = "Primary Tool Storage"
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aFJ" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/watertank,
+/obj/item/grenade/chem_grenade/antiweed,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFK" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/storage/box/beakers{
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/dropper,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/item/pen/blue{
+ pixel_x = -4;
+ pixel_y = -2
+ },
+/obj/item/pen/red{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/structure/table/glass,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFL" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/chem_master,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aFM" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/crew_quarters/barbershop)
+"aFN" = (
+/obj/structure/flora/junglebush/b,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aFO" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFP" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/security/checkpoint)
+"aFQ" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFR" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFS" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFT" = (
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/closed/wall,
+/area/security/brig)
+"aFU" = (
+/obj/machinery/atmospherics/components/binary/circulator/cold{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aFV" = (
+/obj/structure/window/reinforced,
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/table/wood/fancy,
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"aFW" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aFX" = (
+/obj/structure/filingcabinet,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aFY" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aFZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/closed/wall/r_wall,
+/area/security/prison)
+"aGa" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/transit_tube/horizontal,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"aGb" = (
+/obj/machinery/suit_storage_unit/hos,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aGc" = (
+/obj/item/coin/iron,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"aGd" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aGe" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aGf" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aGg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aGh" = (
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/landmark/start/security_officer,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aGi" = (
+/obj/machinery/porta_turret/ai{
+ dir = 1;
+ req_access = list(16)
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"aGj" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/bot,
+/obj/item/storage/toolbox/emergency{
+ pixel_y = 4
+ },
+/obj/item/analyzer{
+ pixel_y = -4
+ },
+/obj/item/flashlight{
+ pixel_y = 4
+ },
+/obj/item/flashlight{
+ pixel_y = 4
+ },
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aGk" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aGl" = (
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced,
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/item/clipboard,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aGm" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/item/stack/packageWrap,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/machinery/door/window/southright{
+ name = "Hydroponics Desk";
+ req_access_txt = "35"
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aGn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/bridge)
+"aGo" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/screwdriver,
+/obj/item/wrench,
+/obj/item/clothing/gloves/color/fyellow,
+/obj/item/multitool,
+/obj/item/multitool,
+/obj/item/wrench,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aGp" = (
+/mob/living/simple_animal/mouse/brown,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aGq" = (
+/turf/closed/wall/r_wall,
+/area/bridge)
+"aGr" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aGs" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/bridge)
+"aGt" = (
+/obj/machinery/computer/card/minor/hos{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aGu" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aGv" = (
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aGw" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock{
+ name = "Hydroponics Lobby";
+ req_access_txt = "35"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"aGx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aGy" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aGz" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc/highcap/ten_k{
+ areastring = "/area/bridge";
+ name = "Bridge APC";
+ pixel_y = -24
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aGA" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aGB" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aGC" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aGD" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/toilet";
+ dir = 8;
+ name = "Dormitory Toilets APC";
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aGE" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aGF" = (
+/obj/structure/table,
+/obj/effect/turf_decal/bot,
+/obj/item/clothing/glasses/meson,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aGG" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aGH" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medical Booth";
+ req_access_txt = "5"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aGI" = (
+/obj/structure/table,
+/obj/effect/turf_decal/bot,
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = 1
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4
+ },
+/obj/item/reagent_containers/pill/patch/silver_sulf{
+ pixel_x = -4;
+ pixel_y = -1
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4;
+ pixel_y = 1
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4
+ },
+/obj/item/reagent_containers/pill/patch/styptic{
+ pixel_x = 4;
+ pixel_y = -1
+ },
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aGJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aGK" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Head of Security's APC";
+ pixel_y = 24
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Head of Security's Office";
+ pixel_x = 22
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aGL" = (
+/obj/structure/table/wood,
+/obj/item/storage/firstaid/regular,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aGM" = (
+/obj/structure/table/wood,
+/obj/machinery/recharger,
+/obj/structure/sign/warning/securearea{
+ pixel_y = 32
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aGN" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aGO" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aGP" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aGQ" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aGR" = (
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/food/snacks/store/cake/chocolate,
+/obj/machinery/door/poddoor/preopen{
+ id = "kitchenlock";
+ name = "Kitchen Lockup"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/kitchen)
+"aGS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aGT" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aGU" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aGV" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/table,
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aGW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/bridge)
+"aGX" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = -6;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/food/drinks/bottle/vodka,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Bridge";
+ departmentType = 5;
+ name = "Bridge RC";
+ pixel_y = 30
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aGY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -30
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"aGZ" = (
+/turf/open/floor/plasteel/stairs/medium,
+/area/hallway/secondary/entry)
+"aHa" = (
+/obj/structure/disposalpipe/junction/yjunction,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aHb" = (
+/obj/structure/chair,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aHc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"aHd" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aHe" = (
+/obj/structure/sign/poster/official/bless_this_spess{
+ pixel_y = -32
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aHf" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aHg" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aHh" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aHi" = (
+/obj/structure/chair/stool,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aHj" = (
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/external{
+ name = "Starboard Bow Solar Exterior Airlock";
+ req_access_txt = "10;13"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"aHk" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aHl" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aHm" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aHn" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aHo" = (
+/obj/structure/rack,
+/obj/item/circuitboard/machine/telecomms/relay,
+/obj/item/circuitboard/machine/telecomms/server,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aHp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aHq" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/porta_turret/ai{
+ dir = 1;
+ req_access = list(16)
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aHr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/sign/poster/contraband/clown{
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aHs" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/primary/port/fore)
+"aHt" = (
+/turf/closed/wall/r_wall,
+/area/hallway/primary/port/fore)
+"aHu" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aHv" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aHw" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aHx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/closed/wall,
+/area/security/detectives_office)
+"aHy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/security/detectives_office)
+"aHz" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/security/detectives_office)
+"aHA" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/detectives_office)
+"aHB" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/bot,
+/obj/item/storage/toolbox/emergency{
+ pixel_y = 4
+ },
+/obj/item/wrench,
+/obj/item/wrench{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/light/tube,
+/obj/item/light/tube{
+ pixel_x = -2;
+ pixel_y = 2
+ },
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aHC" = (
+/obj/machinery/vending/cola/random,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aHD" = (
+/obj/machinery/modular_computer/console/preset/engineering,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aHE" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = -6;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aHF" = (
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aHG" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aHH" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aHI" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aHJ" = (
+/obj/machinery/light,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aHK" = (
+/obj/structure/piano,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aHL" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/item/stack/medical/gauze,
+/obj/item/reagent_containers/blood,
+/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/ointment,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aHM" = (
+/turf/open/floor/plasteel,
+/area/bridge)
+"aHN" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Interrogation Room";
+ pixel_x = 22
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aHO" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aHP" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hos)
+"aHQ" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aHR" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Security Office APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aHS" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aHT" = (
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aHU" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/mineral_door/woodrustic{
+ name = "Nature Preserve"
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aHV" = (
+/obj/structure/flora/junglebush/large,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aHW" = (
+/obj/structure/chair/comfy/brown,
+/obj/effect/landmark/start/head_of_security,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aHX" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aHY" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/cryopod)
+"aHZ" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/machinery/door/window/eastleft{
+ name = "Security Office Desk";
+ req_one_access_txt = "63"
+ },
+/obj/item/folder/red,
+/obj/item/stamp/denied{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/stamp,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aIa" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aIb" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/junction/flip,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIc" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aId" = (
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIe" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aIf" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aIg" = (
+/obj/structure/chair/office/dark{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aIh" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aIi" = (
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIj" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIk" = (
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIl" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aIm" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk,
+/obj/machinery/requests_console{
+ department = "Kitchen";
+ departmentType = 2;
+ name = "Kitchen RC";
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"aIn" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/security/prison)
+"aIo" = (
+/obj/effect/decal/cleanable/oil,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aIp" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIq" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aIr" = (
+/obj/structure/table/reinforced,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/item/folder/red,
+/obj/item/stamp/hos,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aIs" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aIt" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIu" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIv" = (
+/obj/machinery/cryopod{
+ dir = 8
+ },
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"aIw" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIx" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIz" = (
+/obj/machinery/cryopod{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aIA" = (
+/obj/machinery/computer/med_data{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aIB" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIC" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aID" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aIE" = (
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aIF" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aIG" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/security/detectives_office)
+"aIH" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aII" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aIJ" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIK" = (
+/obj/structure/table/wood,
+/obj/item/camera,
+/obj/item/folder,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aIL" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aIM" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aIN" = (
+/obj/structure/bed/roller,
+/obj/machinery/iv_drip,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aIO" = (
+/obj/structure/sign/directions/medical{
+ dir = 8;
+ pixel_y = -24
+ },
+/obj/structure/sign/directions/evac{
+ dir = 1;
+ pixel_y = -32
+ },
+/obj/structure/sign/directions/supply{
+ dir = 8;
+ pixel_y = -40
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIP" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aIQ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aIR" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/botanist,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aIS" = (
+/obj/effect/landmark/start/ai,
+/obj/machinery/button/door{
+ id = "AIShutter";
+ layer = 3.6;
+ name = "AI Core Shutter Control";
+ pixel_x = 24
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"aIT" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aIU" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aIV" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Interrogation Monitoring";
+ req_access_txt = "63"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aIW" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIX" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"aIY" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aIZ" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aJa" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aJb" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aJc" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aJd" = (
+/turf/closed/wall,
+/area/chapel/office)
+"aJe" = (
+/obj/machinery/computer/crew{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aJf" = (
+/obj/machinery/camera{
+ c_tag = "Chapel - Aft";
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aJg" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aJh" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aJi" = (
+/obj/structure/bodycontainer/morgue,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aJj" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aJk" = (
+/obj/structure/table/wood,
+/obj/item/candle,
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aJl" = (
+/obj/structure/bodycontainer/crematorium{
+ id = "foo"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aJm" = (
+/obj/machinery/light,
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aJn" = (
+/obj/structure/chair/office/dark{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aJo" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aJp" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/camera/motion{
+ c_tag = "AI";
+ network = list("minisat")
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"aJq" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/table/glass,
+/obj/item/storage/box/beakers{
+ pixel_y = 4
+ },
+/obj/item/clothing/glasses/science,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aJr" = (
+/obj/structure/sign/directions/command{
+ dir = 8;
+ pixel_y = -32
+ },
+/obj/structure/sign/directions/security{
+ dir = 8;
+ pixel_y = -24
+ },
+/obj/structure/sign/directions/science{
+ dir = 8;
+ pixel_y = -40
+ },
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aJs" = (
+/obj/structure/noticeboard{
+ name = "Hydroponics Requests Board";
+ pixel_y = 28
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aJt" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/toy/figure/syndie,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aJu" = (
+/obj/structure/chair/comfy/brown,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aJv" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aJw" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aJx" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aJy" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs/right,
+/area/security/brig)
+"aJz" = (
+/obj/structure/chair/comfy/brown,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aJA" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Port Bow Hall - Dorms Access";
+ network = list("ss13","rd")
+ },
+/obj/structure/sign/poster/official/random{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aJB" = (
+/obj/machinery/computer/security/mining{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aJC" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aJD" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/item/storage/belt/medical,
+/obj/item/clothing/suit/space/hardsuit/medical,
+/obj/item/tank/internals/emergency_oxygen,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"aJE" = (
+/obj/structure/closet/secure_closet/medical2,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"aJF" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aJG" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/bridge)
+"aJH" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aJI" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/item/shovel/spade,
+/obj/item/wrench,
+/obj/item/cultivator,
+/obj/item/crowbar,
+/obj/item/wirecutters,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/hatchet,
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/hydroponics";
+ name = "Hydroponics APC";
+ pixel_y = -28
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"aJJ" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aJK" = (
+/obj/structure/filingcabinet,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aJL" = (
+/turf/open/floor/circuit,
+/area/bridge)
+"aJM" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/circuit,
+/area/bridge)
+"aJN" = (
+/obj/machinery/camera{
+ c_tag = "Security - Prison Aft";
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aJO" = (
+/obj/structure/chair/stool,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aJP" = (
+/obj/structure/chair/comfy/teal,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/sign/departments/botany{
+ pixel_y = 32
+ },
+/obj/machinery/camera{
+ c_tag = "Civilian Wing Hallway - Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aJQ" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aJR" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"aJS" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aJT" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aJU" = (
+/obj/machinery/vending/cigarette,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aJV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/security/prison)
+"aJW" = (
+/obj/machinery/cryopod{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"aJX" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/machinery/modular_computer/console/preset/civilian{
+ dir = 8
+ },
+/turf/open/floor/circuit,
+/area/bridge)
+"aJY" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/storage/box/lights/mixed,
+/obj/item/stack/sheet/metal/fifty{
+ pixel_x = -3;
+ pixel_y = -7
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aJZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aKa" = (
+/obj/structure/chair/stool,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aKb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/secondary/civilian)
+"aKc" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aKd" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Interrogation";
+ req_access_txt = "63"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aKe" = (
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"aKf" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/storage/emergency/generic)
+"aKg" = (
+/turf/open/floor/plasteel/stairs/right,
+/area/hallway/secondary/entry)
+"aKh" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aKi" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aKj" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aKk" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/effect/landmark/start/detective,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aKl" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aKm" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Emergency Storage"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aKn" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"aKo" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aKp" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aKq" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Chapel"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/chapel/main)
+"aKr" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/airlock/public/glass{
+ name = "Emergency Storage"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/storage/emergency/generic)
+"aKs" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/obj/item/reagent_containers/food/drinks/drinkingglass,
+/obj/item/reagent_containers/rag,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aKt" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aKu" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/storage/emergency/generic)
+"aKv" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aKw" = (
+/obj/structure/table,
+/obj/item/storage/pill_bottle/dice,
+/obj/item/toy/cards/deck,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aKx" = (
+/obj/machinery/computer/security{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aKy" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/flasher/portable,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aKz" = (
+/turf/closed/wall,
+/area/storage/emergency/generic)
+"aKA" = (
+/obj/structure/table/wood,
+/obj/item/storage/box/ids,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aKB" = (
+/obj/structure/chair/comfy/brown{
+ dir = 8
+ },
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aKC" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Prison Wing";
+ req_access_txt = "2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aKD" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aKE" = (
+/obj/structure/table/wood,
+/obj/item/storage/fancy/donut_box,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aKF" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Telecommunications Control Room";
+ req_access_txt = "19;61"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aKG" = (
+/obj/structure/table/wood,
+/obj/item/storage/toolbox/emergency,
+/obj/item/crowbar/red,
+/obj/item/beacon,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aKH" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/white/full,
+/obj/machinery/camera{
+ c_tag = "Bridge - Fore";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aKI" = (
+/obj/structure/closet/cabinet,
+/obj/item/screwdriver,
+/obj/item/storage/crayons,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aKJ" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aKK" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/machinery/vending/snack/blue,
+/turf/open/floor/plasteel,
+/area/bridge)
+"aKL" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aKM" = (
+/obj/machinery/camera{
+ c_tag = "Chapel - Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aKN" = (
+/obj/structure/chair/pew/left{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aKO" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/stairs/left,
+/area/security/brig)
+"aKP" = (
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/bridge)
+"aKQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/chapel/office)
+"aKR" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aKS" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aKT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"aKU" = (
+/obj/structure/bodycontainer/morgue,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aKV" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aKW" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aKX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Chapel Morgue";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aKY" = (
+/obj/structure/chair/sofa/left,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/status_display{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aKZ" = (
+/obj/structure/closet/secure_closet/medical1,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"aLa" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/heads/hos)
+"aLb" = (
+/obj/item/toy/prize/honk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"aLc" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Central Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/port/fore)
+"aLd" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLe" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLf" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aLg" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aLh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLi" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Central Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aLj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLk" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/security/brig)
+"aLl" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/vending/autodrobe/all_access,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aLm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aLn" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction/flip,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aLo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLp" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aLq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLs" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aLt" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLu" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Visitation Maintainance";
+ req_one_access_txt = "63"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/security/main)
+"aLv" = (
+/obj/machinery/computer/cryopod{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aLw" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-06"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aLx" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aLy" = (
+/obj/machinery/modular_computer/console/preset/command{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aLz" = (
+/obj/machinery/newscaster{
+ pixel_y = -28
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLA" = (
+/obj/item/candle{
+ pixel_x = -4;
+ pixel_y = -4
+ },
+/obj/item/candle{
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aLB" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aLC" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLD" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aLE" = (
+/obj/machinery/computer/communications{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aLF" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aLG" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aLH" = (
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"aLI" = (
+/obj/structure/table/wood,
+/obj/item/storage/box/PDAs,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aLJ" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aLK" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/bridge)
+"aLL" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/security/brig)
+"aLM" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aLN" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/morgue{
+ name = "Confession Booth"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
+"aLO" = (
+/obj/item/toy/talking/owl,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aLP" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = -26
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aLQ" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/machinery/vending/coffee,
+/turf/open/floor/plasteel,
+/area/bridge)
+"aLR" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/storage/box/bodybags{
+ pixel_y = 4
+ },
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aLS" = (
+/obj/structure/disposaloutlet{
+ dir = 8;
+ name = "Corpse Outlet"
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/delivery/red,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aLT" = (
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aLU" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/vending/assist,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aLV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/camera{
+ c_tag = "Central Maintenance - Aft";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aLW" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aLX" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/recharger,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aLY" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aLZ" = (
+/mob/living/simple_animal/chicken{
+ desc = "At least it isn't a court kangaroo.";
+ name = "amusing cluck";
+ real_name = "amusing cluck"
+ },
+/turf/open/floor/carpet,
+/area/security/courtroom)
+"aMa" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aMb" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMc" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 4;
+ sortType = 20
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMd" = (
+/obj/machinery/vending/wardrobe/chap_wardrobe,
+/obj/machinery/camera{
+ c_tag = "Chapel Office";
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aMe" = (
+/obj/machinery/door/window/northleft{
+ name = "Game Room"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aMf" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aMh" = (
+/obj/structure/table/reinforced,
+/obj/machinery/recharger,
+/obj/item/reagent_containers/food/drinks/bottle/champagne,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Head of Security's Desk";
+ departmentType = 5;
+ name = "Head of Security RC";
+ pixel_y = -32
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"aMi" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aMj" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"aMk" = (
+/obj/structure/closet/crate/coffin,
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"aMl" = (
+/obj/effect/landmark/start/bartender,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"aMm" = (
+/obj/machinery/computer/med_data,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"aMn" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/sign/warning{
+ name = "\improper WARNING: MOVING MACHINERY"
+ },
+/turf/closed/wall,
+/area/maintenance/department/chapel)
+"aMo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"aMp" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aMq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aMr" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Civilian Wing Hallway - Port"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMs" = (
+/turf/closed/wall,
+/area/maintenance/department/chapel)
+"aMt" = (
+/obj/machinery/atmospherics/components/unary/tank/air,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"aMu" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aMv" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel{
+ dir = 8;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aMw" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aMx" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aMy" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aMz" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"aMA" = (
+/turf/closed/wall,
+/area/janitor)
+"aMB" = (
+/turf/closed/wall/r_wall,
+/area/janitor)
+"aMC" = (
+/obj/structure/table/wood,
+/obj/item/kitchen/fork,
+/obj/item/reagent_containers/food/snacks/salad/herbsalad,
+/obj/item/candle{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aMD" = (
+/turf/closed/wall/rust,
+/area/maintenance/disposal)
+"aME" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 4;
+ sortType = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMF" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aMG" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Central Starboard Maintenance";
+ dir = 8;
+ pixel_y = -22
+ },
+/mob/living/simple_animal/hostile/retaliate/bat,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"aMH" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aMI" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal)
+"aMJ" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/obj/effect/landmark/start/assistant,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aMK" = (
+/obj/vehicle/ridden/wheelchair,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aML" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/chapel/office)
+"aMM" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/sign/poster/official/help_others{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMN" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aMO" = (
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMP" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = -6;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/food/drinks/bottle/wine,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aMQ" = (
+/obj/machinery/computer/security{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aMR" = (
+/obj/effect/landmark/start/chaplain,
+/obj/structure/chair/comfy/brown{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aMS" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aMT" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMU" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/pen/fountain,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"aMV" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aMW" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aMX" = (
+/obj/structure/chair/comfy/brown{
+ buildstackamount = 0;
+ dir = 1
+ },
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aMY" = (
+/obj/structure/closet,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aMZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aNa" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aNb" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aNc" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/item/mop,
+/obj/item/storage/box/mousetraps,
+/obj/item/storage/box/mousetraps,
+/obj/item/reagent_containers/spray/cleaner,
+/obj/item/reagent_containers/glass/bucket,
+/turf/open/floor/plasteel,
+/area/janitor)
+"aNd" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/paper_bin,
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aNe" = (
+/obj/structure/closet/crate,
+/obj/item/reagent_containers/food/snacks/spaghetti,
+/obj/item/reagent_containers/food/snacks/spaghetti,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"aNf" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/clipboard,
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aNg" = (
+/obj/machinery/computer/cargo/request{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aNh" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"aNi" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aNj" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 2
+ },
+/obj/structure/table,
+/obj/item/book/manual/wiki/security_space_law,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aNk" = (
+/obj/structure/table/glass,
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/pen{
+ pixel_y = 8
+ },
+/obj/item/pen,
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aNl" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/obj/item/reagent_containers/food/condiment/pack/ketchup{
+ pixel_x = -2;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/food/condiment/pack/mustard{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/candle{
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aNm" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aNn" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/reagent_containers/food/drinks/shaker,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aNo" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/aiModule/supplied/oxygen{
+ pixel_x = 2;
+ pixel_y = 10
+ },
+/obj/item/aiModule/supplied/quarantine{
+ pixel_x = 1;
+ pixel_y = 8
+ },
+/obj/item/aiModule/zeroth/oneHuman{
+ pixel_y = 4
+ },
+/obj/effect/spawner/lootdrop/aimodule_harmful{
+ pixel_x = -1;
+ pixel_y = 2
+ },
+/obj/item/aiModule/supplied/protectStation{
+ pixel_x = -2
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aNp" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/vending/cola/random,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aNq" = (
+/obj/machinery/door/window/northright{
+ name = "Chapel Office";
+ req_access_txt = "22"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aNr" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aNs" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aNt" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aNu" = (
+/obj/structure/chair/comfy/brown{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/bar)
+"aNv" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aNw" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"aNx" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/securearea,
+/turf/open/floor/plating,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"aNy" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aNz" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/door/window/northleft{
+ name = "AI Chamber";
+ req_one_access_txt = "65"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aNA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Security Maintenance";
+ req_access_txt = "2"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/security/main)
+"aNB" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Port Bow Primary Hallway"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aNC" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Control Room";
+ network = list("tcomms");
+ pixel_x = 22
+ },
+/obj/machinery/power/apc/highcap/fifteen_k{
+ areastring = "area/tcommsat/computer";
+ dir = 1;
+ name = "Telecomms Server APC";
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aND" = (
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aNE" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aNF" = (
+/obj/machinery/computer/secure_data{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aNG" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 2
+ },
+/obj/structure/table,
+/obj/item/taperecorder,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aNH" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Exterior Engineering Access";
+ req_access_txt = "11;13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aNI" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aNJ" = (
+/obj/structure/table,
+/obj/item/flashlight/lamp,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aNK" = (
+/obj/structure/sign/nanotrasen{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aNL" = (
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aNM" = (
+/obj/machinery/requests_console{
+ department = "Security";
+ departmentType = 5;
+ name = "Security RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aNN" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aNO" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aNP" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aNQ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/securearea,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"aNR" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hop)
+"aNS" = (
+/obj/structure/chair,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aNT" = (
+/turf/closed/wall/r_wall,
+/area/teleporter)
+"aNU" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aNV" = (
+/obj/structure/table,
+/obj/item/locator,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aNW" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"aNX" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/item/instrument/guitar,
+/obj/machinery/camera{
+ c_tag = "Bar - Port";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aNY" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=sec2";
+ location = "bar"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aNZ" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aOa" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "E.V.A. Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aOb" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "E.V.A. Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aOc" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aOd" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aOe" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"aOf" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aOg" = (
+/obj/structure/chair/comfy/teal{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aOh" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aOi" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aOj" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/vending/snack/random,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aOk" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/effect/turf_decal/delivery,
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOl" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOm" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/structure/table/wood,
+/obj/item/toy/windupToolbox,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aOn" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aOo" = (
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/hallway/primary/port/fore";
+ dir = 4;
+ name = "Port Bow Primary Hallway APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aOp" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1;
+ sortType = 31
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aOq" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/effect/turf_decal/delivery,
+/obj/item/extinguisher,
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOr" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/sign/warning/securearea{
+ pixel_x = -32
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-21";
+ pixel_y = 3
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/bridge)
+"aOs" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants,
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/bridge)
+"aOt" = (
+/obj/structure/chair/stool,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
+"aOu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
+"aOv" = (
+/obj/structure/table/wood,
+/obj/item/clipboard,
+/obj/item/gavelblock,
+/obj/item/gavelhammer,
+/obj/machinery/camera{
+ c_tag = "Courtroom";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/carpet,
+/area/security/courtroom)
+"aOw" = (
+/obj/structure/table/wood,
+/obj/item/clipboard,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aOx" = (
+/obj/structure/table/reinforced,
+/obj/item/grenade/chem_grenade/smart_metal_foam{
+ pixel_x = 4
+ },
+/obj/item/radio,
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOy" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/vending/cigarette,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aOz" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Port Bow Hall";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aOA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/maintenance/department/chapel)
+"aOB" = (
+/turf/closed/wall/r_wall,
+/area/security/courtroom)
+"aOC" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aOD" = (
+/obj/machinery/door/airlock{
+ name = "Catering";
+ req_one_access_txt = "25;28"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"aOE" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aOF" = (
+/obj/structure/closet/crate/freezer/surplus_limbs,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"aOG" = (
+/obj/structure/chair/comfy/teal{
+ dir = 1
+ },
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aOH" = (
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aOI" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aOJ" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/fitness/cogpool)
+"aOK" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"aOL" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/security/brig)
+"aOM" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aON" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aOO" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aOP" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/engine/gravity_generator)
+"aOQ" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOR" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOS" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aOT" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/cogpool)
+"aOU" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"aOV" = (
+/turf/open/floor/plasteel/stairs,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOW" = (
+/obj/structure/closet/secure_closet/security/sec,
+/obj/effect/turf_decal/bot,
+/obj/item/clothing/accessory/armband/hydro,
+/obj/item/encryptionkey/headset_service,
+/obj/item/clothing/under/rank/vice,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aOX" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Pool"
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/white/side,
+/area/crew_quarters/fitness/cogpool)
+"aOY" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aOZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/bridge)
+"aPa" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Pool"
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/side,
+/area/crew_quarters/fitness/cogpool)
+"aPb" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"aPc" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aPd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aPe" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aPf" = (
+/obj/machinery/computer/upload/ai{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aPg" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aPh" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aPi" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/structure/mirror{
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aPj" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aPk" = (
+/obj/effect/landmark/start/depsec/science,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aPl" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPm" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aPn" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/landmark/start/depsec/medical,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aPo" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aPp" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aPq" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aPr" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"aPs" = (
+/obj/structure/closet/secure_closet/hop,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit,
+/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"aPt" = (
+/obj/structure/table/wood,
+/obj/machinery/recharger,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"aPu" = (
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/bridge)
+"aPv" = (
+/obj/machinery/door/airlock/security/glass{
+ name = "Equipment Room";
+ req_access_txt = "1"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aPw" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Central Hall - Courtroom Access";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"aPx" = (
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPy" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPz" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aPA" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPB" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/paper/guides/jobs/security/courtroom,
+/obj/item/pen,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/security/courtroom)
+"aPC" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPD" = (
+/obj/machinery/door/airlock/security/glass{
+ name = "Equipment Room";
+ req_access_txt = "1"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aPE" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/item/toy/talking/AI{
+ name = "Nanotrasen-brand toy AI";
+ pixel_y = 6
+ },
+/obj/item/clothing/glasses/meson,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aPF" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/locker)
+"aPG" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ sortType = 21
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPH" = (
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp/green,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/security/courtroom)
+"aPI" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aPJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=bar";
+ location = "serv"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPK" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aPL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPM" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aPN" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/space/nearstation)
+"aPO" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/visible{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aPP" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aPQ" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aPR" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aPS" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aPT" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-02"
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aPU" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/machinery/camera{
+ c_tag = "Bridge - Port Quarter";
+ dir = 1
+ },
+/obj/machinery/keycard_auth{
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aPV" = (
+/obj/machinery/photocopier,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aPW" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aPX" = (
+/obj/structure/table,
+/obj/effect/turf_decal/bot,
+/obj/item/storage/fancy/donut_box,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aPY" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aPZ" = (
+/obj/structure/window/plasma/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced/tinted,
+/obj/structure/table,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aQa" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"aQb" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aQc" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aQd" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aQe" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aQf" = (
+/obj/structure/table,
+/obj/structure/bedsheetbin,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aQg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aQh" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aQi" = (
+/obj/structure/table,
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aQj" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"aQk" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aQl" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aQm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aQn" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"aQo" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/security/courtroom)
+"aQp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aQq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"aQr" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/space/nearstation)
+"aQs" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aQt" = (
+/obj/machinery/pool/controller,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQu" = (
+/obj/structure/table,
+/obj/item/toy/beach_ball{
+ pixel_y = 12
+ },
+/obj/item/clothing/glasses/sunglasses{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQv" = (
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"aQw" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aQx" = (
+/obj/machinery/camera{
+ c_tag = "Engine Room - Port Bow"
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aQy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/chapel/main)
+"aQz" = (
+/obj/structure/chair/comfy/teal,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQA" = (
+/obj/structure/chair/stool,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aQB" = (
+/obj/structure/table,
+/obj/item/clothing/glasses/sunglasses{
+ pixel_y = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQC" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aQD" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aQE" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aQF" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"aQG" = (
+/obj/structure/closet/emcloset,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aQH" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aQI" = (
+/obj/structure/chair/comfy/teal,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQJ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aQK" = (
+/obj/structure/closet/firecloset,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aQL" = (
+/turf/closed/wall,
+/area/maintenance/port/central)
+"aQM" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aQN" = (
+/obj/structure/chair/comfy/brown,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aQO" = (
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aQP" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-02"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQQ" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQR" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQS" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aQT" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Thermo-Electric Generator";
+ req_one_access_txt = "10;24"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aQU" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"aQV" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aQW" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/captain)
+"aQX" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aQY" = (
+/obj/structure/window/plasma/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced/tinted,
+/obj/structure/table,
+/obj/item/toy/beach_ball/holoball/dodgeball,
+/obj/item/toy/beach_ball/holoball/dodgeball,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aQZ" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock{
+ name = "Service Hallway";
+ req_one_access_txt = "25;26;28;35"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"aRa" = (
+/obj/structure/table/wood,
+/obj/item/clothing/gloves/color/yellow,
+/obj/item/lighter,
+/obj/item/multitool{
+ pixel_x = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aRb" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"aRc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/crew_quarters/fitness/cogpool)
+"aRd" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRe" = (
+/obj/structure/table/wood,
+/obj/item/storage/secure/briefcase,
+/obj/item/assembly/flash,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aRf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRh" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aRi" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRj" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/obj/machinery/sleep_console{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aRk" = (
+/obj/structure/disposalpipe/junction/yjunction,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRl" = (
+/obj/structure/table/wood,
+/obj/item/clothing/gloves/color/yellow,
+/obj/item/restraints/handcuffs,
+/obj/item/laser_pointer/blue,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aRm" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aRn" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRo" = (
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"aRp" = (
+/obj/structure/sign/warning/fire,
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aRq" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aRr" = (
+/mob/living/simple_animal/chicken{
+ name = "Kentucky";
+ real_name = "Kentucky"
+ },
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aRs" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRt" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRu" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aRv" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_x = -32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aRw" = (
+/obj/vehicle/ridden/secway,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/item/key/security,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"aRx" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aRy" = (
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"aRz" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aRA" = (
+/obj/structure/table/optable,
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/reagent_containers/blood/random,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aRB" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aRC" = (
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = 32
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aRD" = (
+/turf/closed/wall/r_wall/rust,
+/area/engine/gravity_generator)
+"aRE" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aRF" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"aRG" = (
+/obj/machinery/power/generator,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aRH" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/blobstart,
+/obj/machinery/camera{
+ c_tag = "Central Port Maintenance - Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aRI" = (
+/obj/structure/rack,
+/obj/item/extinguisher,
+/obj/item/crowbar,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aRJ" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aRK" = (
+/obj/structure/sign/departments/holy{
+ pixel_y = -32
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRL" = (
+/mob/living/simple_animal/crab/kreb,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aRM" = (
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"aRN" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRO" = (
+/obj/structure/disposalpipe/junction/yjunction,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aRP" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRQ" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aRR" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aRS" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-10"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aRT" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aRU" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/main)
+"aRV" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aRW" = (
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aRX" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aRY" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"aRZ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aSa" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aSb" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/corner,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aSc" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aSd" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aSe" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Chapel"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/chapel/main)
+"aSf" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aSg" = (
+/obj/machinery/power/apc{
+ name = "Security Maintainance APC";
+ pixel_y = -24
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aSh" = (
+/obj/structure/table,
+/obj/item/storage/fancy/donut_box,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aSi" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aSj" = (
+/obj/structure/target_stake,
+/obj/item/target/syndicate,
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"aSk" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aSl" = (
+/obj/machinery/computer/teleporter{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"aSm" = (
+/obj/machinery/teleport/station,
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"aSn" = (
+/obj/machinery/teleport/hub,
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"aSo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aSp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aSq" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aSr" = (
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aSs" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#d1dfff"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/camera{
+ c_tag = "Bridge Access";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aSt" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/department/eva)
+"aSu" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aSv" = (
+/turf/closed/wall,
+/area/space/nearstation)
+"aSw" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aSx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aSy" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aSz" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aSA" = (
+/obj/structure/closet/secure_closet/medical2,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aSB" = (
+/obj/machinery/door/airlock/command{
+ name = "Bridge";
+ req_access_txt = "19"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aSC" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aSD" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aSE" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aSF" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/surgical_drapes,
+/obj/item/scalpel,
+/obj/item/circular_saw{
+ pixel_y = 16
+ },
+/obj/item/hemostat,
+/obj/item/retractor,
+/obj/item/surgicaldrill,
+/obj/item/cautery,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aSG" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aSH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"aSI" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aSJ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/heads/captain)
+"aSK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aSL" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aSM" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aSN" = (
+/obj/structure/table,
+/obj/machinery/computer/secure_data/laptop{
+ dir = 8;
+ pixel_x = -2;
+ pixel_y = 2
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aSO" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aSP" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aSQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aSR" = (
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aSS" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=4";
+ dir = 4;
+ freq = 1400;
+ location = "Chapel"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aST" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"aSU" = (
+/obj/structure/reagent_dispensers/beerkeg,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = -26
+ },
+/obj/machinery/requests_console{
+ department = "Bar";
+ departmentType = 2;
+ name = "Bar RC";
+ pixel_y = -30
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"aSV" = (
+/obj/item/toy/talking/AI,
+/obj/structure/grille/broken,
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"aSW" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aSX" = (
+/obj/machinery/washing_machine,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aSY" = (
+/obj/machinery/vending/medical,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aSZ" = (
+/obj/structure/chair/stool,
+/obj/machinery/light,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aTa" = (
+/obj/structure/window/plasma/reinforced{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aTb" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Central Hall - Starboard";
+ pixel_x = 22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aTc" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"aTd" = (
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES"
+ },
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"aTe" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aTf" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aTg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aTh" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/power/apc{
+ name = "AI Upload Foyer APC";
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"aTi" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aTj" = (
+/obj/machinery/pool/filter{
+ pixel_y = 16
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/cogpool)
+"aTk" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aTl" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aTm" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aTn" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/department/eva";
+ dir = 8;
+ name = "EVA Maintenance APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aTo" = (
+/obj/effect/landmark/start/captain,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"aTp" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/landmark/start/security_officer,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aTq" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aTr" = (
+/obj/structure/table/wood,
+/obj/machinery/recharger,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"aTs" = (
+/turf/closed/wall,
+/area/maintenance/department/eva)
+"aTt" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/heads/hop)
+"aTu" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command/glass{
+ name = "Bridge Access";
+ req_access_txt = "19"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aTv" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/cogpool)
+"aTw" = (
+/obj/structure/pool/ladder{
+ dir = 2;
+ pixel_y = 24
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/cogpool)
+"aTx" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_y = -32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aTy" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_y = -32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aTz" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aTA" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aTB" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aTC" = (
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aTD" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aTE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"aTF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aTG" = (
+/turf/closed/wall,
+/area/router/public)
+"aTH" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aTI" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Public Router"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/router/public)
+"aTJ" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/pen/fourcolor,
+/obj/item/pen/fountain{
+ pixel_x = 2;
+ pixel_y = 6
+ },
+/obj/item/stamp/hop,
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"aTK" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Public Router"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/router/public)
+"aTL" = (
+/obj/machinery/cryopod{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Cryogenics";
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"aTM" = (
+/turf/closed/wall/r_wall,
+/area/router/public)
+"aTN" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = -26
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-14"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aTO" = (
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aTP" = (
+/obj/machinery/status_display/ai,
+/turf/closed/wall/r_wall,
+/area/security/courtroom)
+"aTQ" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Thermo-Electric Generator"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"aTR" = (
+/obj/structure/table,
+/obj/item/paper_bin,
+/obj/item/stamp,
+/obj/item/stamp/denied{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/pen/red,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aTS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aTT" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aTU" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aTV" = (
+/turf/closed/wall,
+/area/gateway)
+"aTW" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aTX" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"aTY" = (
+/obj/structure/chair,
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aTZ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aUa" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aUb" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aUc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aUd" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aUe" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aUf" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aUg" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aUh" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aUi" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/gateway)
+"aUj" = (
+/obj/structure/table,
+/obj/item/stack/packageWrap,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/item/destTagger,
+/obj/machinery/requests_console{
+ department = "Public Router";
+ name = "Public Router RC";
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aUk" = (
+/turf/closed/wall/r_wall,
+/area/gateway)
+"aUl" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/router/public)
+"aUm" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aUn" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/computer/cargo/request,
+/turf/open/floor/plasteel,
+/area/router/public)
+"aUo" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"aUp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/closet/crate/science,
+/turf/open/floor/plasteel,
+/area/gateway)
+"aUq" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/lounge/jazz)
+"aUr" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 10
+ },
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aUs" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aUt" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aUu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/rack,
+/turf/open/floor/plasteel,
+/area/gateway)
+"aUv" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/landmark/start/security_officer,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aUw" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Jazz Lounge"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"aUx" = (
+/obj/machinery/door/window/northright{
+ name = "Game Room"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"aUy" = (
+/obj/structure/table,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/official/do_not_question{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aUz" = (
+/obj/machinery/computer/telecomms/server{
+ dir = 4;
+ network = "tcommsat"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/circuit,
+/area/bridge)
+"aUA" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aUB" = (
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp,
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"aUC" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aUD" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aUE" = (
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aUF" = (
+/obj/machinery/computer/bounty{
+ dir = 1
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"aUG" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aUH" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/light/small,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aUI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aUJ" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aUK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/warning/electricshock{
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aUL" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aUM" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aUN" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aUO" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/highcap/ten_k{
+ areastring = "/area/teleporter";
+ dir = 4;
+ name = "Teleporter Room APC";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"aUP" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aUQ" = (
+/obj/structure/table,
+/obj/item/modular_computer/laptop/preset/civilian,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aUR" = (
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 8;
+ icon_state = "intact"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aUS" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"aUT" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aUU" = (
+/obj/machinery/pool/drain,
+/turf/open/pool,
+/area/crew_quarters/fitness/cogpool)
+"aUV" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aUW" = (
+/obj/structure/pool/Lboard,
+/turf/open/pool,
+/area/crew_quarters/fitness/cogpool)
+"aUX" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aUY" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aUZ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"aVa" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/security/detectives_office)
+"aVb" = (
+/obj/structure/pool/Rboard,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aVc" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "applebush"
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aVd" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aVe" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aVf" = (
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aVg" = (
+/obj/machinery/computer/cryopod{
+ pixel_y = 28
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"aVh" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/closet/emcloset,
+/turf/open/floor/plasteel,
+/area/gateway)
+"aVi" = (
+/obj/effect/turf_decal/stripes/corner,
+/turf/open/floor/plasteel,
+/area/router/public)
+"aVj" = (
+/obj/machinery/vending/cola/random,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aVk" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/gateway)
+"aVl" = (
+/obj/machinery/vending/snack/random,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aVm" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aVn" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aVo" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aVp" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "Station Intercom (Common)";
+ pixel_x = 28
+ },
+/obj/machinery/camera{
+ c_tag = "Public Router";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/button/massdriver{
+ id = "public_out";
+ pixel_x = 24;
+ pixel_y = -6
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/machinery/button/door{
+ id = "pubblock";
+ name = "Router Access Control";
+ pixel_x = 24;
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aVq" = (
+/obj/structure/table,
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"aVr" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/item/storage/box/cups,
+/obj/structure/sign/poster/official/here_for_your_safety{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"aVs" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/lounge/jazz)
+"aVt" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aVu" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aVv" = (
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aVw" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aVx" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"aVy" = (
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aVz" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aVA" = (
+/obj/machinery/cryopod{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"aVB" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aVC" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/maintenance/central)
+"aVD" = (
+/obj/machinery/vending/clothing,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"aVE" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Dormitory Toilets"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"aVF" = (
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"aVG" = (
+/obj/machinery/ore_silo,
+/obj/effect/turf_decal/bot_white,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/ai_monitored/nuke_storage";
+ dir = 4;
+ name = "Vault APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aVH" = (
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/hallway/secondary/civilian";
+ dir = 8;
+ name = "Civilian Wing Hallway APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aVI" = (
+/obj/structure/table,
+/obj/item/storage/box/zipties,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aVJ" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aVK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/space/nearstation)
+"aVL" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aVM" = (
+/obj/structure/chair/stool,
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/maintenance/department/eva)
+"aVN" = (
+/obj/machinery/vending,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aVO" = (
+/obj/structure/table,
+/obj/item/tape,
+/obj/item/taperecorder{
+ pixel_x = -4
+ },
+/obj/item/radio/off,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aVP" = (
+/obj/structure/window/reinforced,
+/obj/structure/displaycase/captain,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"aVQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aVR" = (
+/obj/structure/window/reinforced,
+/obj/structure/filingcabinet,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"aVS" = (
+/obj/machinery/space_heater,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aVT" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: WASTE EJECTION";
+ pixel_x = -32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aVU" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aVV" = (
+/obj/structure/bed,
+/obj/item/bedsheet/red,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/mob/living/simple_animal/bot/secbot/beepsky{
+ desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey, and with a sturdier reinforced chassis, too. ";
+ health = 45;
+ maxHealth = 45;
+ name = "Officer Beepsky"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aVW" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"aVX" = (
+/obj/structure/closet/secure_closet/medical1,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/clothing/mask/surgical,
+/obj/item/clothing/suit/apron/surgical,
+/obj/item/clothing/gloves/color/latex,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aVY" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"aVZ" = (
+/obj/machinery/computer/security/wooden_tv,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aWa" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aWb" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aWc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aWd" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aWe" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aWf" = (
+/obj/effect/turf_decal/tile/red,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aWg" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"aWh" = (
+/obj/effect/landmark/start/lawyer,
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"aWi" = (
+/obj/machinery/cryopod{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/disposal";
+ dir = 8;
+ name = "Cryogenics APC";
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"aWj" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/space/nearstation)
+"aWk" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/modular_computer/laptop/preset/civilian,
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aWl" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/photocopier,
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aWm" = (
+/turf/open/floor/plasteel,
+/area/gateway)
+"aWn" = (
+/obj/structure/closet/secure_closet/detective,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"aWo" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/cryopod)
+"aWp" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
+/area/gateway)
+"aWq" = (
+/obj/structure/rack,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/extinguisher,
+/obj/item/crowbar,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aWr" = (
+/obj/machinery/gateway{
+ dir = 9
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"aWs" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aWt" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aWu" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/fitness/cogpool";
+ dir = 4;
+ name = "Pool APC";
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aWv" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aWw" = (
+/obj/structure/table/wood,
+/obj/item/pinpointer/nuke,
+/obj/item/card/id/captains_spare,
+/obj/item/hand_tele,
+/obj/item/disk/nuclear,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/captain)
+"aWx" = (
+/obj/structure/table/wood,
+/obj/machinery/light,
+/obj/item/storage/photo_album/Captain,
+/obj/item/camera{
+ pixel_y = -6
+ },
+/obj/item/stamp/captain,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/captain)
+"aWy" = (
+/obj/machinery/suit_storage_unit/captain,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/captain)
+"aWz" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Power Monitoring";
+ req_access_txt = "10"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aWA" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aWB" = (
+/turf/closed/wall/r_wall,
+/area/ai_monitored/storage/eva)
+"aWC" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Defendent's Chair";
+ req_one_access_txt = "63"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aWD" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/item/cigbutt,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aWE" = (
+/obj/structure/sign/warning{
+ name = "\improper WARNING: MOVING MACHINERY"
+ },
+/turf/closed/wall/r_wall,
+/area/janitor)
+"aWF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/janitor)
+"aWG" = (
+/obj/machinery/suit_storage_unit/standard_unit,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/clothing/shoes/magboots,
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aWH" = (
+/obj/machinery/disposal/bin{
+ name = "Corpse Delivery"
+ },
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/delivery/red,
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aWI" = (
+/obj/machinery/suit_storage_unit/standard_unit,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aWJ" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aWK" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/item/storage/box/lights/mixed,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aWL" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "public"
+ },
+/turf/open/floor/plating,
+/area/router/public)
+"aWM" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aWN" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/conveyor/auto{
+ id = "public"
+ },
+/turf/open/floor/plating,
+/area/router/public)
+"aWO" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/ai_monitored/storage/eva)
+"aWP" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aWQ" = (
+/obj/structure/closet/crate/rcd,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aWR" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_x = 32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aWS" = (
+/obj/structure/table,
+/obj/item/storage/box/flashes{
+ pixel_x = 8
+ },
+/obj/item/storage/box/handcuffs{
+ pixel_x = -8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"aWT" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/window/reinforced/spawner/west,
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/router/public";
+ dir = 4;
+ name = "Public Router APC";
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aWU" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"aWV" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/obj/structure/sign/warning/securearea,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aWW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aWX" = (
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/medical";
+ dir = 8;
+ name = "Medical Booth APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aWY" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/item/radio/intercom{
+ frequency = 1359;
+ name = "Station Intercom (Security)";
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aWZ" = (
+/turf/closed/wall/r_wall,
+/area/ai_monitored/nuke_storage)
+"aXa" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aXb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/central)
+"aXc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aXd" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/maintenance/central)
+"aXe" = (
+/obj/machinery/bookbinder,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"aXf" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/structure/table/wood,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/carpet,
+/area/library)
+"aXg" = (
+/obj/structure/bookcase/random/reference,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"aXh" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 6
+ },
+/obj/structure/sign/warning/securearea,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"aXi" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aXj" = (
+/obj/structure/transit_tube/station/reverse,
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Transit Tube Access";
+ pixel_x = 22
+ },
+/obj/structure/transit_tube_pod{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aXk" = (
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/door/airlock/external{
+ name = "Port Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aXl" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/airlock/external{
+ name = "Port Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aXm" = (
+/obj/machinery/gateway{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"aXn" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aXo" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aXp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/reagent_dispensers/foamtank,
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"aXq" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aXr" = (
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aXs" = (
+/obj/machinery/gateway{
+ dir = 5
+ },
+/obj/machinery/camera{
+ c_tag = "Research - Gateway Chamber";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"aXt" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/securearea,
+/turf/open/floor/plating,
+/area/gateway)
+"aXu" = (
+/turf/closed/wall,
+/area/security/courtroom/jury)
+"aXv" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Bar"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aXw" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-08"
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aXx" = (
+/obj/structure/grille,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"aXy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/ai_monitored/storage/eva)
+"aXz" = (
+/obj/structure/tank_dispenser/oxygen,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aXA" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/security/courtroom/jury)
+"aXB" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/junction{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aXC" = (
+/obj/machinery/computer/bank_machine,
+/obj/effect/turf_decal/bot_white,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aXD" = (
+/obj/effect/turf_decal/bot_white/right,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/item/stack/sheet/mineral/bananium{
+ amount = 50
+ },
+/obj/structure/closet/crate{
+ name = "bananium crate"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aXE" = (
+/obj/effect/turf_decal/bot_white,
+/obj/item/ship_in_a_bottle,
+/obj/structure/closet/crate,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aXF" = (
+/obj/effect/turf_decal/bot_white/left,
+/obj/item/stack/tile/brass/fifty,
+/obj/structure/closet/crate{
+ name = "brass crate"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aXG" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"aXH" = (
+/obj/structure/sign/warning/securearea,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/storage/eva)
+"aXI" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aXJ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aXK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aXL" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/item/paper/fluff/jobs/security/beepsky_mom,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aXM" = (
+/turf/closed/wall,
+/area/maintenance/department/security)
+"aXN" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/ai_monitored/storage/eva)
+"aXO" = (
+/obj/structure/chair,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aXP" = (
+/obj/machinery/door/airlock/maintenance{
+ name = "Pool Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"aXQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/medical{
+ name = "Medical Booth"
+ })
+"aXR" = (
+/turf/closed/wall,
+/area/security/courtroom)
+"aXS" = (
+/obj/structure/chair/comfy/brown{
+ buildstackamount = 0;
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aXT" = (
+/obj/structure/chair/comfy/brown{
+ buildstackamount = 0;
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aXU" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aXV" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/assembly/timer{
+ pixel_x = 6;
+ pixel_y = -2
+ },
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/stack/cable_coil/random{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/multitool,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aXW" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/storage/eva)
+"aXX" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aXY" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aXZ" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aYa" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"aYb" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aYc" = (
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/library)
+"aYd" = (
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aYe" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aYf" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"aYg" = (
+/obj/effect/turf_decal/bot_white/right,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aYh" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/radio/off,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"aYi" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aYj" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aYk" = (
+/turf/open/floor/circuit/green,
+/area/ai_monitored/nuke_storage)
+"aYl" = (
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aYm" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/ai_monitored/storage/eva)
+"aYn" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/storage/box/smart_metal_foam,
+/obj/item/wrench,
+/obj/item/radio/off,
+/obj/item/radio/off,
+/obj/item/radio/off,
+/obj/item/assembly/prox_sensor,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aYo" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=2";
+ freq = 1400;
+ location = "Security"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aYp" = (
+/obj/structure/fans/tiny/invisible,
+/turf/open/space/basic,
+/area/space)
+"aYq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aYr" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Security Maintenance";
+ req_access_txt = "1"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aYs" = (
+/obj/structure/rack,
+/obj/item/tank/jetpack/carbondioxide,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aYt" = (
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aYu" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aYv" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/analyzer,
+/obj/item/storage/toolbox/electrical,
+/obj/item/gps,
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aYw" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aYx" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aYy" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-22"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark/side,
+/area/bridge)
+"aYz" = (
+/obj/effect/turf_decal/bot_white,
+/obj/effect/landmark/start/ai/secondary,
+/obj/machinery/camera{
+ c_tag = "Vault";
+ dir = 4;
+ network = list("vault")
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aYA" = (
+/obj/machinery/nuclearbomb/selfdestruct,
+/obj/effect/turf_decal/box/white,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aYB" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aYC" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/security/detectives_office";
+ dir = 1;
+ name = "Detective's Office APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"aYD" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aYE" = (
+/obj/item/beacon,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aYF" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aYG" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"aYH" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aYI" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
+/area/hallway/primary/central)
+"aYJ" = (
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aYK" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Civilian Wing Hallway"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"aYL" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/reagent_dispensers/fueltank,
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"aYM" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aYN" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aYO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"aYP" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aYQ" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aYR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"aYS" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/security/brig)
+"aYT" = (
+/turf/closed/wall/r_wall,
+/area/security/checkpoint/customs)
+"aYU" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aYV" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"aYW" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/window/northright{
+ name = "Customs Desk";
+ req_access_txt = "57"
+ },
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "HoPFore";
+ name = "HoP Fore Desk Shutters"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"aYX" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/item/flashlight/lamp,
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "HoPFore";
+ name = "HoP Fore Desk Shutters"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"aYY" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Port Central Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/security/courtroom)
+"aYZ" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"aZa" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aZb" = (
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/department/eva)
+"aZc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aZd" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "E.V.A. Maintenance";
+ req_access_txt = "18"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/storage/eva)
+"aZe" = (
+/obj/structure/sign/warning/biohazard{
+ pixel_y = 32
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"aZf" = (
+/obj/effect/turf_decal/bot_white/left,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aZg" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"aZh" = (
+/obj/structure/closet/crate,
+/obj/machinery/light,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/window/reinforced/spawner/east,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aZi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"aZj" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/caution{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/caution{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/caution{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/caution{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/extinguisher{
+ pixel_x = -4;
+ pixel_y = 4
+ },
+/obj/item/extinguisher{
+ pixel_x = -4;
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aZk" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/mass_driver{
+ id = "public_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router/public)
+"aZl" = (
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/public)
+"aZm" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"aZn" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera/motion{
+ c_tag = "EVA";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aZo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"aZp" = (
+/obj/structure/lattice,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aZq" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"aZr" = (
+/obj/structure/filingcabinet,
+/obj/item/folder/documents,
+/obj/effect/turf_decal/bot_white,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aZs" = (
+/obj/structure/safe,
+/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,
+/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
+/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
+/obj/item/lazarus_injector,
+/obj/item/stack/spacecash/c1000,
+/obj/item/stack/spacecash/c1000,
+/obj/item/stack/spacecash/c1000,
+/obj/item/stack/spacecash/c1000,
+/obj/item/stack/spacecash/c1000,
+/obj/effect/turf_decal/bot_white/left,
+/obj/item/stack/sheet/mineral/diamond,
+/obj/item/gun/ballistic/revolver/mateba,
+/obj/item/clothing/under/soviet,
+/obj/item/clothing/suit/armor/vest/russian_coat,
+/obj/item/clothing/head/helmet/rus_helmet,
+/obj/machinery/light,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aZt" = (
+/obj/structure/closet/crate/necropolis/tendril,
+/obj/effect/turf_decal/bot_white/right,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aZu" = (
+/obj/machinery/blackbox_recorder,
+/obj/effect/turf_decal/bot_white,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"aZv" = (
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/storage/eva)
+"aZw" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/item/flashlight,
+/obj/item/flashlight,
+/obj/item/weldingtool,
+/obj/item/flashlight,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aZx" = (
+/obj/machinery/space_heater,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"aZy" = (
+/turf/closed/wall,
+/area/lawoffice)
+"aZz" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"aZA" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"aZB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"aZC" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/item/book/manual/wiki/security_space_law,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"aZD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Chapel Maintenance APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"aZE" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/hallway/primary/central";
+ dir = 8;
+ name = "Central Primary Hallway APC";
+ pixel_x = -26
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"aZF" = (
+/obj/structure/closet/firecloset,
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aZG" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_y = 32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"aZH" = (
+/obj/structure/disposalpipe/junction,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aZI" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/landmark/start/lawyer,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"aZJ" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"aZK" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/storage/toolbox/electrical,
+/obj/item/weldingtool,
+/obj/item/multitool{
+ pixel_x = -6;
+ pixel_y = -2
+ },
+/obj/item/assembly/signaler{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"aZL" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/sign/poster/official/cohiba_robusto_ad{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"aZM" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/carpet,
+/area/security/courtroom)
+"aZN" = (
+/obj/machinery/computer/station_alert{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"aZO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"aZP" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/aiModule/reset/purge{
+ pixel_y = 6
+ },
+/obj/item/aiModule/reset{
+ pixel_x = -2;
+ pixel_y = 4
+ },
+/obj/item/aiModule/core/full/custom{
+ pixel_x = -4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"aZQ" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/sheet/plasteel{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"aZR" = (
+/turf/open/floor/plasteel/dark/corner,
+/area/ai_monitored/storage/eva)
+"aZS" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/ai_monitored/storage/eva)
+"aZT" = (
+/obj/structure/table/wood,
+/obj/item/stack/packageWrap,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"aZU" = (
+/obj/structure/chair,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"aZV" = (
+/obj/structure/chair,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"aZW" = (
+/obj/structure/chair,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"aZX" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"aZY" = (
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"aZZ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/ai_monitored/storage/eva)
+"baa" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bab" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bac" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/stack/rods/fifty,
+/obj/item/stack/rods/fifty,
+/obj/item/storage/toolbox/emergency,
+/obj/item/stack/sheet/rglass,
+/obj/item/stack/sheet/rglass,
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"bad" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/stripes/white/full,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bae" = (
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"baf" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Central Plaza - Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bag" = (
+/obj/machinery/suit_storage_unit/standard_unit,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/storage/belt/utility,
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"bah" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/lawoffice)
+"bai" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"baj" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = -6;
+ pixel_y = 2
+ },
+/obj/item/reagent_containers/food/drinks/drinkingglass{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/glass/beaker/waterbottle,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bak" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/lawoffice)
+"bal" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"bam" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/turf/open/space/basic,
+/area/space/nearstation)
+"ban" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"bao" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"bap" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/structure/rack,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/gloves/color/black,
+/obj/item/clothing/gloves/color/black,
+/obj/item/clothing/gloves/color/black,
+/obj/item/clothing/suit/hazardvest,
+/obj/item/clothing/suit/hazardvest,
+/obj/item/clothing/suit/hazardvest,
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"baq" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bar" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/holopad,
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"bas" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"bat" = (
+/obj/structure/chair/stool/bar,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/crew_quarters/bar)
+"bau" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"bav" = (
+/obj/structure/chair/sofa/right,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/item/clipboard,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"baw" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/lawoffice)
+"bax" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"bay" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"baz" = (
+/obj/machinery/photocopier,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"baA" = (
+/obj/structure/filingcabinet/chestdrawer,
+/obj/item/folder/blue,
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"baB" = (
+/obj/structure/rack,
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/extinguisher,
+/obj/item/crowbar,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"baC" = (
+/obj/machinery/vending/cart,
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"baD" = (
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"baE" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"baF" = (
+/obj/structure/chair/office/dark{
+ dir = 1
+ },
+/obj/effect/landmark/start/head_of_personnel,
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"baG" = (
+/obj/machinery/computer/secure_data{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"baH" = (
+/obj/structure/rack,
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/crowbar,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"baI" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"baJ" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"baK" = (
+/obj/structure/table/reinforced,
+/obj/machinery/light,
+/obj/item/kitchen/fork,
+/obj/item/reagent_containers/food/snacks/pastatomato,
+/obj/machinery/newscaster/security_unit{
+ pixel_y = -30
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"baL" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"baM" = (
+/obj/structure/rack,
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/crowbar/large,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"baN" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"baO" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"baP" = (
+/obj/structure/closet/secure_closet/captains,
+/obj/item/reagent_containers/food/drinks/flask/gold,
+/obj/item/clothing/under/gimmick/rank/captain/suit,
+/obj/item/clothing/under/gimmick/rank/captain/suit/skirt,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/item/clothing/head/centhat{
+ name = "\improper green captain's hat"
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"baQ" = (
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"baR" = (
+/obj/structure/chair/sofa/left,
+/obj/effect/landmark/start/lawyer,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"baS" = (
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"baT" = (
+/obj/machinery/iv_drip,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"baU" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"baV" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"baW" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"baX" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/structure/displaycase,
+/turf/open/floor/plasteel,
+/area/library)
+"baY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"baZ" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/door/airlock/external{
+ name = "Port Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bba" = (
+/obj/effect/landmark/start/assistant,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"bbb" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"bbc" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/royalblue,
+/area/bridge)
+"bbd" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bbe" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bbf" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hop)
+"bbg" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bbh" = (
+/turf/closed/wall,
+/area/hallway/primary/aft)
+"bbi" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"bbj" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/teleporter)
+"bbk" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Telecomms Admin";
+ departmentType = 5;
+ name = "Telecomms RC";
+ pixel_y = 30
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bbl" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bbm" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/lawyer,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bbn" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bbo" = (
+/obj/structure/closet/crate,
+/obj/item/book/manual/wiki/security_space_law,
+/obj/item/book/manual/wiki/security_space_law,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bbp" = (
+/obj/structure/table/wood,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/carpet,
+/area/security/courtroom)
+"bbq" = (
+/obj/effect/landmark/start/librarian,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"bbr" = (
+/obj/structure/filingcabinet/employment,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bbs" = (
+/obj/structure/table/wood,
+/obj/item/camera,
+/obj/item/pen/red,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bbt" = (
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bbu" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plating,
+/area/space/nearstation)
+"bbv" = (
+/obj/structure/lattice,
+/turf/open/space,
+/area/space/nearstation)
+"bbw" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bbx" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bby" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bbz" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bbA" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bbB" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bbC" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/effect/landmark/start/medical_doctor,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bbD" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bbE" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bbF" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 6
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bbG" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bbH" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"bbI" = (
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bbJ" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bbK" = (
+/obj/machinery/light,
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bbL" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 10
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bbM" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bbN" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bbO" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 9
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bbP" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "HoP Office Maintenance";
+ req_access_txt = "57"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/security/checkpoint/customs)
+"bbQ" = (
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"bbR" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/reagent_containers/food/snacks/grown/wheat,
+/obj/item/reagent_containers/food/snacks/grown/corn,
+/obj/item/reagent_containers/food/snacks/grown/cocoapod,
+/obj/item/reagent_containers/food/snacks/grown/chili,
+/obj/item/reagent_containers/food/snacks/grown/soybeans,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/obj/item/reagent_containers/food/snacks/grown/cherries,
+/obj/structure/sign/poster/contraband/have_a_puff{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bbS" = (
+/obj/machinery/space_heater,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/gateway)
+"bbT" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/sorting)
+"bbU" = (
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bbV" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/warehouse)
+"bbW" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/noticeboard{
+ dir = 4;
+ pixel_x = -27
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bbX" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bbY" = (
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bbZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bca" = (
+/turf/open/floor/engine/vacuum,
+/area/engine/atmos)
+"bcb" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 5
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bcc" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"bcd" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-14"
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"bce" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "public"
+ },
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "cargoblock";
+ name = "Public Router"
+ },
+/turf/open/floor/plating,
+/area/router/public)
+"bcf" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bcg" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "cargoblock";
+ name = "Public Router"
+ },
+/turf/open/floor/plating,
+/area/router/public)
+"bch" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bci" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bcj" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ id = "cargo"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bck" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bcl" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bcm" = (
+/obj/machinery/computer/cargo/request,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bcn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/vacuum/external,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bco" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/morgue{
+ name = "Confession Booth (Chaplain)";
+ req_access_txt = "22"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bcp" = (
+/obj/machinery/libraryscanner,
+/obj/machinery/light,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"bcq" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bcr" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bcs" = (
+/obj/machinery/pdapainter,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bct" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bcu" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/machinery/camera{
+ c_tag = "Aft Maintenance - Air Hookup"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bcv" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bcw" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/mixing)
+"bcx" = (
+/obj/structure/chair/office/dark,
+/obj/effect/landmark/start/head_of_personnel,
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bcy" = (
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bcz" = (
+/obj/machinery/computer/card{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bcA" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bcB" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/gateway)
+"bcC" = (
+/obj/machinery/power/apc{
+ name = "Research Division Storage APC";
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"bcD" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bcE" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bcF" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bcG" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 5
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bcH" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark/side,
+/area/security/courtroom)
+"bcI" = (
+/turf/closed/wall/r_wall,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bcJ" = (
+/obj/machinery/button/door{
+ id = "HoPAft";
+ name = "Aft Shutters";
+ pixel_x = -24;
+ pixel_y = -24;
+ req_access_txt = "57"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bcK" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Cryogenics"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/circuit/green,
+/area/crew_quarters/cryopod)
+"bcL" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bcM" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"bcN" = (
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=bridge2";
+ location = "court"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bcO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"bcP" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bcQ" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bcR" = (
+/turf/closed/wall,
+/area/hallway/primary/central)
+"bcS" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Courtroom"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bcT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bcU" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Jury Room Maintainance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/security/courtroom/jury)
+"bcV" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bcW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/requests_console{
+ department = "Bar";
+ departmentType = 2;
+ name = "Bar RC";
+ pixel_y = -30
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bcX" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/hallway/primary/central)
+"bcY" = (
+/obj/machinery/power/smes,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bcZ" = (
+/obj/machinery/power/terminal{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bda" = (
+/obj/structure/table,
+/obj/item/hand_tele,
+/obj/machinery/camera{
+ c_tag = "Teleporter Room";
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"bdb" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"bdc" = (
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bdd" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Pool";
+ dir = 1
+ },
+/obj/structure/closet/secure_closet/personal,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/toy/poolnoodle/red,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"bde" = (
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bdf" = (
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bdg" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bdh" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/closet/secure_closet/personal,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/toy/poolnoodle/blue,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"bdi" = (
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bdj" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"bdk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bdl" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/closet/athletic_mixed,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/toy/poolnoodle/yellow,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/fitness/cogpool)
+"bdm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bdn" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"bdo" = (
+/obj/structure/sign/warning/biohazard{
+ pixel_x = -32
+ },
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 4;
+ sortType = 17
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bdp" = (
+/obj/structure/chair/stool,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bdq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bdr" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"bds" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/chaplain,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bdt" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/pump,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bdu" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bdv" = (
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bdw" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced/tinted,
+/turf/open/floor/plating,
+/area/chapel/office)
+"bdx" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bdy" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"bdz" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bdA" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bdB" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb,
+/obj/item/toy/eightball,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"bdC" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bdD" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bdE" = (
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 8;
+ icon_state = "intact"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bdF" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bdG" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bdH" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bdI" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bdJ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Telecommunications Control Room Maintenance";
+ req_access_txt = "61"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/bridge)
+"bdK" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bdL" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bdM" = (
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bdN" = (
+/obj/machinery/vending/snack/random,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bdO" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Pool External Maintenance";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bdP" = (
+/turf/closed/wall/mineral/wood,
+/area/crew_quarters/fitness/cogpool)
+"bdQ" = (
+/obj/machinery/door/airlock/command{
+ name = "Bridge";
+ req_access_txt = "19"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bdR" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bdS" = (
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/bridge)
+"bdT" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/table/reinforced,
+/obj/item/storage/toolbox/emergency,
+/obj/item/hand_labeler,
+/obj/item/hand_labeler,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bdU" = (
+/obj/machinery/vending/cigarette,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bdV" = (
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bdW" = (
+/obj/structure/mineral_door/woodrustic{
+ name = "Sauna"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness/cogpool)
+"bdX" = (
+/obj/structure/table/wood,
+/obj/item/storage/box/donkpockets,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"bdY" = (
+/obj/structure/sign/warning/fire,
+/turf/closed/wall/mineral/wood,
+/area/crew_quarters/fitness/cogpool)
+"bdZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/quartermaster/sorting)
+"bea" = (
+/obj/structure/disposalpipe/junction,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/sign/poster/official/report_crimes{
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"beb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/courtroom/jury)
+"bec" = (
+/obj/structure/closet/crate/science,
+/obj/item/stack/sheet/metal/ten,
+/obj/item/stack/sheet/glass/five,
+/obj/item/stack/rods/twentyfive,
+/obj/item/target/syndicate,
+/obj/item/target/alien,
+/obj/item/target,
+/obj/item/target/clown,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bed" = (
+/obj/machinery/suit_storage_unit/rd,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bee" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bef" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"beg" = (
+/obj/effect/turf_decal/bot_white,
+/obj/structure/closet/crate,
+/obj/item/clothing/suit/space/hardsuit/ert{
+ desc = "A suit used by Nanotrasen Special Operatives.";
+ name = "NT-SO suit"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"beh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"bei" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on,
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bej" = (
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bek" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bel" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bem" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/obj/machinery/atmospherics/pipe/manifold/general/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/science/mixing)
+"ben" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"beo" = (
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"bep" = (
+/obj/structure/table/wood,
+/obj/item/tape,
+/obj/item/taperecorder{
+ pixel_x = -4
+ },
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/heads/hor";
+ dir = 8;
+ name = "Research Director's Office APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"beq" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/obj/machinery/atmospherics/pipe/manifold/general/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/science/mixing)
+"ber" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bes" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"bet" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"beu" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/aiModule/core/full/asimov{
+ pixel_x = 2;
+ pixel_y = 10
+ },
+/obj/effect/spawner/lootdrop/aimodule_neutral{
+ pixel_x = 1;
+ pixel_y = 8
+ },
+/obj/effect/spawner/lootdrop/aimodule_harmless{
+ pixel_y = 6
+ },
+/obj/item/aiModule/core/freeformcore{
+ pixel_x = -1;
+ pixel_y = 2
+ },
+/obj/item/aiModule/supplied/freeform{
+ pixel_x = -2
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bev" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "Station Intercom (Common)";
+ pixel_x = 28
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"bew" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"bex" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bey" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall/rust,
+/area/space/nearstation)
+"bez" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/office)
+"beA" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall,
+/area/chapel/main)
+"beB" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/cola/random,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"beC" = (
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"beD" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"beE" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/fans/tiny,
+/obj/structure/plasticflaps,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"beF" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"beG" = (
+/obj/structure/lattice,
+/obj/machinery/camera{
+ c_tag = "Routing Depot - Fore Exterior";
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"beH" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"beI" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/obj/machinery/atmospherics/pipe/simple/general/hidden,
+/turf/open/floor/plating,
+/area/science/mixing)
+"beJ" = (
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"beK" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"beL" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"beM" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"beN" = (
+/obj/structure/table/glass,
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"beO" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"beP" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"beQ" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"beR" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"beS" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"beT" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"beU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"beV" = (
+/obj/machinery/button/door{
+ id = "executionspaceblast";
+ name = "Vent to Space";
+ pixel_x = 25;
+ pixel_y = -5;
+ req_access_txt = "7"
+ },
+/obj/machinery/button/ignition{
+ id = "executionburn";
+ pixel_x = 24;
+ pixel_y = 5
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"beW" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"beX" = (
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "Station Intercom (Common)";
+ pixel_x = 28
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"beY" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"beZ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bfa" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"bfb" = (
+/obj/machinery/computer/card/minor/qm,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bfc" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/coffee,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bfd" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bfe" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/snack/random,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bff" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/qm)
+"bfg" = (
+/obj/structure/closet,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bfh" = (
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bfi" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bfj" = (
+/mob/living/simple_animal/butterfly,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"bfk" = (
+/mob/living/simple_animal/kiwi,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"bfl" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bfm" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"bfn" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber{
+ dir = 4
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bfo" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bfp" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber{
+ dir = 4
+ },
+/obj/machinery/sparker/toxmix{
+ pixel_x = 25
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bfq" = (
+/obj/docking_port/stationary{
+ dir = 8;
+ dwidth = 2;
+ height = 5;
+ id = "laborcamp_home";
+ name = "fore bay 1";
+ roundstart_template = /datum/map_template/shuttle/labour/cog;
+ width = 9
+ },
+/turf/open/space/basic,
+/area/space)
+"bfr" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/obj/structure/table,
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bfs" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=4";
+ dir = 4;
+ freq = 1400;
+ location = "QM #1"
+ },
+/mob/living/simple_animal/bot/mulebot{
+ beacon_freq = 1400;
+ home_destination = "QM #1";
+ suffix = "#1"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bft" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/hallway/primary/central)
+"bfu" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/gateway)
+"bfv" = (
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bfw" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "Station Intercom (Common)";
+ pixel_x = 28
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"bfx" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"bfy" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bfz" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bfA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command/glass{
+ name = "Bridge Access";
+ req_access_txt = "19"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bfB" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Chapel Morgue";
+ req_access_txt = "22;27"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bfC" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/qm)
+"bfD" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bfE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ dir = 5;
+ id = "mail"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bfF" = (
+/obj/machinery/space_heater,
+/obj/structure/sign/poster/official/no_erp{
+ pixel_y = 32
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness/cogpool)
+"bfG" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bfH" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/aft";
+ dir = 8;
+ name = "Chapel APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"bfI" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/highcap/fifteen_k{
+ areastring = "/area/engine/storage_shared";
+ dir = 1;
+ name = "Electrical Substation APC";
+ pixel_y = 26
+ },
+/turf/open/floor/plating,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"bfJ" = (
+/turf/open/floor/wood,
+/area/crew_quarters/fitness/cogpool)
+"bfK" = (
+/obj/structure/table/wood,
+/obj/item/storage/fancy/candle_box{
+ pixel_x = -11;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/food/drinks/bottle/holywater,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"bfL" = (
+/obj/structure/table/wood,
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"bfM" = (
+/obj/machinery/light/small{
+ dir = 4;
+ light_color = "#d8b1b1"
+ },
+/obj/structure/bedsheetbin/towel,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness/cogpool)
+"bfN" = (
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bfO" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Jazz Lounge"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bfP" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bfQ" = (
+/obj/machinery/light/small,
+/obj/item/candle,
+/obj/item/trash/candle,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bfR" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bfS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bfT" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/chapel/office)
+"bfU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bfV" = (
+/obj/machinery/light/small,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
+"bfW" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bfX" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bfY" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=4";
+ dir = 4;
+ freq = 1400;
+ location = "QM #2"
+ },
+/mob/living/simple_animal/bot/mulebot{
+ home_destination = "QM #2";
+ suffix = "#2"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bfZ" = (
+/obj/effect/turf_decal/delivery,
+/obj/effect/landmark/start/cargo_technician,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bga" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bgb" = (
+/obj/structure/disposalpipe/sorting/mail{
+ sortType = 30
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bgc" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/sign/directions/command{
+ dir = 8;
+ pixel_x = -32;
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 8
+ },
+/area/hallway/primary/central)
+"bgd" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/hallway/primary/central)
+"bge" = (
+/turf/closed/wall/r_wall,
+/area/storage/primary)
+"bgf" = (
+/turf/closed/wall,
+/area/quartermaster/warehouse)
+"bgg" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bgh" = (
+/obj/machinery/conveyor_switch{
+ id = "EngiCargoConveyer"
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/sorting";
+ dir = 8;
+ name = "Delivery Office APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bgi" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space)
+"bgj" = (
+/obj/structure/table,
+/obj/item/weldingtool/mini,
+/obj/item/light/tube,
+/obj/effect/decal/cleanable/cobweb{
+ icon_state = "cobweb2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bgk" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "mail"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bgl" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/clothing/gloves/color/yellow,
+/obj/item/multitool,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bgm" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bgn" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bgo" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/chapel/main)
+"bgp" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"bgq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bgr" = (
+/obj/structure/table/wood,
+/obj/item/clothing/head/helmet/skull,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"bgs" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bgt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bgu" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bgv" = (
+/obj/effect/landmark/xeno_spawn,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bgw" = (
+/turf/open/floor/engine,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bgx" = (
+/obj/structure/table/glass,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bgy" = (
+/obj/structure/closet,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/security/courtroom/jury";
+ dir = 4;
+ name = "Jury Room APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom/jury)
+"bgz" = (
+/obj/structure/chair,
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bgA" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bgB" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/lightreplacer,
+/obj/item/lightreplacer,
+/obj/item/stack/rods/fifty,
+/obj/item/stack/rods/fifty,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bgC" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bgD" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bgE" = (
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bgF" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Port Central Maintenance";
+ req_one_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bgG" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/hallway/primary/central)
+"bgH" = (
+/obj/machinery/pipedispenser,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bgI" = (
+/obj/machinery/pipedispenser/disposal,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bgJ" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bgK" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bgL" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bgM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bgN" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Port Central Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bgO" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/item/wrench,
+/obj/item/pipe_dispenser,
+/mob/living/simple_animal/sloth/paperwork,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bgP" = (
+/obj/item/analyzer,
+/obj/item/caution,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bgQ" = (
+/turf/closed/wall,
+/area/quartermaster/qm)
+"bgR" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/closed/wall/mineral/wood,
+/area/crew_quarters/fitness/cogpool)
+"bgS" = (
+/obj/machinery/computer/bounty,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bgT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bgU" = (
+/obj/machinery/computer/cargo,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bgV" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/storage)
+"bgW" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/hor)
+"bgX" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/heads/hor)
+"bgY" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/status_display,
+/turf/closed/wall/r_wall,
+/area/hallway/primary/central)
+"bgZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bha" = (
+/obj/structure/chair/stool,
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness/cogpool)
+"bhb" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bhc" = (
+/obj/structure/chair/stool,
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness/cogpool)
+"bhd" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bhe" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bhf" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/quartermaster/office)
+"bhg" = (
+/obj/structure/chair/stool,
+/obj/machinery/camera{
+ c_tag = "Pool - Sauna";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness/cogpool)
+"bhh" = (
+/obj/machinery/status_display,
+/turf/closed/wall/r_wall,
+/area/security/courtroom)
+"bhi" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/clothing/head/cone,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bhj" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Kitchen";
+ req_access_txt = "28"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"bhk" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bhl" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/turf/closed/wall/mineral/wood,
+/area/crew_quarters/fitness/cogpool)
+"bhm" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bhn" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bho" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/storage/belt/utility,
+/obj/item/storage/belt/utility,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bhp" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bhq" = (
+/obj/structure/chair/sofa/right,
+/obj/item/instrument/recorder,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bhr" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bhs" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/portable_atmospherics/scrubber,
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bht" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"bhu" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/recharge_station,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bhv" = (
+/obj/structure/chair/sofa/left,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bhw" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/contraband/cc64k_ad{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bhx" = (
+/obj/machinery/vending/coffee,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"bhy" = (
+/obj/machinery/atmospherics/components/binary/pump,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bhz" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bhA" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bhB" = (
+/obj/structure/closet/secure_closet/quartermaster,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/item/clothing/suit/space/eva,
+/obj/item/clothing/head/helmet/space/eva,
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bhC" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bhD" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Chapel Air Hookup";
+ req_one_access_txt = "12;22"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bhE" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bhF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bhG" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bhH" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bhI" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
+"bhJ" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bhK" = (
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bhL" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Waste Disposal";
+ req_one_access_txt = "12;50"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bhM" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bhN" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/item/twohanded/required/kirbyplants/dead,
+/turf/open/floor/plasteel,
+/area/security/main)
+"bhO" = (
+/obj/structure/chair/sofa/right,
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bhP" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bhQ" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bhR" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-21";
+ pixel_y = 3
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"bhS" = (
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/airlock/external{
+ name = "Port Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bhT" = (
+/obj/structure/sign/departments/engineering,
+/turf/closed/wall,
+/area/hallway/primary/aft)
+"bhU" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/janitor)
+"bhV" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/item/pen/blue{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/pen/red{
+ pixel_x = -4;
+ pixel_y = -4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"bhW" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"bhX" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bhY" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bhZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "QMLoad"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bia" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bib" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/vending/cola/random,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bic" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "Station Intercom (Common)";
+ pixel_x = -28
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bid" = (
+/obj/structure/chair/sofa/left,
+/mob/living/simple_animal/pet/cat/Proc,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bie" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bif" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"big" = (
+/turf/closed/wall,
+/area/science/circuit)
+"bih" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "mail"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bii" = (
+/obj/structure/table/glass,
+/obj/item/storage/box/matches,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bij" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 8
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "QMLoad"
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bik" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bil" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ dir = 6;
+ id = "QMLoad"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bim" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
+ dir = 1
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bin" = (
+/obj/machinery/computer/mecha{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bio" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bip" = (
+/obj/effect/landmark/start/quartermaster,
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"biq" = (
+/obj/machinery/computer/cargo/request{
+ dir = 1
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = 24;
+ pixel_y = -8
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"bir" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bis" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bit" = (
+/obj/machinery/light,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"biu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"biv" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"biw" = (
+/obj/machinery/computer/cargo{
+ dir = 8
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/button/door{
+ id = "QMLoadDoor";
+ layer = 4;
+ name = "Cargo Loading Doors";
+ pixel_x = 24;
+ pixel_y = 6
+ },
+/obj/machinery/button/door{
+ id = "QMUnloadDoor";
+ layer = 4;
+ name = "Cargo Unloading Doors";
+ pixel_x = 24;
+ pixel_y = -6
+ },
+/obj/machinery/camera{
+ c_tag = "Supply - Cargo Bay";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bix" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Courtroom"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"biy" = (
+/obj/machinery/vending/clothing,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"biz" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"biA" = (
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"biB" = (
+/obj/structure/table/wood,
+/obj/machinery/computer/security/telescreen/rd,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"biC" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"biD" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"biE" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"biF" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_y = -28
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"biG" = (
+/obj/structure/displaycase/labcage,
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/camera{
+ c_tag = "Research Director's Office - Starboard";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"biH" = (
+/obj/machinery/light/small,
+/obj/machinery/space_heater,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"biI" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-20";
+ pixel_y = 3
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"biJ" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"biK" = (
+/obj/structure/closet/firecloset,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"biL" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/turf/closed/wall,
+/area/crew_quarters/heads/chief)
+"biM" = (
+/obj/machinery/vending/assist,
+/obj/effect/turf_decal/bot,
+/obj/structure/sign/poster/official/foam_force_ad{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"biN" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"biO" = (
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"biP" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"biQ" = (
+/turf/closed/wall,
+/area/crew_quarters/heads/chief)
+"biR" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "CEPrivacy";
+ name = "CE Privacy Shutters"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/heads/chief)
+"biS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"biT" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"biU" = (
+/obj/machinery/gateway{
+ dir = 10
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"biV" = (
+/turf/closed/wall,
+/area/storage/primary)
+"biW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"biX" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"biY" = (
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"biZ" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/office)
+"bja" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bjb" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/storage/toolbox/mechanical,
+/obj/item/wrench,
+/obj/item/t_scanner,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bjc" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/stack/sheet/plasteel/twenty,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bjd" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bje" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjf" = (
+/obj/machinery/pipedispenser/disposal/transit_tube,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bjg" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjh" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "E.V.A. Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bji" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjj" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjk" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bjl" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall/r_wall,
+/area/quartermaster/office)
+"bjm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bjn" = (
+/turf/closed/wall/r_wall,
+/area/security/checkpoint/supply)
+"bjo" = (
+/obj/machinery/rnd/production/techfab/department/cargo,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bjp" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bjq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/conveyor{
+ id = "QMLoad"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bjr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/vacuum/external,
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bjs" = (
+/obj/machinery/computer/robotics{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bjt" = (
+/obj/item/reagent_containers/food/snacks/muffin/berry,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bju" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/item/radio/intercom{
+ frequency = 1359;
+ name = "Station Intercom (Security)";
+ pixel_y = -28
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bjv" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/security/courtroom/jury)
+"bjw" = (
+/obj/machinery/computer/card{
+ dir = 8
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = 8;
+ pixel_y = -24
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"bjx" = (
+/obj/structure/table/optable,
+/obj/effect/turf_decal/bot,
+/obj/item/defibrillator/loaded,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bjy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"bjz" = (
+/obj/structure/grille/broken,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bjA" = (
+/obj/machinery/camera{
+ c_tag = "EVA Maintenace - Fore";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bjB" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/folder/red,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"bjC" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Jury Room"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/courtroom/jury)
+"bjD" = (
+/turf/closed/wall/r_wall,
+/area/security/courtroom/jury)
+"bjE" = (
+/obj/structure/table,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 29
+ },
+/obj/item/cigbutt/cigarbutt{
+ pixel_x = 5;
+ pixel_y = -1
+ },
+/obj/item/phone{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/machinery/camera{
+ c_tag = "Atmospherics - Control Room"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/engine/atmos)
+"bjF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/checkpoint/supply)
+"bjG" = (
+/obj/structure/rack,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjH" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bjI" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bjJ" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -28
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bjK" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bjL" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/space/fragile,
+/obj/item/clothing/head/helmet/space/fragile,
+/obj/item/tank/internals/air,
+/obj/item/flashlight,
+/obj/item/reagent_containers/spray/cleaner,
+/obj/machinery/camera{
+ c_tag = "Pool Maintenance";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bjM" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Atmospherics Storage";
+ req_one_access_txt = "24;31"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bjN" = (
+/obj/machinery/vending/autodrobe/all_access,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bjO" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/item/instrument/piano_synth,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bjP" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bjQ" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/assistant/override,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bjR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjS" = (
+/obj/machinery/vending/cigarette,
+/obj/effect/turf_decal/bot,
+/obj/structure/sign/poster/official/cohiba_robusto_ad{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bjT" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"bjU" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjV" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"bjW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bjX" = (
+/obj/structure/rack,
+/obj/machinery/button/door{
+ id = "marketdoor";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bjY" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bjZ" = (
+/obj/structure/window/reinforced,
+/obj/machinery/shower{
+ name = "emergency shower";
+ pixel_y = 12
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/window/westright{
+ name = "Emergency Shower"
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bka" = (
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bkb" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ dir = 9;
+ id = "mail"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bkc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light,
+/obj/machinery/conveyor_switch/oneway{
+ id = "DeliveryConveyer"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkd" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "mail"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bke" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=sec1";
+ location = "bridge2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bkf" = (
+/obj/machinery/space_heater,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bkg" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/mineral/stacking_unit_console{
+ machinedir = 2
+ },
+/turf/closed/wall,
+/area/maintenance/disposal)
+"bkh" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bki" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bkj" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor_switch/oneway{
+ id = "mail"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkk" = (
+/obj/machinery/autolathe,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkl" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/space/fragile,
+/obj/item/clothing/head/helmet/space/fragile,
+/obj/item/tank/internals/air,
+/obj/item/flashlight,
+/obj/item/storage/belt/utility,
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bkm" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Supply - Delivery Office Fore";
+ network = list("ss13","rd")
+ },
+/obj/structure/closet/emcloset,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkn" = (
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bko" = (
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"bkp" = (
+/obj/machinery/conveyor_switch/oneway{
+ id = "QMLoad"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bkq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/conveyor/inverted{
+ dir = 9;
+ id = "QMLoad"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bkr" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "QMLoad"
+ },
+/obj/machinery/door/poddoor{
+ id = "QMLoadDoor";
+ name = "Cargo Loading Door"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bks" = (
+/obj/structure/plasticflaps,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "QMLoad"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bkt" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "QMLoad"
+ },
+/obj/machinery/door/poddoor{
+ id = "QMLoadDoor";
+ name = "Cargo Loading Door"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bku" = (
+/obj/structure/closet,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bkv" = (
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bkw" = (
+/obj/structure/bookcase/random/fiction,
+/obj/effect/spawner/lootdrop/gambling,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bkx" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bky" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/landmark/start/research_director,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"bkz" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bkA" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Bridge - Starboard Quarter";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bkB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bkC" = (
+/obj/machinery/modular_computer/console/preset/research{
+ dir = 8
+ },
+/obj/item/reagent_containers/food/drinks/coffee,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bkD" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "CEPrivacy";
+ name = "CE Privacy Shutters"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/heads/chief)
+"bkE" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bkF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"bkG" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/closet/crate/engineering,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/clothing/glasses/meson,
+/obj/item/cartridge/atmos,
+/obj/item/cartridge/engineering,
+/obj/item/cartridge/engineering,
+/obj/item/cartridge/engineering,
+/obj/machinery/camera{
+ c_tag = "Chief Engineer's Office";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"bkH" = (
+/obj/machinery/computer/atmos_control{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/checker,
+/area/engine/atmos)
+"bkI" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/storage/primary)
+"bkJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"bkK" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/sign/departments/security{
+ pixel_x = -32
+ },
+/obj/item/cigbutt,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bkL" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bkM" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bkN" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bkO" = (
+/obj/machinery/vending/kink,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bkP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bkQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bkR" = (
+/obj/machinery/camera{
+ c_tag = "EVA Maintenance - Aft";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bkS" = (
+/obj/machinery/vending/sustenance,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bkT" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"bkU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bkV" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bkW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external{
+ name = "Pool Exterior Access";
+ req_access_txt = "13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bkX" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bkY" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/closet/crate/engineering,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkZ" = (
+/turf/open/floor/engine/n2,
+/area/engine/atmos)
+"bla" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"blb" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"blc" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bld" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"ble" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/door/airlock/external{
+ name = "Cargo Freighter Dock";
+ req_access_txt = "31"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"blf" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Head of Personnel's Office";
+ req_access_txt = "57"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/hop)
+"blg" = (
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"blh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/door/airlock/external{
+ name = "Cargo Freighter Dock";
+ req_access_txt = "31"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bli" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blj" = (
+/obj/structure/sign/warning/docking,
+/turf/closed/wall/r_wall,
+/area/space/nearstation)
+"blk" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/landmark/start/assistant,
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bll" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blm" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bln" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blo" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blp" = (
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/exit)
+"blq" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/vending/wardrobe/engi_wardrobe,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"blr" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bls" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/sign/poster/official/ion_rifle{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"blt" = (
+/obj/machinery/computer/card/minor/ce{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"blu" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"blv" = (
+/obj/machinery/computer/operating,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"blw" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"blx" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/item/surgical_drapes,
+/obj/item/scalpel,
+/obj/item/circular_saw{
+ pixel_y = 16
+ },
+/obj/item/hemostat,
+/obj/item/retractor,
+/obj/item/surgicaldrill,
+/obj/item/cautery,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bly" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"blz" = (
+/obj/machinery/computer/atmos_control{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/engine/atmos)
+"blA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"blB" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blC" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blD" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/fitness/cogpool)
+"blE" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blF" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blG" = (
+/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/mixing)
+"blH" = (
+/obj/structure/chair,
+/obj/machinery/button/massdriver{
+ id = "toxinsdriver";
+ pixel_y = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"blI" = (
+/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/mixing)
+"blJ" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blK" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/poddoor/preopen{
+ id = "marketdoor"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blL" = (
+/turf/open/floor/engine/o2,
+/area/engine/atmos)
+"blM" = (
+/turf/open/floor/engine/air,
+/area/engine/atmos)
+"blN" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"blO" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"blP" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/rust,
+/area/maintenance/department/chapel)
+"blQ" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/window/northleft{
+ name = "Delivery Office";
+ req_one_access_txt = "31;48"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"blR" = (
+/obj/machinery/computer/bounty{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"blS" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/structure/chair,
+/obj/effect/landmark/start/cargo_technician,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"blT" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"blU" = (
+/obj/machinery/gateway,
+/turf/open/floor/engine,
+/area/gateway)
+"blV" = (
+/obj/machinery/computer/cargo{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"blW" = (
+/obj/structure/table,
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/item/storage/toolbox/mechanical,
+/obj/item/clothing/gloves/color/fyellow,
+/obj/item/crowbar,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"blX" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"blY" = (
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"blZ" = (
+/obj/machinery/conveyor_switch/oneway{
+ dir = 8;
+ id = "QMUnload"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bma" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/landmark/start/assistant/override,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bmb" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/heads/hor)
+"bmc" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Head of Security's Office";
+ req_one_access_txt = "58"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/hos)
+"bmd" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/landmark/start/research_director,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"bme" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"bmf" = (
+/obj/structure/sign/departments/evac,
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/exit)
+"bmg" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmh" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmi" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmj" = (
+/obj/structure/closet/secure_closet/RD,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bmk" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
+/obj/item/dice/d6,
+/obj/machinery/camera{
+ c_tag = "Jazz Lounge";
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bml" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"bmm" = (
+/obj/machinery/portable_atmospherics/scrubber/huge,
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bmn" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmo" = (
+/turf/closed/wall/rust,
+/area/maintenance/department/chapel)
+"bmp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bmq" = (
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=court";
+ location = "bridge1"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmr" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"bms" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/barthpot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bmt" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bmu" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bmv" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bmw" = (
+/obj/machinery/suit_storage_unit/ce,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"bmx" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bmy" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmz" = (
+/obj/structure/closet/firecloset,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bmA" = (
+/obj/item/stack/tile/plasteel{
+ pixel_x = 10;
+ pixel_y = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/hallway/secondary/civilian)
+"bmB" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bmC" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmD" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmE" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bmF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/closed/wall,
+/area/crew_quarters/fitness/cogpool)
+"bmG" = (
+/obj/machinery/gateway{
+ dir = 6
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"bmH" = (
+/obj/machinery/computer/upload/borg{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bmI" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/chapel/office";
+ dir = 4;
+ name = "Chapel Office APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bmJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bmK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/fitness/cogpool)
+"bmL" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bmM" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"bmN" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Waste Disposal Maintenance";
+ req_one_access_txt = "12;50"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bmO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/lounge/jazz)
+"bmP" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/departments/engineering{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bmQ" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering Foyer - Starboard";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bmR" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Teleport Access";
+ req_one_access_txt = "17;19"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"bmS" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bmT" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 9
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"bmU" = (
+/obj/structure/table/wood,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/item/instrument/saxophone,
+/obj/item/reagent_containers/food/drinks/bottle/vermouth,
+/obj/item/clothing/glasses/sunglasses,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bmV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bmW" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bmX" = (
+/obj/structure/table,
+/obj/item/folder/yellow{
+ pixel_y = 4
+ },
+/obj/item/pen{
+ pixel_y = 4
+ },
+/obj/item/clothing/gloves/color/latex{
+ pixel_y = 4
+ },
+/obj/item/clothing/mask/surgical{
+ pixel_y = 4
+ },
+/obj/item/healthanalyzer,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bmY" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/maintenance/disposal)
+"bmZ" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bna" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnb" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bnc" = (
+/obj/structure/sign/directions/command{
+ dir = 1;
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/obj/structure/sign/directions/security{
+ dir = 1;
+ pixel_x = -32;
+ pixel_y = 40
+ },
+/obj/structure/sign/directions/science{
+ pixel_x = -32;
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnd" = (
+/obj/structure/table/wood,
+/obj/item/storage/photo_album,
+/obj/item/storage/box/matches,
+/obj/item/storage/fancy/cigarettes/cigpack_robust,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bne" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bnf" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bng" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bnh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/door/poddoor{
+ id = "DeliveryDoor";
+ name = "Delivery Door"
+ },
+/obj/effect/turf_decal/caution/stand_clear{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bni" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/item/clipboard,
+/obj/item/stamp,
+/obj/item/stamp/denied{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/pen/red,
+/obj/item/pen/blue{
+ pixel_x = -5;
+ pixel_y = -3
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bnj" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bnk" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bnl" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 4
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bnm" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bnn" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/door/window/southleft{
+ name = "Cargo Desk";
+ req_access_txt = "31"
+ },
+/obj/item/folder,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bno" = (
+/obj/structure/chair/comfy/brown{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bnp" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bnq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bnr" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bns" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/department/eva)
+"bnt" = (
+/obj/machinery/camera{
+ c_tag = "Electrical Substation";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"bnu" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"bnv" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L1"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnw" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bnx" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L3"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bny" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/item/paper_bin,
+/obj/item/stack/packageWrap,
+/obj/item/stack/packageWrap,
+/obj/item/pen,
+/obj/item/wirecutters,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bnz" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L5"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnA" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L7"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bnC" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external{
+ name = "Cargo Freighter Dock";
+ req_access_txt = "31"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bnD" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L9"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnE" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/crowbar,
+/obj/structure/disposalpipe/junction/flip,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bnF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bnG" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bnH" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bnI" = (
+/obj/structure/bed,
+/obj/effect/landmark/start/head_of_personnel,
+/obj/item/bedsheet/hop,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"bnJ" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bnK" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"bnL" = (
+/obj/item/beacon,
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"bnM" = (
+/obj/effect/turf_decal/delivery,
+/obj/item/grown/bananapeel,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bnN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bnO" = (
+/obj/machinery/status_display,
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/exit)
+"bnP" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L11"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnQ" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/closed/wall/r_wall,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bnR" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L13"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bnS" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"bnT" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/fitness/cogpool)
+"bnU" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/space/fragile,
+/obj/item/clothing/head/helmet/space/fragile,
+/obj/item/tank/internals/air,
+/obj/item/wrench,
+/obj/item/flashlight,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bnV" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/nuke_storage)
+"bnW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"bnX" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/closet/secure_closet/security/cargo,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"bnY" = (
+/obj/structure/flora/ausbushes/sunnybush,
+/turf/open/floor/grass,
+/area/hallway/secondary/exit)
+"bnZ" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/item/pen/blue,
+/obj/machinery/camera{
+ c_tag = "Customs - Fore";
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "HoPFore";
+ name = "HoP Fore Desk Shutters"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"boa" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 5
+ },
+/turf/closed/wall,
+/area/crew_quarters/heads/chief)
+"bob" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/crew_quarters/heads/chief)
+"boc" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 10
+ },
+/turf/closed/wall,
+/area/crew_quarters/heads/chief)
+"bod" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/window/southleft{
+ name = "Primary Tool Storage Desk";
+ req_access_txt = "11"
+ },
+/obj/item/folder/yellow,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"boe" = (
+/obj/machinery/door/airlock/vault{
+ name = "Vault Door";
+ req_access_txt = "53"
+ },
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/nuke_storage)
+"bof" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Pool Exterior Access";
+ req_access_txt = "13"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/cogpool)
+"bog" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/grass,
+/area/hallway/secondary/exit)
+"boh" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"boi" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/fitness/cogpool)
+"boj" = (
+/obj/structure/rack,
+/obj/item/caution,
+/obj/item/caution,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bok" = (
+/obj/structure/table/wood,
+/obj/item/paicard,
+/obj/item/toy/sword,
+/obj/item/toy/figure/assistant,
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bol" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/teleporter)
+"bom" = (
+/obj/structure/flora/ausbushes/leafybush,
+/turf/open/floor/grass,
+/area/hallway/secondary/exit)
+"bon" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"boo" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/hallway/primary/central)
+"bop" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/door/window/eastleft{
+ name = "Operating Theatre";
+ req_access_txt = "45"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"boq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bor" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bos" = (
+/obj/structure/table,
+/obj/item/stack/sheet/cardboard/fifty,
+/obj/item/stack/wrapping_paper,
+/obj/item/stack/sheet/metal,
+/obj/item/stack/sheet/glass,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bot" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bou" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bov" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bow" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 8
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "QMUnload"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"box" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"boy" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"boz" = (
+/obj/machinery/vending/cigarette,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"boA" = (
+/turf/closed/wall,
+/area/security/detectives_office)
+"boB" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "QMUnload"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"boC" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/sign/departments/cargo{
+ pixel_x = 32
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"boD" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "QMUnload"
+ },
+/obj/machinery/door/poddoor{
+ id = "QMUnloadDoor";
+ name = "Cargo Unloading Door"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"boE" = (
+/obj/structure/plasticflaps,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "QMUnload"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"boF" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "QMUnload"
+ },
+/obj/machinery/door/poddoor{
+ id = "QMUnloadDoor";
+ name = "Cargo Unloading Door"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"boG" = (
+/obj/machinery/space_heater,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/item/weldingtool,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/structure/sign/departments/engineering{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"boH" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"boI" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/miningoffice)
+"boJ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/obj/machinery/computer/security/telescreen/toxins{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"boK" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/miningoffice)
+"boL" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"boM" = (
+/obj/machinery/mineral/ore_redemption{
+ input_dir = 4;
+ output_dir = 8
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"boN" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"boO" = (
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/item/storage/box/drinkingglasses{
+ pixel_y = 4
+ },
+/obj/structure/table/wood/fancy,
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
+/area/crew_quarters/bar)
+"boP" = (
+/obj/structure/tank_dispenser/oxygen,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"boQ" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"boR" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"boS" = (
+/obj/structure/sign/mining,
+/turf/closed/wall/r_wall,
+/area/quartermaster/miningoffice)
+"boT" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"boU" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"boV" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"boW" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"boX" = (
+/obj/item/beacon,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"boY" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"boZ" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bpa" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/door/window/westleft{
+ name = "Treatment Center";
+ req_access_txt = "5"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bpb" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bpc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bpd" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bpe" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/door/window/eastright{
+ name = "Operating Theatre";
+ req_access_txt = "45"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bpf" = (
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bpg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bph" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bpi" = (
+/obj/structure/flora/junglebush/b,
+/turf/open/floor/grass,
+/area/hallway/secondary/exit)
+"bpj" = (
+/obj/structure/flora/junglebush,
+/turf/open/floor/grass,
+/area/hallway/secondary/exit)
+"bpk" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/landmark/start/shaft_miner,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bpl" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/autolathe/secure{
+ name = "public autolathe"
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bpm" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/extinguisher,
+/obj/item/crowbar,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bpn" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bpo" = (
+/obj/machinery/holopad,
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"bpp" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bpq" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/engine/air,
+/area/engine/atmos)
+"bpr" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bps" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/lounge/jazz";
+ name = "Jazz Lounge APC";
+ pixel_y = -26
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bpt" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bpu" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/landmark/start/shaft_miner,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bpv" = (
+/turf/closed/wall/r_wall,
+/area/engine/break_room)
+"bpw" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L6"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bpx" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bpy" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/landmark/observer_start,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bpz" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bpA" = (
+/obj/structure/closet/emcloset,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bpB" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bpC" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L10"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bpD" = (
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bpE" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bpF" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L12"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bpG" = (
+/obj/effect/turf_decal/plaque{
+ icon_state = "L14"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bpH" = (
+/obj/machinery/jukebox,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bpI" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bpJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/lounge/jazz)
+"bpK" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"bpL" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bpM" = (
+/obj/effect/turf_decal/stripes/corner,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bpN" = (
+/obj/structure/grille,
+/obj/machinery/power/terminal,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bpO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bpP" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bpQ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bpR" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bpS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/requests_console{
+ department = "Security";
+ departmentType = 5;
+ name = "Security RC";
+ pixel_y = -32
+ },
+/turf/open/floor/carpet/red,
+/area/security/brig)
+"bpT" = (
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/grass,
+/area/hallway/secondary/exit)
+"bpU" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"bpV" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/atmos{
+ name = "Aft Air Hookup";
+ req_access_txt = "12;24"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bpW" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"bpX" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/sign/poster/official/obey{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"bpY" = (
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bpZ" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"bqa" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bqb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/civilian)
+"bqc" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/medical/medbay/lobby)
+"bqd" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bqe" = (
+/obj/structure/sign/departments/medbay/alt,
+/turf/closed/wall,
+/area/medical/medbay/lobby)
+"bqf" = (
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "disposal"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bqg" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "disposal"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bqh" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"bqi" = (
+/obj/machinery/button/door{
+ id = "HoPFore";
+ name = "Fore Shutters";
+ pixel_x = -24;
+ pixel_y = 24;
+ req_access_txt = "57"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bqj" = (
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bqk" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bql" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/hallway/secondary/civilian)
+"bqm" = (
+/turf/closed/wall,
+/area/medical/medbay/lobby)
+"bqn" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bqo" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqp" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"bqq" = (
+/turf/closed/wall,
+/area/science/robotics/lab)
+"bqr" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqs" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/science/robotics/lab)
+"bqt" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/item/clothing/gloves/color/latex,
+/obj/item/clothing/suit/apron/surgical,
+/obj/item/clothing/mask/surgical,
+/obj/item/healthanalyzer,
+/obj/item/clothing/neck/stethoscope,
+/obj/item/razor,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bqu" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Waste Disposal Maintenance";
+ req_one_access_txt = "12;50"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bqv" = (
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"bqw" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/poddoor/preopen{
+ id = "EngiLockdown";
+ name = "Engineering Emergency Lockdown"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/camera{
+ c_tag = "Engineering - Entrance";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bqx" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqy" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/camera{
+ c_tag = "Supply - Mining Office";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bqz" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/junction/flip{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqA" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bqB" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Library Access"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/library)
+"bqC" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqD" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqE" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqF" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "E.V.A. Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bqG" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bqH" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bqI" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/portable_atmospherics/pump,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bqJ" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4
+ },
+/obj/machinery/airlock_sensor/incinerator_toxmix{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/engine,
+/area/science/mixing)
+"bqK" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bqL" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"bqM" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/storage/pill_bottle/dice,
+/obj/item/toy/cards/deck,
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"bqN" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqO" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bqP" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bqQ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/hallway/secondary/entry)
+"bqR" = (
+/obj/machinery/computer/operating{
+ dir = 1
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bqS" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bqT" = (
+/obj/machinery/computer/crew,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bqU" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"bqV" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/vending/snack/random,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bqW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bqX" = (
+/turf/closed/wall/mineral/titanium/nosmooth,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bqY" = (
+/obj/structure/sign/directions/medical{
+ pixel_x = -32;
+ pixel_y = -24
+ },
+/obj/structure/sign/directions/evac{
+ pixel_x = -32;
+ pixel_y = -32
+ },
+/obj/structure/sign/directions/supply{
+ pixel_x = -32;
+ pixel_y = -40
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bqZ" = (
+/obj/machinery/mineral/equipment_vendor,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bra" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"brb" = (
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/dark,
+/area/science/server{
+ name = "Computer Core"
+ })
+"brc" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"brd" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bre" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/central)
+"brf" = (
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"brg" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"brh" = (
+/obj/structure/sign/departments/custodian{
+ pixel_x = 32
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"bri" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/hallway/secondary/civilian)
+"brj" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Central Starboard Maintenance";
+ req_access_txt = "12"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/civilian)
+"brk" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/vending/cola/random,
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"brl" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/item/paper_bin,
+/obj/item/reagent_containers/glass/bottle/epinephrine,
+/obj/item/reagent_containers/dropper,
+/obj/item/stamp/denied{
+ pixel_x = -8;
+ pixel_y = -2
+ },
+/obj/item/stamp{
+ pixel_x = -8;
+ pixel_y = 2
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"brm" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"brn" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bro" = (
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"brp" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/table/glass,
+/obj/machinery/smartfridge/disks,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"brq" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"brr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/warning{
+ name = "\improper WARNING: MOVING MACHINERY";
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"brs" = (
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"brt" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/chapel/office)
+"bru" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"brv" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"brw" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/gateway)
+"brx" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"bry" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"brz" = (
+/obj/machinery/computer/rdconsole/robotics,
+/turf/open/floor/circuit,
+/area/science/robotics/lab)
+"brA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/poster/official/pda_ad600{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/lounge/jazz)
+"brB" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"brC" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"brD" = (
+/obj/structure/table,
+/obj/machinery/door/window/eastright{
+ name = "Auxiliary Tool Storage Desk";
+ req_access_txt = "12"
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/folder,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"brE" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"brF" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/white/full,
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"brG" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"brH" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"brI" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Central Hall - Aft";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"brJ" = (
+/obj/machinery/vending/assist,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"brK" = (
+/obj/structure/closet/crate/medical,
+/obj/item/storage/firstaid/regular{
+ empty = 1;
+ name = "First-Aid (empty)"
+ },
+/obj/item/storage/firstaid/regular{
+ empty = 1;
+ name = "First-Aid (empty)"
+ },
+/obj/item/storage/firstaid/regular{
+ empty = 1;
+ name = "First-Aid (empty)"
+ },
+/obj/item/healthanalyzer,
+/obj/item/healthanalyzer,
+/obj/item/healthanalyzer,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"brL" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"brM" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=2";
+ freq = 1400;
+ location = "Merchant Plaza"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"brN" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"brO" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible,
+/obj/effect/landmark/start/medical_doctor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"brP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"brQ" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"brR" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Construction Area";
+ req_access_txt = "31"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"brS" = (
+/obj/machinery/suit_storage_unit/open,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"brT" = (
+/obj/machinery/suit_storage_unit/open,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"brU" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/medical/medbay/lobby)
+"brV" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"brW" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock{
+ name = "Chapel Maintenance";
+ req_one_access_txt = "12;22;26;27;50"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"brX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"brY" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/camera{
+ c_tag = "Waste Disposal - Aft"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"brZ" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-02"
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"bsa" = (
+/obj/structure/table/glass,
+/obj/item/scalpel,
+/obj/item/storage/box/cups,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"bsb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"bsc" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/table/glass,
+/obj/item/reagent_containers/glass/bottle/ammonia,
+/obj/item/toy/figure/botanist{
+ pixel_x = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bsd" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/clothing/accessory/armband/hydro{
+ pixel_y = 4
+ },
+/obj/item/clothing/accessory/armband/hydro{
+ pixel_y = 4
+ },
+/obj/item/clothing/accessory/armband/hydro{
+ pixel_y = 4
+ },
+/obj/item/clothing/suit/hooded/wintercoat/hydro{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bse" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bsf" = (
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/structure/bed/dogbed/ian,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/sign/poster/official/love_ian{
+ pixel_y = 32
+ },
+/mob/living/simple_animal/pet/dog/corgi/Ian,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"bsg" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bsh" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external{
+ name = "Recycler Exterior Access";
+ req_one_access_txt = "13;50"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bsi" = (
+/obj/structure/disposalpipe/segment,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/obj/effect/landmark/xeno_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bsj" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/seed_extractor,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bsk" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bsl" = (
+/obj/machinery/status_display,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/storage/eva)
+"bsm" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bsn" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/table/glass,
+/obj/machinery/plantgenes{
+ pixel_y = 6
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bso" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/storage/tools)
+"bsp" = (
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"bsq" = (
+/obj/structure/table,
+/obj/machinery/door/window/southleft{
+ name = "Auxiliary Tool Storage Desk";
+ req_access_txt = "12"
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/book/manual/wiki/engineering_hacking,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"bsr" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced,
+/obj/structure/table,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/sheet/glass/fifty{
+ pixel_x = -6;
+ pixel_y = 2
+ },
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"bss" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/item/hand_labeler{
+ pixel_y = 8
+ },
+/obj/item/storage/firstaid/regular,
+/obj/item/book/manual/wiki/medicine{
+ pixel_x = -6
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bst" = (
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bsu" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bsv" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/sign/warning/vacuum/external,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bsw" = (
+/turf/open/floor/plasteel/stairs/left,
+/area/hydroponics)
+"bsx" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/external{
+ name = "Recycler Exterior Access";
+ req_one_access_txt = "13;50"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bsy" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bsz" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bsA" = (
+/turf/open/floor/plasteel/stairs/right,
+/area/hydroponics)
+"bsB" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bsC" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Hydroponics - Aft"
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bsD" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bsE" = (
+/obj/structure/reagent_dispensers/watertank/high,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/obj/item/reagent_containers/glass/bucket,
+/turf/open/floor/grass,
+/area/hydroponics)
+"bsF" = (
+/obj/machinery/vending/hydronutrients,
+/turf/open/floor/grass,
+/area/hydroponics)
+"bsG" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-03"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bsH" = (
+/obj/structure/table/glass,
+/obj/item/storage/box/syringes{
+ pixel_y = 4
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"bsI" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bsJ" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/spray/plantbgone{
+ pixel_x = 12;
+ pixel_y = 8
+ },
+/obj/item/reagent_containers/spray/plantbgone{
+ pixel_x = 2;
+ pixel_y = 9
+ },
+/obj/item/reagent_containers/spray/plantbgone{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
+"bsK" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/light,
+/turf/open/floor/grass,
+/area/hydroponics)
+"bsL" = (
+/obj/effect/turf_decal/stripes/corner,
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bsM" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bsN" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bsO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/civilian)
+"bsP" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bsQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bsR" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bsS" = (
+/obj/machinery/door/window/northleft{
+ name = "Chapel Office";
+ req_access_txt = "22"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bsT" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/transit_tube/crossing/horizontal,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bsU" = (
+/obj/effect/landmark/start/roboticist,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"bsV" = (
+/turf/closed/wall,
+/area/maintenance/aft)
+"bsW" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/landmark/start/chaplain,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"bsX" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/engine,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bsY" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bsZ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bta" = (
+/turf/closed/wall/r_wall,
+/area/storage/tech)
+"btb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/computer/secure_data,
+/obj/machinery/requests_console{
+ department = "Detective";
+ departmentType = 5;
+ name = "Detective's Office RC";
+ pixel_y = 30
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"btc" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Custodial Closet APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"btd" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bte" = (
+/obj/structure/sign/warning/vacuum/external,
+/turf/closed/wall/r_wall,
+/area/quartermaster/miningoffice)
+"btf" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"btg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bth" = (
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/medical/medbay/lobby)
+"bti" = (
+/obj/machinery/door/window/eastleft{
+ name = "Waiting Room"
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"btj" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"btk" = (
+/obj/structure/sign/poster/official/nanomichi_ad{
+ pixel_x = 32
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"btl" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/vending/cola/random,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"btm" = (
+/obj/machinery/disposal/bin{
+ name = "Chapel Mailbox"
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/delivery/white,
+/obj/machinery/requests_console{
+ department = "Chapel";
+ departmentType = 2;
+ name = "Chapel RC";
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"btn" = (
+/obj/machinery/computer/mech_bay_power_console,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"bto" = (
+/turf/open/floor/mech_bay_recharge_floor,
+/area/science/robotics/lab)
+"btp" = (
+/obj/machinery/mech_bay_recharge_port{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/science/robotics/lab)
+"btq" = (
+/obj/machinery/vending/cigarette,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"btr" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bts" = (
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"btt" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Civilian Wing Hallway - Aft";
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/civilian)
+"btu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/hallway/secondary/civilian)
+"btv" = (
+/obj/structure/rack,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/storage/belt/utility,
+/obj/item/stack/cable_coil/random,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"btw" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plating{
+ icon_state = "platingdmg2"
+ },
+/area/maintenance/department/eva)
+"btx" = (
+/obj/machinery/space_heater,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bty" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"btz" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"btA" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"btB" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"btC" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"btD" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"btE" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Tech Storage";
+ req_access_txt = "23"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"btF" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"btG" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"btH" = (
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"btI" = (
+/obj/structure/closet/secure_closet/brig{
+ name = "Detainee Locker"
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"btJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/civilian)
+"btK" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Aft Maintenance";
+ req_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"btL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"btM" = (
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/obj/item/pen/fountain,
+/obj/machinery/newscaster{
+ pixel_x = 30
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"btN" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/structure/rack,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/item/stack/cable_coil/random,
+/obj/item/weldingtool,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"btO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"btP" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"btQ" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/techstorage/AI,
+/turf/open/floor/plating,
+/area/storage/tech)
+"btR" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"btS" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"btT" = (
+/turf/closed/wall/r_wall,
+/area/router)
+"btU" = (
+/obj/structure/chair/comfy/brown{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"btV" = (
+/obj/structure/sign/warning/securearea,
+/turf/closed/wall/r_wall,
+/area/storage/tech)
+"btW" = (
+/obj/structure/table,
+/obj/machinery/light,
+/obj/item/paper_bin,
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"btX" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"btY" = (
+/obj/machinery/door/window/eastright{
+ name = "Waiting Room"
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"btZ" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/router)
+"bua" = (
+/obj/machinery/camera{
+ c_tag = "Robotics Backroom";
+ dir = 8;
+ network = list("ss13","medbay");
+ pixel_y = -22
+ },
+/obj/structure/sign/poster/contraband/borg_fancy_2{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"bub" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"buc" = (
+/obj/structure/bed,
+/obj/item/clothing/glasses/sunglasses/blindfold,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"bud" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/conveyor{
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bue" = (
+/turf/closed/wall/r_wall,
+/area/router/eva)
+"buf" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/plasticflaps,
+/obj/machinery/door/window/northleft{
+ name = "Showers";
+ req_one_access_txt = "29;47"
+ },
+/turf/open/floor/plasteel,
+/area/science/lab)
+"bug" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/chapel/office)
+"buh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/closed/wall,
+/area/maintenance/disposal)
+"bui" = (
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"buj" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"buk" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/door/airlock/external{
+ name = "Routing Depot";
+ req_one_access_txt = "10;31"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bul" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bum" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bun" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"buo" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bup" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"buq" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/router)
+"bur" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bus" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "public_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router)
+"but" = (
+/turf/closed/wall/mineral/titanium/nosmooth,
+/area/hallway/primary/central)
+"buu" = (
+/obj/structure/table,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"buv" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"buw" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bux" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"buy" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"buz" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/start/cargo_technician,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"buA" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/medical/medbay/lobby)
+"buB" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external{
+ name = "Ferry Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"buC" = (
+/obj/structure/table/reinforced,
+/obj/item/integrated_circuit_printer,
+/obj/item/integrated_electronics/wirer,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"buD" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"buE" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/conveyor/auto{
+ id = "router"
+ },
+/turf/open/floor/plating,
+/area/router)
+"buF" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"buG" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"buH" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"buI" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"buJ" = (
+/obj/item/beacon,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"buK" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"buL" = (
+/obj/structure/closet/crate/coffin,
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"buM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/heads/cmo)
+"buN" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall/rust,
+/area/chapel/main)
+"buO" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall,
+/area/security/detectives_office)
+"buP" = (
+/obj/item/trash/plate,
+/obj/item/lighter/greyscale,
+/obj/item/clothing/mask/cigarette/cigar/cohiba,
+/obj/structure/table/wood/fancy,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"buQ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Chapel Morgue";
+ req_access_txt = "27"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"buR" = (
+/obj/item/storage/secure/safe{
+ pixel_x = 4;
+ pixel_y = 32
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/cobweb{
+ icon_state = "cobweb2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"buS" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/cmo)
+"buT" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/soft_cap_pop_art{
+ pixel_x = -32
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"buU" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/chips{
+ pixel_x = 3;
+ pixel_y = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"buV" = (
+/obj/structure/rack,
+/obj/item/circuitboard/machine/telecomms/processor,
+/obj/item/circuitboard/machine/telecomms/bus,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"buW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/janitor)
+"buX" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/bartender,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"buY" = (
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp/green,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"buZ" = (
+/obj/structure/closet/secure_closet/personal/cabinet,
+/obj/item/soulstone/anybody/chaplain,
+/obj/item/organ/heart,
+/obj/item/book/granter/spell/smoke/lesser,
+/obj/item/nullrod,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"bva" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/closed/wall,
+/area/janitor)
+"bvb" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bvc" = (
+/obj/machinery/computer/cargo/request,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bvd" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bve" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Construction Area";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/construction)
+"bvf" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-10"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"bvg" = (
+/obj/structure/table,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/item/destTagger,
+/obj/effect/turf_decal/bot,
+/obj/machinery/requests_console{
+ department = "EVA Router";
+ name = "EVA Router RC";
+ pixel_y = 28
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bvh" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"bvi" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"bvj" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bvk" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bvl" = (
+/obj/item/trash/plate,
+/obj/item/kitchen/fork,
+/obj/structure/table/wood/fancy,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bvm" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bvn" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bvo" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"bvp" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"bvq" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Kitchen";
+ req_access_txt = "28"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"bvr" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 5
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"bvs" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/maintenance/department/chapel)
+"bvt" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bvu" = (
+/turf/closed/wall/r_wall,
+/area/chapel/office)
+"bvv" = (
+/turf/closed/wall/r_wall/rust,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"bvw" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"bvx" = (
+/obj/structure/grille,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bvy" = (
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bvz" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall,
+/area/router/eva)
+"bvA" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 4
+ },
+/obj/effect/landmark/start/cook,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"bvB" = (
+/turf/closed/wall/r_wall/rust,
+/area/router)
+"bvC" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/mob/living/simple_animal/hostile/retaliate/goat{
+ name = "Pete"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"bvD" = (
+/obj/machinery/camera{
+ c_tag = "Bar - Starboard";
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bvE" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/holopad,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"bvF" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/vending/snack/random,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"bvG" = (
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp/green,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bvH" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/bar)
+"bvI" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/department/chapel)
+"bvJ" = (
+/obj/structure/chair/comfy/brown,
+/obj/effect/landmark/start/head_of_personnel,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"bvK" = (
+/obj/structure/table/optable,
+/obj/item/tank/internals/anesthetic,
+/obj/item/clothing/mask/breath,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bvL" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"bvM" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "External Construction Access";
+ req_one_access_txt = "10;31"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bvN" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/maintenance/department/chapel)
+"bvO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bvP" = (
+/obj/machinery/space_heater,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bvQ" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"bvR" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bvS" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bvT" = (
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bvU" = (
+/obj/item/caution,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/warning/biohazard{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bvV" = (
+/obj/structure/table,
+/obj/machinery/light/small,
+/obj/item/storage/pill_bottle/epinephrine,
+/obj/item/wrench{
+ pixel_x = -8
+ },
+/obj/item/extinguisher{
+ pixel_x = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bvW" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bvX" = (
+/obj/machinery/door/airlock/external{
+ name = "External Construction Access";
+ req_one_access_txt = "10;31"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bvY" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"bvZ" = (
+/obj/item/folder,
+/obj/structure/table/wood/fancy,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bwa" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bwb" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Chapel Air Hookup";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bwc" = (
+/obj/machinery/computer/atmos_alert{
+ dir = 8
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bwd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bwe" = (
+/obj/structure/girder,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bwf" = (
+/obj/machinery/computer/operating,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bwg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bwh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/requests_console{
+ department = "Routing Depot";
+ name = "Routing Depot RC";
+ pixel_y = 28
+ },
+/obj/machinery/button/massdriver{
+ id = "eva_in";
+ name = "mass driver button (EVA)";
+ pixel_x = -24
+ },
+/obj/machinery/button/massdriver{
+ id = "public_in";
+ name = "mass driver button (Public)";
+ pixel_x = -24;
+ pixel_y = 8
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bwi" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bwj" = (
+/obj/machinery/space_heater,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bwk" = (
+/obj/machinery/chem_master,
+/turf/open/floor/plating{
+ icon_state = "platingdmg2"
+ },
+/area/maintenance/disposal)
+"bwl" = (
+/obj/structure/closet/secure_closet/security,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/sign/poster/official/safety_report{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"bwm" = (
+/obj/structure/sign/departments/science,
+/turf/closed/wall/r_wall,
+/area/gateway)
+"bwn" = (
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bwo" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/mob/living/simple_animal/cockroach,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bwp" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bwq" = (
+/obj/structure/disposaloutlet,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bwr" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bws" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/autolathe,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bwt" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bwu" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/item/trash/can,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bwv" = (
+/obj/machinery/disposal/bin{
+ name = "Mass Driver"
+ },
+/obj/structure/sign/warning/deathsposal{
+ pixel_x = 32
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bww" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/structure/transit_tube/horizontal,
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bwx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/janitor)
+"bwy" = (
+/obj/machinery/vending/wardrobe/jani_wardrobe,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/janitor)
+"bwz" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bwA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"bwB" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/bot_assembly/medbot,
+/obj/item/clothing/head/hardhat{
+ pixel_x = -2;
+ pixel_y = 6;
+ pressure_resistance = 6
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bwC" = (
+/obj/structure/table,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/radio/off{
+ pixel_x = -3;
+ pixel_y = 1
+ },
+/obj/item/storage/box/mousetraps,
+/obj/item/light/tube,
+/obj/item/radio/off{
+ pixel_x = -3;
+ pixel_y = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Routing Depot"
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bwD" = (
+/obj/structure/table/reinforced,
+/obj/item/analyzer,
+/obj/item/wrench,
+/obj/item/screwdriver,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bwE" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bwF" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bwG" = (
+/obj/item/cigbutt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bwH" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/item/storage/box/mre/menu2/safe,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bwI" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bwJ" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"bwK" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 6
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bwL" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bwM" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 10
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bwN" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Toxins Lab - Port";
+ network = list("ss13","rd")
+ },
+/obj/machinery/meter,
+/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bwO" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bwP" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/landmark/start/station_engineer,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bwQ" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bwR" = (
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bwS" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/disposal/deliveryChute{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bwT" = (
+/obj/structure/disposaloutlet,
+/obj/structure/disposalpipe/trunk,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bwU" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass,
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bwV" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bwW" = (
+/turf/closed/wall,
+/area/maintenance/disposal)
+"bwX" = (
+/obj/machinery/conveyor{
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bwY" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bwZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/table,
+/obj/item/clothing/under/rank/mailman,
+/obj/item/clothing/head/mailman,
+/obj/item/wirecutters,
+/obj/item/stack/packageWrap,
+/turf/open/floor/plasteel,
+/area/router)
+"bxa" = (
+/obj/structure/frame/computer,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bxb" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera{
+ c_tag = "Waste Disposal - Port";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bxc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bxd" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bxe" = (
+/obj/item/stack/tile/plasteel{
+ pixel_x = 6;
+ pixel_y = 13
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bxf" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external{
+ name = "EVA Router";
+ req_access_txt = "19"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bxg" = (
+/obj/machinery/light/small,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/stack/tile/plasteel{
+ pixel_x = 8;
+ pixel_y = 14
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bxh" = (
+/obj/machinery/disposal/bin{
+ name = "Corpse Disposal"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery/red,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bxi" = (
+/obj/structure/closet/l3closet/janitor,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/item/clothing/gloves/color/purple,
+/obj/item/clothing/gloves/color/purple,
+/obj/item/clothing/under/janimaid,
+/obj/item/clothing/under/janimaid,
+/obj/structure/sign/poster/official/bless_this_spess{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"bxj" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/aft)
+"bxk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bxl" = (
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"bxm" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/tcommsat/computer)
+"bxn" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxo" = (
+/obj/machinery/door/airlock/external{
+ name = "Telecommunications External Access";
+ req_access_txt = "61"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"bxp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bxq" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"bxr" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/storage/box/lights/mixed,
+/obj/item/storage/box/lights/mixed,
+/obj/item/radio/off{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/restraints/legcuffs/beartrap,
+/obj/item/restraints/legcuffs/beartrap,
+/turf/open/floor/plasteel,
+/area/janitor)
+"bxs" = (
+/obj/item/storage/toolbox/mechanical/old,
+/obj/item/reagent_containers/food/snacks/chips{
+ pixel_x = 3;
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bxt" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Telecommunications External Access";
+ req_access_txt = "61"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"bxu" = (
+/obj/structure/rack,
+/obj/item/circuitboard/machine/telecomms/broadcaster,
+/obj/item/circuitboard/machine/telecomms/receiver,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxv" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxw" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/starboard/aft)
+"bxx" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxy" = (
+/obj/item/trash/candle,
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/disposal)
+"bxz" = (
+/obj/item/stack/cable_coil/red,
+/obj/item/multitool,
+/obj/item/wrench,
+/obj/item/stack/sheet/metal/five{
+ pixel_x = 6;
+ pixel_y = -6
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bxA" = (
+/obj/machinery/announcement_system,
+/turf/open/floor/plasteel/dark,
+/area/tcommsat/computer)
+"bxB" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/computer/message_monitor{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxC" = (
+/obj/structure/closet/emcloset/anchored,
+/obj/machinery/light/small,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"bxD" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/door/airlock/engineering{
+ name = "Telecommunications Chamber";
+ req_access_txt = "61"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxE" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 29
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bxG" = (
+/obj/structure/girder,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bxH" = (
+/turf/closed/wall,
+/area/storage/tech)
+"bxI" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxJ" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/rack,
+/obj/item/clothing/gloves/color/fyellow,
+/obj/item/clothing/suit/hooded/wintercoat/engineering,
+/obj/item/clothing/suit/hooded/wintercoat/engineering,
+/obj/item/clothing/shoes/winterboots,
+/obj/item/clothing/shoes/winterboots,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxK" = (
+/obj/structure/rack,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/radio/off,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bxM" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/hallway/primary/aft)
+"bxN" = (
+/obj/structure/rack,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/effect/spawner/lootdrop/techstorage/command,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bxO" = (
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bxP" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external{
+ name = "Central Starboard Exterior Access";
+ req_access_txt = "13"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bxQ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxR" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/conveyor_switch{
+ id = "MiningConveyer"
+ },
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bxS" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bxT" = (
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"bxU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bxV" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bxW" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxX" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxY" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bxZ" = (
+/obj/structure/table,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"bya" = (
+/obj/machinery/computer/telecomms/monitor{
+ dir = 1;
+ network = "tcommsat"
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"byb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/tcommsat/server)
+"byc" = (
+/obj/machinery/igniter/incinerator_toxmix,
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"byd" = (
+/obj/machinery/computer/crew,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"bye" = (
+/obj/structure/safe/floor,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/radio/headset/headset_cent,
+/obj/item/radio/headset/headset_cent,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"byf" = (
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Telecommunications Mainframe";
+ req_access_txt = "61"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/turf/open/floor/plasteel,
+/area/tcommsat/server)
+"byg" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"byh" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"byi" = (
+/turf/closed/wall/r_wall,
+/area/tcommsat/server)
+"byj" = (
+/turf/open/floor/plasteel,
+/area/tcommsat/server)
+"byk" = (
+/obj/machinery/telecomms/message_server,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byl" = (
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Telecommunications Mainframe";
+ req_access_txt = "61"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/server)
+"bym" = (
+/obj/machinery/announcement_system,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byn" = (
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"byo" = (
+/obj/structure/table/wood,
+/obj/item/clipboard,
+/obj/item/pen,
+/obj/item/pen{
+ pixel_x = 4;
+ pixel_y = 3
+ },
+/obj/machinery/camera{
+ c_tag = "Chapel Game Room";
+ dir = 1
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"byp" = (
+/obj/machinery/telecomms/bus/preset_three,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byq" = (
+/obj/machinery/telecomms/receiver/preset_left,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byr" = (
+/obj/structure/table/wood,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/flashlight/lamp/green,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"bys" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"byt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Central Starboard Exterior Access"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"byu" = (
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external{
+ name = "Central Starboard Exterior Access";
+ req_access_txt = "13"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"byv" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"byw" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"byx" = (
+/obj/machinery/telecomms/processor/preset_three,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byy" = (
+/obj/machinery/telecomms/bus/preset_one,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byz" = (
+/obj/machinery/telecomms/receiver/preset_right,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byA" = (
+/obj/machinery/telecomms/processor/preset_one,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byB" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"byC" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"byD" = (
+/obj/effect/landmark/start/roboticist,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"byE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/button/massdriver{
+ id = "eva_out";
+ pixel_x = 24;
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"byF" = (
+/obj/structure/window/reinforced/spawner,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "EVA"
+ },
+/turf/open/floor/plating,
+/area/router/eva)
+"byG" = (
+/obj/machinery/telecomms/server/presets/service,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byH" = (
+/obj/machinery/telecomms/server/presets/common,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byI" = (
+/obj/machinery/telecomms/hub/preset,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byJ" = (
+/obj/machinery/telecomms/server/presets/security,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byK" = (
+/obj/machinery/telecomms/server/presets/command,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byL" = (
+/obj/machinery/telecomms/server/presets/science,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"byM" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Chapel Maintenance";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"byN" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/medical/morgue)
+"byO" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stack/tile/plasteel{
+ pixel_x = 3;
+ pixel_y = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"byP" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/portable_atmospherics/scrubber,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"byQ" = (
+/turf/closed/wall,
+/area/medical/morgue)
+"byR" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"byS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"byT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"byU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"byV" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"byW" = (
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 4;
+ sortType = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"byX" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"byY" = (
+/obj/vehicle/ridden/janicart,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/item/key/janitor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"byZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/window/reinforced/spawner,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "eva_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router/eva)
+"bza" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bzb" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external{
+ name = "Ferry Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bzc" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/techstorage/security,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bzd" = (
+/turf/open/floor/plating,
+/area/storage/tech)
+"bze" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/mob/living/simple_animal/cockroach,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bzf" = (
+/obj/structure/janitorialcart,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"bzg" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/janitor)
+"bzh" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bzi" = (
+/obj/item/cardboard_cutout,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bzj" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/item/flashlight,
+/obj/item/flashlight,
+/obj/item/assembly/flash,
+/obj/item/assembly/flash,
+/obj/item/clothing/glasses/meson,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bzk" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"bzl" = (
+/obj/structure/closet/secure_closet,
+/obj/effect/spawner/lootdrop/organ_spawner,
+/obj/effect/spawner/lootdrop/organ_spawner,
+/obj/effect/spawner/lootdrop/organ_spawner,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bzm" = (
+/obj/machinery/conveyor{
+ dir = 5;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bzn" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bzo" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/space/fragile,
+/obj/item/clothing/head/helmet/space/fragile,
+/obj/item/tank/internals/air,
+/obj/item/flashlight,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bzp" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bzq" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/sign/warning/pods{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bzr" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/obj/machinery/meter,
+/turf/closed/wall,
+/area/hallway/primary/aft)
+"bzs" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bzt" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bzu" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "MiningConveyer"
+ },
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningoffice)
+"bzv" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "MiningConveyer"
+ },
+/obj/structure/plasticflaps,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningoffice)
+"bzw" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "MiningConveyer"
+ },
+/obj/machinery/door/poddoor{
+ id = "MiningConveyerBlastDoor";
+ name = "Asteroid Mining Load Door"
+ },
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningoffice)
+"bzx" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Interrogation Room";
+ req_access_txt = "63"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"bzy" = (
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bzz" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"bzA" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/closed/wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bzB" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bzC" = (
+/obj/structure/closet/toolcloset,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bzD" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "evablock";
+ name = "EVA Router"
+ },
+/turf/open/floor/plating,
+/area/router/eva)
+"bzE" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bzF" = (
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bzG" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bzH" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/stock_parts/cell/high/plus{
+ pixel_y = 8
+ },
+/obj/item/stock_parts/cell/high/plus{
+ pixel_y = 8
+ },
+/obj/item/assembly/flash{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/assembly/flash{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/assembly/flash{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/assembly/flash{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/assembly/flash{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/item/assembly/flash{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bzI" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bzJ" = (
+/obj/structure/sign/warning/biohazard,
+/turf/closed/wall,
+/area/science/robotics/lab)
+"bzK" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/red/full,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bzL" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bzM" = (
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/disposal/deliveryChute{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bzN" = (
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bzO" = (
+/obj/machinery/conveyor_switch/oneway{
+ id = "recycler";
+ name = "Recycler Conveyor Control"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bzP" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plating,
+/area/router)
+"bzQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bzR" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bzS" = (
+/obj/structure/table,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/item/clothing/gloves/color/latex,
+/obj/item/healthanalyzer,
+/obj/item/reagent_containers/spray/cleaner,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bzT" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/port/central";
+ dir = 4;
+ name = "Central Port Maintenance APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"bzU" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 6
+ },
+/obj/machinery/meter,
+/turf/closed/wall,
+/area/hallway/primary/aft)
+"bzV" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bzW" = (
+/obj/machinery/vending/assist,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bzX" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research{
+ name = "Toxins Launch Room";
+ req_access_txt = "7;8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bzY" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bzZ" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/quartermaster/miningoffice)
+"bAa" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bAb" = (
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
+"bAc" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"bAd" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bAe" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bAf" = (
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
+"bAg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"bAh" = (
+/obj/item/reagent_containers/food/condiment/pack/mustard{
+ pixel_x = 6;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/food/condiment/pack/ketchup{
+ pixel_x = -2;
+ pixel_y = 6
+ },
+/obj/item/reagent_containers/food/condiment/peppermill{
+ pixel_x = -5;
+ pixel_y = 7
+ },
+/obj/item/reagent_containers/food/condiment/saltshaker{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/obj/structure/table/wood/fancy,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bAi" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bAj" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plasteel,
+/area/janitor)
+"bAk" = (
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Recycler";
+ req_one_access_txt = "12;50"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bAl" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bAm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/cigbutt,
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bAn" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/gateway)
+"bAo" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bAp" = (
+/obj/structure/bed,
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/item/bedsheet/purple,
+/obj/effect/landmark/start/janitor,
+/turf/open/floor/plasteel,
+/area/janitor)
+"bAq" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bAr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bAs" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bAt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Fore Maintenance - Starboard";
+ pixel_x = 22
+ },
+/obj/structure/sign/warning{
+ name = "\improper CONSTRUCTION AREA";
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bAu" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bAv" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/structure/bed,
+/obj/item/bedsheet/qm,
+/obj/effect/landmark/start/quartermaster,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bAw" = (
+/obj/item/paper/fluff/bee_objectives,
+/obj/item/toy/plush/beeplushie,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"bAx" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bAy" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bAz" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bAA" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/camera{
+ c_tag = "Supply - Warehouse Exterior";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bAB" = (
+/obj/item/beacon,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bAC" = (
+/obj/machinery/recharge_station,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"bAD" = (
+/obj/machinery/recharge_station,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"bAE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/landmark/start/ai/secondary,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"bAF" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/turf/open/floor/plating,
+/area/science/mixing)
+"bAG" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bAH" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bAI" = (
+/obj/machinery/photocopier,
+/obj/machinery/requests_console{
+ department = "Law Office";
+ name = "Law Office RC";
+ pixel_y = 32
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"bAJ" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/item/clothing/neck/stethoscope,
+/obj/item/clothing/glasses/hud/health,
+/obj/item/stamp/cmo,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/heads/cmo";
+ dir = 1;
+ name = "Chief Medical Officer's Office APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"bAK" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bAL" = (
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: WASTE EJECTION";
+ pixel_x = -32
+ },
+/turf/open/space/basic,
+/area/space)
+"bAM" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bAN" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
+ dir = 1
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bAO" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bAP" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bAQ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bAR" = (
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Thermo-Electric Generator Room";
+ req_access_txt = "10"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/heavy,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"bAS" = (
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/disposal)
+"bAT" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bAU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bAV" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bAW" = (
+/obj/structure/sign/poster/official/get_your_legs,
+/turf/closed/wall,
+/area/hallway/secondary/exit)
+"bAX" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/photocopier,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"bAY" = (
+/obj/machinery/status_display,
+/turf/closed/wall,
+/area/hallway/secondary/exit)
+"bAZ" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/carpet,
+/area/chapel/main)
+"bBa" = (
+/obj/structure/sign/poster/official/help_others,
+/turf/closed/wall,
+/area/hallway/secondary/exit)
+"bBb" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/grille/broken,
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/maintenance/department/chapel)
+"bBc" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 8
+ },
+/area/hallway/secondary/exit)
+"bBd" = (
+/obj/structure/table,
+/obj/item/reagent_containers/food/snacks/popcorn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bBe" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/structure/sign/warning/pods{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bBf" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"bBg" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"bBh" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "recycler"
+ },
+/obj/structure/sign/warning/vacuum{
+ pixel_x = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bBi" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bBj" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/highcap/ten_k{
+ areastring = "/area/crew_quarters/heads/captain";
+ dir = 4;
+ name = "Captain's Quarters APC";
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/captain)
+"bBk" = (
+/obj/structure/disposaloutlet{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bBl" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bBm" = (
+/obj/structure/chair,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 4
+ },
+/area/hallway/secondary/exit)
+"bBn" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bBo" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Thermo-Electric Generator";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"bBp" = (
+/obj/machinery/conveyor/inverted{
+ dir = 9;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bBq" = (
+/obj/machinery/recycler,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bBr" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bBs" = (
+/obj/machinery/aug_manipulator,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"bBt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"bBu" = (
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bBv" = (
+/turf/closed/wall,
+/area/router)
+"bBw" = (
+/obj/structure/chair,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel/white/corner{
+ dir = 4
+ },
+/area/hallway/secondary/exit)
+"bBx" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/electrical,
+/obj/item/clothing/gloves/color/yellow,
+/obj/item/multitool,
+/obj/item/t_scanner,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bBy" = (
+/obj/machinery/recharge_station,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bBz" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bBA" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/structure/ore_box,
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bBB" = (
+/obj/machinery/conveyor/auto{
+ id = "router"
+ },
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 1;
+ sortType = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bBC" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bBD" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bBE" = (
+/obj/structure/grille,
+/obj/machinery/power/terminal,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bBF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bBG" = (
+/obj/machinery/conveyor/inverted{
+ dir = 10;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bBH" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bBI" = (
+/obj/machinery/computer/shuttle/mining,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bBJ" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"bBK" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/button/door{
+ id = "recycleraccess";
+ name = "Recycler Access Control";
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bBL" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bBM" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bBN" = (
+/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/science/mixing)
+"bBO" = (
+/turf/closed/wall/r_wall,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bBP" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/medical/chemistry)
+"bBQ" = (
+/turf/closed/wall,
+/area/medical/chemistry)
+"bBR" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ dir = 1;
+ name = "Computer Core APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bBS" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bBT" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bBU" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/structure/sign/departments/cargo{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bBV" = (
+/obj/machinery/light/small,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bBW" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bBX" = (
+/obj/machinery/door/airlock/external{
+ name = "Routing Depot";
+ req_one_access_txt = "10;31"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bBY" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/external{
+ name = "EVA Router";
+ req_access_txt = "19"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bBZ" = (
+/turf/closed/wall,
+/area/hallway/secondary/exit)
+"bCa" = (
+/obj/machinery/power/smes/engineering,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bCb" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"bCc" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bCd" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"bCe" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Head of Personnel's Desk";
+ departmentType = 5;
+ name = "Head of Personnel RC";
+ pixel_y = -30
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"bCf" = (
+/obj/structure/sign/warning/fire,
+/turf/closed/wall/r_wall,
+/area/medical/chemistry)
+"bCg" = (
+/turf/closed/wall/r_wall,
+/area/medical/chemistry)
+"bCh" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/medical/medbay/central)
+"bCi" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bCj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/maintenance/disposal)
+"bCk" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 1
+ },
+/turf/closed/wall,
+/area/maintenance/disposal)
+"bCl" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bCm" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/vacuum/external,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bCn" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bCo" = (
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bCp" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bCq" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/obj/machinery/door/poddoor{
+ id = "recycleraccess";
+ name = "Recycler Access"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bCr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bCs" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bCt" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/table,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/item/storage/box/engineer{
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"bCu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bCv" = (
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"bCw" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "eva"
+ },
+/turf/open/floor/plating,
+/area/router/eva)
+"bCx" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bCy" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/window/reinforced/spawner/north,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "eva"
+ },
+/turf/open/floor/plating,
+/area/router/eva)
+"bCz" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/closet/secure_closet/engineering_personal,
+/obj/item/clothing/under/overalls,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bCA" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bCB" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/grille/broken,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bCC" = (
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bCD" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1;
+ sortType = 29
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bCE" = (
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "eva"
+ },
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "evablock";
+ name = "EVA Router"
+ },
+/turf/open/floor/plating,
+/area/router/eva)
+"bCF" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"bCG" = (
+/obj/item/cigbutt,
+/obj/item/radio/intercom{
+ frequency = 1359;
+ name = "Station Intercom (Security)";
+ pixel_x = -26
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bCH" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bCI" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bCJ" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 9
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"bCK" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = -26
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bCL" = (
+/turf/closed/wall/rust,
+/area/security/detectives_office)
+"bCM" = (
+/turf/closed/wall/r_wall/rust,
+/area/security/detectives_office)
+"bCN" = (
+/obj/structure/filingcabinet,
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bCO" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bCP" = (
+/obj/structure/table/wood,
+/obj/item/storage/briefcase,
+/obj/item/taperecorder,
+/obj/item/radio{
+ pixel_x = -6
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bCQ" = (
+/obj/structure/table/wood,
+/obj/machinery/computer/med_data/laptop{
+ dir = 8;
+ pixel_y = 2
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bCR" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/mass_driver{
+ dir = 8;
+ id = "airbridge_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bCS" = (
+/obj/structure/closet,
+/obj/machinery/camera{
+ c_tag = "Central Plaza - Legal Desk";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bCT" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/sorting/mail/flip,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bCU" = (
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/maintenance/disposal)
+"bCV" = (
+/turf/open/floor/plating/airless,
+/area/maintenance/disposal)
+"bCW" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Thermo-Electric Generator";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plasteel,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"bCX" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/snack/random,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bCY" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/robotics/lab)
+"bCZ" = (
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "router_off"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bDa" = (
+/obj/structure/bodycontainer/morgue,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bDb" = (
+/mob/living/simple_animal/mouse/white{
+ desc = "Wubba lubba dub dub.";
+ name = "Rick"
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bDc" = (
+/obj/machinery/vending/security,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/cobweb{
+ icon_state = "cobweb2"
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bDd" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bDe" = (
+/obj/machinery/disposal/bin{
+ name = "Corpse Delivery"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery/red,
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"bDf" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/techstorage/service,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bDg" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/techstorage/medical,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bDh" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/techstorage/rnd,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bDi" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock{
+ name = "Service Hallway";
+ req_one_access_txt = "25;26;28;35"
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"bDj" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/pipe_meter,
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"bDk" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 8;
+ sortType = 15
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"bDl" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bDm" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bDn" = (
+/obj/machinery/icecream_vat,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"bDo" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bDp" = (
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"bDq" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"bDr" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/item/pipe_meter,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"bDs" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"bDt" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"bDu" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/book/manual/wiki/barman_recipes,
+/obj/item/reagent_containers/rag,
+/obj/structure/table/wood/fancy,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bDv" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"bDw" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "AIShutter";
+ name = "AI Core Shutters"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"bDx" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDy" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bDz" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Service Hallway - Aft";
+ pixel_x = 22
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDA" = (
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/service)
+"bDB" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"bDC" = (
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDD" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "router_off"
+ },
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/router)
+"bDE" = (
+/obj/structure/closet/crate/freezer,
+/obj/item/reagent_containers/food/snacks/store/cheesewheel,
+/obj/item/reagent_containers/food/snacks/grown/pineapple,
+/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
+/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/obj/item/reagent_containers/food/snacks/grown/bluecherries,
+/obj/item/reagent_containers/food/snacks/grown/citrus/lime,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDF" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDG" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDH" = (
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDI" = (
+/obj/structure/closet/crate/freezer,
+/obj/effect/spawner/lootdrop/three_course_meal,
+/obj/item/reagent_containers/food/snacks/chocolatebar,
+/obj/item/reagent_containers/food/snacks/chocolatebar,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDJ" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"bDK" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/hallway/secondary/service)
+"bDL" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bDM" = (
+/obj/structure/table/reinforced,
+/obj/item/transfer_valve{
+ pixel_x = 6
+ },
+/obj/item/transfer_valve{
+ pixel_x = 6
+ },
+/obj/item/transfer_valve,
+/obj/item/transfer_valve,
+/obj/item/transfer_valve{
+ pixel_x = -6
+ },
+/obj/item/transfer_valve{
+ pixel_x = -6
+ },
+/obj/machinery/camera{
+ c_tag = "Toxins Lab - Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "Station Intercom (Common)";
+ pixel_x = 28
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bDN" = (
+/obj/machinery/vending/cola/random,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bDO" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bDP" = (
+/obj/machinery/computer/message_monitor{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/circuit,
+/area/bridge)
+"bDQ" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bDR" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"bDS" = (
+/turf/open/floor/plasteel/stairs,
+/area/crew_quarters/bar)
+"bDT" = (
+/obj/machinery/chem_heater,
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"bDU" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "AIShutter";
+ name = "AI Core Shutters"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"bDV" = (
+/turf/open/floor/plasteel/stairs/left,
+/area/crew_quarters/bar)
+"bDW" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"bDX" = (
+/turf/open/floor/plasteel/stairs/right,
+/area/crew_quarters/bar)
+"bDY" = (
+/obj/structure/sign/barsign,
+/turf/closed/wall,
+/area/crew_quarters/bar)
+"bDZ" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 4;
+ sortType = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bEa" = (
+/obj/structure/chair/stool/bar,
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"bEb" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"bEc" = (
+/obj/structure/table,
+/obj/item/radio/off{
+ pixel_x = -3;
+ pixel_y = 1
+ },
+/obj/item/radio/off{
+ pixel_x = 7;
+ pixel_y = -3
+ },
+/obj/item/radio/off{
+ pixel_x = 4;
+ pixel_y = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/circuit,
+/area/bridge)
+"bEd" = (
+/obj/machinery/vending/cigarette,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bEe" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "router_off"
+ },
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bEf" = (
+/obj/structure/reagent_dispensers,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"bEg" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bEh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bEi" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bEj" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/structure/closet/crate,
+/obj/machinery/camera{
+ c_tag = "Waste Disposal - Starboard"
+ },
+/obj/item/stack/tile/noslip/thirty,
+/obj/structure/sign/poster/official/ue_no{
+ pixel_y = 32
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/maintenance/disposal)
+"bEk" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bEl" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bEm" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Head of Personnel's Office";
+ req_access_txt = "57"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"bEn" = (
+/obj/machinery/computer/card{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"bEo" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bEp" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/solars/starboard/fore)
+"bEq" = (
+/obj/machinery/computer/security{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint)
+"bEr" = (
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/locker";
+ dir = 8;
+ name = "Locker Room APC";
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bEs" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/ai_monitored/storage/eva";
+ dir = 4;
+ name = "EVA APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/checker,
+/area/ai_monitored/storage/eva)
+"bEt" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bEu" = (
+/obj/structure/sign/warning{
+ name = "\improper CONSTRUCTION AREA";
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"bEv" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"bEw" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Starboard Bow Solar Maintenance";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bEx" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bEy" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/item/stock_parts/cell/high/plus,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bEz" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"bEA" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Starboard Bow Solar Maintenance";
+ req_access_txt = "10"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/fore)
+"bEB" = (
+/obj/structure/rack,
+/obj/structure/sign/warning/electricshock{
+ pixel_y = 32
+ },
+/obj/item/radio/off{
+ pixel_x = 7;
+ pixel_y = 4
+ },
+/obj/item/flashlight,
+/obj/item/crowbar/red,
+/obj/item/crowbar/red{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/radio/off{
+ pixel_x = -8
+ },
+/obj/effect/decal/cleanable/cobweb{
+ icon_state = "cobweb2"
+ },
+/obj/machinery/camera{
+ c_tag = "Starboard Bow Maintenance - Port";
+ pixel_x = 22
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"bEC" = (
+/obj/structure/table/glass,
+/obj/item/storage/fancy/donut_box,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bED" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bEE" = (
+/obj/structure/table,
+/obj/item/clothing/under/shorts/red,
+/obj/item/clothing/under/shorts/red,
+/obj/item/clothing/gloves/boxing{
+ pixel_y = 8
+ },
+/obj/item/clothing/gloves/boxing{
+ pixel_y = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bEF" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bEG" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"bEH" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/kitchen/backroom)
+"bEI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bEJ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bEK" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bEL" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Security Office";
+ req_access_txt = "63"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"bEM" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"bEN" = (
+/obj/machinery/computer/communications{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/camera{
+ c_tag = "Bridge - Captain's Quarters";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Captain's Desk";
+ departmentType = 5;
+ name = "Captain RC";
+ pixel_x = 30
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"bEO" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"bEP" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/sign/poster/official/high_class_martini{
+ pixel_x = -32
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"bEQ" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/disposal";
+ dir = 8;
+ name = "Waste Disposal APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bER" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/newscaster{
+ pixel_y = -28
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"bES" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"bET" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bEU" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bEV" = (
+/obj/item/radio/intercom{
+ frequency = 1359;
+ name = "Station Intercom (Security)";
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"bEW" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bEX" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"bEY" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bEZ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "AIShutter";
+ name = "AI Core Shutters"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"bFa" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/router)
+"bFb" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/router)
+"bFc" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bFd" = (
+/obj/structure/closet/crate/trashcart,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bFe" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/item/reagent_containers/glass/bucket,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bFf" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "AIShutter";
+ name = "AI Core Shutters"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai)
+"bFg" = (
+/obj/effect/turf_decal/tile/brown,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bFh" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bFi" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bFj" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/circuit/telecomms,
+/area/science/xenobiology)
+"bFk" = (
+/turf/open/floor/circuit/telecomms,
+/area/science/xenobiology)
+"bFl" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"bFm" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/stripes/line,
+/obj/item/paper_bin,
+/obj/item/pen/fourcolor,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bFn" = (
+/turf/open/floor/plating/asteroid,
+/area/chapel/main)
+"bFo" = (
+/obj/machinery/smartfridge/extract/preloaded,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bFp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bFq" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/stripes/line,
+/obj/item/slime_scanner,
+/obj/item/slime_scanner,
+/obj/item/clothing/gloves/color/latex,
+/obj/item/clothing/gloves/color/latex,
+/obj/item/clothing/glasses/science,
+/obj/item/clothing/glasses/science,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bFr" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"bFs" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bFt" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bFu" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/medical/chemistry)
+"bFv" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"bFw" = (
+/obj/machinery/monkey_recycler,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "area/science/xenobiology";
+ name = "Xenobiology Lab APC";
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bFx" = (
+/obj/machinery/chem_dispenser,
+/obj/effect/turf_decal/stripes/line,
+/obj/item/reagent_containers/glass/beaker/large,
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"bFy" = (
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/aft";
+ dir = 8;
+ name = "Head of Personnel APC";
+ pixel_x = -24
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"bFz" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/gateway)
+"bFA" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bFB" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bFC" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/item/storage/fancy/donut_box,
+/obj/item/storage/box/beakers,
+/obj/item/clothing/glasses/science,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bFD" = (
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bFE" = (
+/obj/machinery/smoke_machine,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"bFF" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"bFG" = (
+/obj/structure/sign/departments/chemistry,
+/turf/closed/wall,
+/area/medical/chemistry)
+"bFH" = (
+/obj/machinery/power/apc{
+ name = "Customs APC";
+ pixel_y = -24
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bFI" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bFJ" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bFK" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFL" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFM" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFN" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bFO" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFP" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFQ" = (
+/obj/structure/table,
+/obj/item/clothing/under/shorts/blue,
+/obj/item/clothing/under/shorts/blue,
+/obj/item/clothing/gloves/boxing/blue{
+ pixel_y = 8
+ },
+/obj/item/clothing/gloves/boxing/blue{
+ pixel_y = 8
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bFR" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-08"
+ },
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bFS" = (
+/obj/machinery/light,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bFT" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFU" = (
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFV" = (
+/obj/structure/window/reinforced,
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFW" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"bFX" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bFY" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/noticeboard{
+ pixel_y = 28
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bFZ" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bGa" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bGb" = (
+/obj/machinery/conveyor/auto{
+ id = "router"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bGc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bGd" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bGe" = (
+/mob/living/simple_animal/crab/Coffee,
+/turf/open/floor/plating/asteroid,
+/area/chapel/main)
+"bGf" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/security/main)
+"bGg" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/circuit,
+/area/ai_monitored/turret_protected/ai)
+"bGh" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bGi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bGj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bGk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/router)
+"bGl" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/poster/contraband/punch_shit{
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bGm" = (
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bGn" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"bGo" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"bGp" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"bGq" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/decal/cleanable/cobweb{
+ icon_state = "cobweb2"
+ },
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 2;
+ name = "2maintenance loot spawner"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/fore)
+"bGr" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bGs" = (
+/obj/machinery/vending/assist,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"bGt" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bGu" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Fore Maintenance";
+ req_one_access_txt = "12;46"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/port/fore)
+"bGv" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Arcade"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"bGw" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Fitness Room"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"bGx" = (
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness)
+"bGy" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/button/massdriver{
+ id = "eng_in";
+ name = "mass driver button (Engineering)";
+ pixel_x = 24;
+ pixel_y = -8
+ },
+/obj/machinery/button/massdriver{
+ id = "router_out";
+ name = "mass driver button (Other)";
+ pixel_x = 24;
+ pixel_y = 12
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bGz" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore)
+"bGA" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bGB" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bGC" = (
+/obj/structure/closet/emcloset,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/camera{
+ c_tag = "Starboard Quarter Maintenance - Starboard";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bGD" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bGE" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bGF" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Starboard Quarter Solar Access";
+ req_access_txt = "10"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bGG" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"bGH" = (
+/obj/structure/grille/broken,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/lootdrop/grille_or_trash,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"bGI" = (
+/turf/closed/wall/r_wall,
+/area/hallway/primary/central)
+"bGJ" = (
+/obj/structure/rack,
+/obj/item/storage/box/bodybags,
+/obj/item/clothing/gloves/color/grey,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bGK" = (
+/obj/machinery/conveyor{
+ id = "starboard_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"bGL" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bGM" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-20";
+ pixel_y = 3
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bGN" = (
+/obj/structure/closet/wardrobe/white,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bGO" = (
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/structure/window/reinforced/tinted{
+ dir = 1
+ },
+/obj/machinery/door/window/eastright{
+ name = "Bathroom Stall"
+ },
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"bGP" = (
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "secserv";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"bGQ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/violet/hidden,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bGR" = (
+/obj/structure/closet/wardrobe/grey,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/item/clothing/under/staffassistant,
+/obj/item/clothing/under/staffassistant,
+/obj/item/clothing/under/staffassistant,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bGS" = (
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/structure/window/reinforced/tinted{
+ dir = 1
+ },
+/obj/machinery/door/window/eastright{
+ name = "Bathroom Stall"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"bGT" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet)
+"bGU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/closed/wall,
+/area/maintenance/port/fore)
+"bGV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/closed/wall,
+/area/maintenance/port/fore)
+"bGW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/maintenance/port/fore)
+"bGX" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6{
+ pixel_x = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bGY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"bGZ" = (
+/obj/structure/closet/crate/internals,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bHa" = (
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 4;
+ light_color = "#d8b1b1"
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/router/eva";
+ dir = 4;
+ name = "EVA Router APC";
+ pixel_x = 24
+ },
+/obj/machinery/button/door{
+ id = "evablock";
+ name = "Router Access Control";
+ pixel_x = 24;
+ pixel_y = 10;
+ req_access_txt = "19"
+ },
+/turf/open/floor/plasteel,
+/area/router/eva)
+"bHb" = (
+/obj/structure/closet/wardrobe/black,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHc" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/disposaloutlet,
+/obj/structure/window/reinforced/spawner/north,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bHd" = (
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"bHe" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/violet/hidden,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bHf" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHg" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bHh" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/main)
+"bHi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"bHj" = (
+/obj/structure/table,
+/obj/structure/bedsheetbin/towel,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHk" = (
+/turf/closed/wall,
+/area/crew_quarters/locker)
+"bHl" = (
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/maintenance/port/fore)
+"bHm" = (
+/turf/open/floor/plating{
+ icon_state = "platingdmg1"
+ },
+/area/maintenance/port/fore)
+"bHn" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bHo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHp" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bHq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHr" = (
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHs" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHt" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bHu" = (
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHv" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/item/clothing/under/staffassistant,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHw" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/item/clothing/under/staffassistant,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHx" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHy" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-14"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
+"bHz" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bHA" = (
+/obj/machinery/atmospherics/pipe/simple/violet/hidden{
+ icon_state = "pipe11-2";
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/engine/gravity_generator)
+"bHB" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/crew_quarters/locker)
+"bHC" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bHD" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bHE" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bHF" = (
+/obj/structure/table/reinforced,
+/obj/item/assembly/timer{
+ pixel_x = -5
+ },
+/obj/item/assembly/timer{
+ pixel_y = -7
+ },
+/obj/item/assembly/timer{
+ pixel_y = 6
+ },
+/obj/item/assembly/timer{
+ pixel_x = 8
+ },
+/obj/machinery/airalarm/unlocked{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bHG" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay - Starboard";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bHH" = (
+/obj/structure/table,
+/obj/machinery/recharger,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/sign/poster/contraband/space_cube{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
+/area/gateway)
+"bHI" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bHJ" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bHK" = (
+/obj/structure/sign/warning/biohazard,
+/turf/closed/wall,
+/area/medical/morgue)
+"bHL" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bHM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/storage/tech)
+"bHN" = (
+/turf/closed/wall,
+/area/maintenance/solars/starboard/aft)
+"bHO" = (
+/obj/machinery/atmospherics/pipe/simple/violet/hidden{
+ icon_state = "pipe11-2";
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/engine/gravity_generator)
+"bHP" = (
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = -32
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bHQ" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bHR" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bHS" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/circuit/telecomms,
+/area/science/xenobiology)
+"bHT" = (
+/obj/machinery/computer/camera_advanced/xenobio{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bHU" = (
+/obj/structure/chair/office/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bHV" = (
+/obj/machinery/processor/slime,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bHW" = (
+/obj/structure/chair/office/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bHX" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Port Bow Maintenance";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"bHY" = (
+/obj/machinery/computer/camera_advanced/xenobio{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bHZ" = (
+/turf/closed/indestructible{
+ desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease";
+ icon_state = "riveted";
+ name = "hyper-reinforced wall"
+ },
+/area/science/test_area)
+"bIa" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bIb" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bIc" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/medical/chemistry)
+"bId" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/mob/living/simple_animal/bot/firebot,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIe" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIf" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/landmark/start/chemist,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/chair/office/light{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIg" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/item/reagent_containers/food/snacks/chips,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bIh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIj" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIk" = (
+/obj/machinery/smartfridge/chemistry/preloaded,
+/turf/closed/wall,
+/area/medical/chemistry)
+"bIl" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bIm" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bIn" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bIo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/directions/evac{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bIp" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bIq" = (
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bIr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bIs" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bIt" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bIu" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical{
+ name = "Morgue";
+ req_access_txt = "5;6"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bIv" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bIw" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bIx" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bIy" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external{
+ name = "External Solar Access";
+ req_access_txt = "10;13"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bIz" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bIA" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bIB" = (
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bIC" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/aft";
+ dir = 8;
+ name = "Aft Maintenance APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bID" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"bIE" = (
+/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
+/turf/open/floor/circuit/telecomms,
+/area/science/xenobiology)
+"bIF" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bIG" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bIH" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bII" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bIJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bIK" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/item/extinguisher{
+ pixel_x = -7;
+ pixel_y = 3
+ },
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bIL" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIM" = (
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bIN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bIO" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bIP" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bIQ" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bIR" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bIS" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bIT" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/obj/machinery/atmospherics/pipe/simple/violet/hidden{
+ icon_state = "pipe11-2";
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bIU" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bIV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bIW" = (
+/obj/structure/table/wood,
+/obj/machinery/light,
+/obj/item/reagent_containers/food/drinks/bottle/absinthe,
+/obj/item/stack/spacecash/c20,
+/obj/item/coin/gold,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/heads/hop)
+"bIX" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bIY" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 10
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bIZ" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bJa" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bJb" = (
+/obj/machinery/bloodbankgen,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bJc" = (
+/obj/structure/closet/secure_closet/personal/patient,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bJd" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bJe" = (
+/obj/structure/closet/secure_closet/personal/patient,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bJf" = (
+/obj/structure/closet/secure_closet/personal/patient,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bJg" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/storage/box/rxglasses{
+ pixel_x = 2
+ },
+/obj/item/pen,
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bJh" = (
+/obj/structure/sign/warning/biohazard,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/medical/morgue)
+"bJi" = (
+/obj/structure/bodycontainer/morgue,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bJj" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 6
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bJk" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bJl" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bJm" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/lawoffice";
+ dir = 1;
+ name = "Information Office APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bJn" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/clothing/suit/straight_jacket,
+/obj/item/clothing/suit/straight_jacket,
+/obj/item/clothing/mask/muzzle,
+/obj/item/clothing/mask/muzzle,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bJo" = (
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"bJp" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bJq" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"bJr" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
+ dir = 1
+ },
+/turf/open/floor/circuit/telecomms,
+/area/science/xenobiology)
+"bJs" = (
+/obj/structure/rack,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/item/clothing/suit/hooded/wintercoat/science,
+/obj/item/clothing/suit/hooded/wintercoat/science,
+/obj/item/clothing/shoes/winterboots,
+/obj/item/clothing/shoes/winterboots,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bJt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bJu" = (
+/obj/effect/turf_decal/loading_area,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/science/lab";
+ dir = 8;
+ name = "Research and Development APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bJv" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bJw" = (
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bJx" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/mask/gas,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bJy" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/door/airlock/public/glass,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bJz" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bJA" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research{
+ name = "Circuitry Lab";
+ req_access_txt = "47"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bJB" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bJC" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bJD" = (
+/obj/machinery/chem_heater,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"bJE" = (
+/obj/machinery/chem_dispenser,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/item/reagent_containers/glass/beaker/large,
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"bJF" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bJG" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bJH" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/medical/chemistry)
+"bJI" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bJJ" = (
+/obj/machinery/computer/med_data,
+/obj/structure/window/reinforced/spawner/east,
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"bJK" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/medical/medbay/lobby)
+"bJL" = (
+/obj/machinery/dna_scannernew,
+/obj/effect/turf_decal/bot,
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"bJM" = (
+/obj/machinery/camera/preset/toxins{
+ dir = 4;
+ network = list("rd","toxins","ss13")
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"bJN" = (
+/obj/machinery/clonepod,
+/obj/effect/turf_decal/bot,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"bJO" = (
+/obj/structure/table,
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/item/storage/firstaid/radbgone,
+/obj/item/reagent_containers/glass/beaker/synthflesh,
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"bJP" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bJQ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bJR" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bJS" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 8;
+ sortType = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bJT" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bJU" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bJV" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
+ dir = 1;
+ name = "euthanization chamber freezer"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bJW" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bJX" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bJY" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bJZ" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Main Access";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bKa" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bKb" = (
+/obj/machinery/chem_heater,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bKc" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -6
+ },
+/obj/item/reagent_containers/glass/beaker{
+ pixel_x = 4
+ },
+/obj/item/reagent_containers/dropper,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bKd" = (
+/obj/structure/closet/bombcloset,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bKe" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bKf" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bKg" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bKh" = (
+/obj/machinery/door/window/westleft{
+ name = "Operating Theatre";
+ req_access_txt = "45"
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"bKi" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/stripes/red/full,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bKj" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bKk" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical{
+ name = "Morgue Maintenance";
+ req_access_txt = "6"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bKl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/disposaloutlet,
+/turf/open/floor/plating,
+/area/router)
+"bKm" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/item/storage/box/bodybags,
+/obj/structure/table,
+/obj/structure/table,
+/obj/item/bodybag,
+/obj/item/pen/blue,
+/obj/item/pen/red{
+ pixel_y = 6
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bKn" = (
+/obj/structure/disposaloutlet{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/red/full,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bKo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/vacuum/external,
+/turf/open/floor/plating,
+/area/quartermaster/miningoffice)
+"bKp" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/caution/stand_clear{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bKq" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/caution/stand_clear{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bKr" = (
+/obj/item/stack/packageWrap,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bKs" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bKt" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bKu" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bKv" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bKw" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/nanotrasen_logo{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"bKx" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bKy" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bKz" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/medical/genetics)
+"bKA" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/medical/genetics)
+"bKB" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bKC" = (
+/obj/structure/sign/warning/biohazard,
+/turf/closed/wall,
+/area/medical/genetics)
+"bKD" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Mining Dock Ferry";
+ req_access_txt = "48"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bKE" = (
+/obj/structure/disposaloutlet,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bKF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bKG" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"bKH" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/science/storage)
+"bKI" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/engine,
+/area/science/mixing)
+"bKJ" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bKK" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bKL" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bKM" = (
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bKN" = (
+/obj/machinery/vending/wardrobe/chem_wardrobe,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bKO" = (
+/obj/structure/closet/crate/medical,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/reagent_containers/glass/bottle/ammonia,
+/obj/item/reagent_containers/glass/bottle/atropine,
+/obj/item/reagent_containers/glass/bottle/bromine,
+/obj/item/reagent_containers/glass/bottle/charcoal,
+/obj/item/reagent_containers/glass/bottle/diethylamine,
+/obj/item/reagent_containers/glass/bottle/epinephrine,
+/obj/item/reagent_containers/glass/bottle/ethanol,
+/obj/item/reagent_containers/glass/bottle/formaldehyde,
+/obj/item/reagent_containers/glass/bottle/iron,
+/obj/item/reagent_containers/glass/bottle/morphine,
+/obj/item/reagent_containers/glass/bottle/salglu_solution,
+/obj/item/reagent_containers/glass/bottle/toxin,
+/obj/item/reagent_containers/glass/bottle/carbon,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bKP" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/machinery/door/window/northright{
+ name = "Emergency Shower"
+ },
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"bKQ" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/machinery/shower{
+ dir = 8;
+ name = "emergency shower";
+ pixel_y = -4
+ },
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"bKR" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Library";
+ network = list("ss13","rd")
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"bKS" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Genetics Lab";
+ req_access_txt = "9"
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bKT" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bKU" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/vending/wardrobe/gene_wardrobe,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bKV" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/item/clipboard{
+ pixel_y = 3
+ },
+/obj/item/paper_bin,
+/obj/item/hand_labeler,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bKW" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/item/folder/white,
+/obj/item/storage/pill_bottle/mannitol{
+ pixel_x = 4
+ },
+/obj/item/storage/pill_bottle/mutadone,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bKX" = (
+/obj/structure/table_frame,
+/obj/item/t_scanner{
+ pixel_x = -4
+ },
+/obj/machinery/camera{
+ c_tag = "Supply - Warehouse Fore";
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bKY" = (
+/turf/closed/wall,
+/area/medical/genetics)
+"bKZ" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bLa" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bLb" = (
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/item/stack/ore/glass,
+/obj/item/stack/ore/iron,
+/obj/item/stack/ore/silver,
+/obj/item/stack/ore/silver,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bLc" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bLd" = (
+/mob/living/simple_animal/slime,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bLe" = (
+/obj/machinery/door/window/westright{
+ name = "Containment Pen";
+ req_one_access_txt = "55"
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bLf" = (
+/obj/machinery/door/window/eastleft{
+ name = "Containment Pen";
+ req_one_access_txt = "55"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bLg" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bLh" = (
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bLi" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bLj" = (
+/obj/machinery/door/window/westright{
+ name = "Containment Pen";
+ req_one_access_txt = "55"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bLk" = (
+/obj/machinery/door/window/eastleft{
+ name = "Containment Pen";
+ req_one_access_txt = "55"
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bLl" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bLm" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bLn" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/item/caution,
+/obj/item/shovel,
+/obj/item/stack/tile/plasteel{
+ pixel_x = 10;
+ pixel_y = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bLo" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bLp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"bLq" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Genetics Lab";
+ req_access_txt = "9"
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bLr" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bLs" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/landmark/start/geneticist,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bLt" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bLu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bLv" = (
+/obj/machinery/light,
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bLw" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 6
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bLx" = (
+/obj/structure/chair/office/light{
+ dir = 4
+ },
+/obj/effect/landmark/start/scientist,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bLy" = (
+/obj/structure/disposaloutlet{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bLz" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bLA" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/structure/table,
+/obj/item/stack/sheet/metal,
+/obj/item/stack/sheet/glass,
+/obj/item/flashlight,
+/obj/item/assembly/health,
+/obj/item/assembly/voice,
+/obj/item/assembly/timer,
+/obj/item/assembly/infra,
+/obj/item/assembly/igniter,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bLB" = (
+/obj/vehicle/ridden/wheelchair,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bLC" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai)
+"bLD" = (
+/obj/structure/closet/firecloset,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bLE" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/button/ignition/incinerator/toxmix{
+ pixel_x = -24;
+ pixel_y = 8
+ },
+/obj/machinery/button/door/incinerator_vent_toxmix{
+ pixel_x = -24;
+ pixel_y = -2
+ },
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bLF" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bLG" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Research Aft";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bLH" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bLI" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"bLJ" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bLK" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bLL" = (
+/obj/vehicle/ridden/wheelchair,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bLM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/medical/genetics)
+"bLN" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bLO" = (
+/obj/item/pipe{
+ pixel_x = -3
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/mob/living/simple_animal/bot/cleanbot{
+ auto_patrol = 1;
+ icon_state = "cleanbot1";
+ name = "Mopficcer Sweepsky"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bLP" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bLQ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bLR" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bLS" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bLT" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bLU" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bLV" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bLW" = (
+/obj/machinery/vending/coffee,
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"bLX" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-02"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bLY" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bLZ" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bMa" = (
+/obj/vehicle/ridden/wheelchair,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bMb" = (
+/obj/machinery/dna_scannernew,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bMc" = (
+/obj/machinery/computer/scan_consolenew{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bMd" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bMe" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bMf" = (
+/obj/machinery/computer/scan_consolenew{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bMg" = (
+/obj/machinery/dna_scannernew,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"bMh" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bMi" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bMj" = (
+/turf/closed/wall,
+/area/medical/medbay/central)
+"bMk" = (
+/turf/closed/wall,
+/area/medical/virology)
+"bMl" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/medical/virology)
+"bMm" = (
+/obj/structure/table/wood,
+/obj/machinery/light,
+/obj/item/clothing/under/assistantformal{
+ pixel_y = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"bMn" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/door/airlock/medical/glass{
+ name = "Monkey Pen";
+ req_one_access_txt = "9;39"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMo" = (
+/obj/structure/closet/l3closet/virology,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMp" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bMq" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Starboard Quarter Maintenance - Port";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bMr" = (
+/obj/machinery/vending/wardrobe/viro_wardrobe,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMs" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMt" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 10
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bMu" = (
+/obj/machinery/atmospherics/components/unary/tank/air{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMv" = (
+/turf/open/floor/grass,
+/area/medical/virology)
+"bMw" = (
+/mob/living/carbon/monkey,
+/turf/open/floor/grass,
+/area/medical/virology)
+"bMx" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/structure/sign/warning/biohazard{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bMy" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/sign/warning/biohazard{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bMz" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/router";
+ dir = 4;
+ name = "Router APC";
+ pixel_x = 24
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 4;
+ sortType = 19
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bMA" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/router)
+"bMC" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMD" = (
+/obj/structure/flora/tree/palm{
+ pixel_x = 0
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/grass,
+/area/medical/virology)
+"bME" = (
+/obj/structure/flora/tree/palm{
+ pixel_x = 0
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/grass,
+/area/medical/virology)
+"bMF" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/window/southright{
+ name = "Cloning Access";
+ req_one_access_txt = "9;45"
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bMG" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bMH" = (
+/obj/structure/table,
+/obj/machinery/recharger,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/item/crowbar,
+/obj/machinery/requests_console{
+ department = "Mining";
+ name = "Mining RC";
+ pixel_x = -30
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bMI" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/grille/broken,
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 4;
+ sortType = 15
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bMJ" = (
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMK" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 5
+ },
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bML" = (
+/obj/structure/flora/tree/palm{
+ pixel_x = 0
+ },
+/turf/open/floor/grass,
+/area/medical/virology)
+"bMM" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bMN" = (
+/obj/structure/closet/l3closet/virology,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMO" = (
+/obj/structure/closet/secure_closet/medical1,
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMP" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMQ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bMR" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/rust,
+/area/router)
+"bMT" = (
+/obj/structure/chair/office/light{
+ dir = 8
+ },
+/obj/effect/landmark/start/virologist,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMU" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/item/storage/box/donkpockets,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bMV" = (
+/obj/machinery/light,
+/mob/living/carbon/monkey,
+/turf/open/floor/grass,
+/area/medical/virology)
+"bMW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bMX" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bMY" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bMZ" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bNa" = (
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bNb" = (
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bNc" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/chair/office/light{
+ dir = 1
+ },
+/obj/effect/landmark/start/virologist,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNd" = (
+/obj/machinery/computer/atmos_alert{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/engine/atmos)
+"bNe" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/machinery/door/window/northleft{
+ name = "AI Upload Chamber";
+ req_one_access_txt = "65"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/ai)
+"bNf" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/router)
+"bNg" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNh" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/virology/glass{
+ name = "Virology Interior Airlock";
+ req_access_txt = "39"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNi" = (
+/obj/effect/landmark/blobstart,
+/turf/open/floor/grass,
+/area/medical/virology)
+"bNj" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNk" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bNl" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bNm" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/paper_bin,
+/obj/item/pen/red,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNn" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "router_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bNo" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "starboard_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"bNp" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"bNq" = (
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bNr" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/bedsheetbin,
+/obj/item/clothing/glasses/science,
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"bNs" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNt" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bNu" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/grass,
+/area/medical/virology)
+"bNv" = (
+/obj/structure/sink{
+ dir = 1;
+ pixel_y = 25
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"bNw" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNx" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNy" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNz" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNA" = (
+/obj/machinery/smartfridge/chemistry/virology/preloaded,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNB" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/item/clothing/gloves/color/latex,
+/obj/item/healthanalyzer,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNC" = (
+/obj/structure/table,
+/obj/machinery/reagentgrinder,
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bND" = (
+/obj/machinery/computer/pandemic,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNE" = (
+/obj/machinery/computer/station_alert{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/corner,
+/area/engine/atmos)
+"bNF" = (
+/turf/open/floor/plasteel/stairs,
+/area/medical/medbay/central)
+"bNG" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"bNH" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"bNI" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/departments/evac,
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"bNJ" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/hallway/secondary/exit)
+"bNK" = (
+/obj/machinery/power/solar{
+ id = "aftstarboard";
+ name = "Aft-Starboard Solar Array"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/starboard/aft)
+"bNL" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"bNM" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/oil,
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"bNN" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/router/eva)
+"bNO" = (
+/obj/machinery/power/terminal{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bNP" = (
+/obj/machinery/power/smes,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"bNQ" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"bNR" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"bNS" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"bNT" = (
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/port/fore)
+"bNU" = (
+/obj/machinery/power/solar{
+ id = "aftstarboard";
+ name = "Aft-Starboard Solar Array"
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/airless/solarpanel,
+/area/solar/starboard/aft)
+"bNV" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bNW" = (
+/turf/open/floor/plasteel/stairs/left,
+/area/hallway/secondary/exit)
+"bNX" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/stairs/right,
+/area/hallway/secondary/exit)
+"bNY" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/stairs/left,
+/area/hallway/secondary/exit)
+"bNZ" = (
+/turf/open/floor/plasteel/stairs/right,
+/area/hallway/secondary/exit)
+"bOa" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/vacuum/external,
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"bOc" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"bOd" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"bOe" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external/glass{
+ name = "Departures Shuttle Dock"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOf" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"bOg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOi" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOj" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOk" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"bOl" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOm" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOn" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Shuttle Maintenance Access"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/docking,
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"bOp" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Departures Shuttle Dock"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bOq" = (
+/obj/machinery/power/tracker,
+/obj/structure/cable,
+/turf/open/floor/plating/airless,
+/area/solar/starboard/aft)
+"bOr" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bOs" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/canister/bz,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bOt" = (
+/obj/structure/table,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"bOu" = (
+/obj/structure/table/reinforced,
+/obj/item/assembly/prox_sensor{
+ pixel_x = 8
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = 8
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = 8
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = 8
+ },
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/obj/machinery/requests_console{
+ department = "Science";
+ departmentType = 2;
+ name = "Science RC";
+ pixel_x = 30;
+ receive_ore_updates = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bOv" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bOw" = (
+/obj/structure/lattice,
+/obj/item/reagent_containers/food/drinks/bottle/grappa,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bOx" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bOy" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bOz" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bOA" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"bOB" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/router/eva)
+"bOC" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/router/eva)
+"bOD" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 4
+ },
+/obj/machinery/sparker/toxmix{
+ pixel_x = 25
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bOE" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/item/hand_labeler,
+/obj/item/clothing/glasses/science,
+/obj/item/clothing/glasses/science,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bOF" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bOG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bOH" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/portable_atmospherics/canister,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bOI" = (
+/obj/structure/table/reinforced,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/computer/security/telescreen{
+ dir = 1;
+ name = "Test Chamber Monitor";
+ network = list("xeno");
+ pixel_y = 2
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bOJ" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bOK" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/window/northright{
+ name = "Secure Xenobiological Containment";
+ req_one_access_txt = "55"
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bOL" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/glasses/science,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bOM" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bON" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bOO" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"bOP" = (
+/obj/machinery/shieldwallgen/xenobiologyaccess,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"bOQ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"bOR" = (
+/obj/machinery/door/window/southright{
+ name = "Secure Xenobiological Containment";
+ req_one_access_txt = "55"
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bOS" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"bOT" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bOU" = (
+/obj/structure/disposaloutlet,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bOV" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"bOW" = (
+/obj/structure/bookcase/random/nonfiction,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bOX" = (
+/obj/structure/table/reinforced,
+/obj/item/electropack,
+/obj/item/assembly/signaler,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bOY" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/machinery/camera{
+ c_tag = "Customs - Aft";
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "HoPAft";
+ name = "HoP Aft Desk Shutters"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"bOZ" = (
+/obj/structure/bed,
+/obj/item/bedsheet/purple,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPa" = (
+/obj/item/beacon,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPb" = (
+/obj/structure/table/reinforced,
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/obj/item/assembly/igniter,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPc" = (
+/obj/structure/chair/comfy/black,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPd" = (
+/obj/structure/table/reinforced,
+/obj/item/book/random/triple,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPe" = (
+/obj/structure/table/reinforced,
+/obj/item/modular_computer/laptop/preset/civilian,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPf" = (
+/obj/machinery/light,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPg" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPh" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/portable_atmospherics/scrubber,
+/turf/open/floor/engine,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bPi" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPj" = (
+/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner,
+/obj/machinery/light,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPk" = (
+/obj/structure/table/reinforced,
+/obj/item/clothing/under/staffassistant,
+/obj/item/clothing/under/staffassistant,
+/obj/item/clothing/suit/apron/surgical,
+/obj/item/clothing/suit/apron/surgical,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"bPl" = (
+/obj/structure/chair/sofa/right,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/item/book/manual/wiki/research_and_development,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bPm" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bPn" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bPo" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"bPp" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/ai)
+"bPq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/mineral/stacking_machine{
+ input_dir = 2
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bPr" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bPs" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bPt" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/bridge)
+"bPu" = (
+/obj/effect/landmark/start/cook,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/kitchen)
+"bPv" = (
+/obj/structure/table/reinforced,
+/obj/item/clothing/gloves/color/yellow,
+/obj/item/multitool,
+/obj/item/multitool{
+ pixel_x = 5;
+ pixel_y = 3
+ },
+/obj/item/t_scanner{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/t_scanner{
+ pixel_x = -4
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bPw" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bPx" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bPy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bPz" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"bPA" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bPB" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bPC" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 4;
+ name = "Waste In"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bPD" = (
+/obj/structure/table/glass,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Escape Hall - Fore";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bPE" = (
+/obj/structure/table/glass,
+/obj/item/clipboard,
+/obj/item/storage/crayons,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bPF" = (
+/obj/structure/table/glass,
+/obj/item/storage/fancy/cigarettes,
+/obj/item/lighter{
+ pixel_x = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bPG" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bPH" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bPI" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bPJ" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bPK" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/ai)
+"bPL" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bPM" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"bPN" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bPO" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 4
+ },
+/area/hallway/secondary/exit)
+"bPP" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/medical/medbay/central)
+"bPQ" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bPR" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bPS" = (
+/obj/structure/bodycontainer/morgue{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bPT" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 4
+ },
+/area/hallway/secondary/exit)
+"bPU" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/highsecurity{
+ name = "AI Upload Access";
+ req_access_txt = "16"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/ai)
+"bPV" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai)
+"bPW" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/vehicle/ridden/atv,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bPX" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Engineering Foyer";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bPY" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bPZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/disposalpipe/sorting/mail{
+ sortType = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bQa" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bQb" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/camera/motion{
+ c_tag = "AI Foyer";
+ network = list("minisat");
+ pixel_x = 22
+ },
+/obj/machinery/turretid{
+ control_area = "area/ai_monitored/turret_protected/ai";
+ dir = 1;
+ name = "AI Chamber turret control";
+ pixel_x = 5;
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bQc" = (
+/obj/structure/bodycontainer/morgue{
+ dir = 8
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bQd" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bQe" = (
+/obj/structure/lattice,
+/obj/structure/grille/broken,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bQf" = (
+/obj/structure/rack,
+/obj/item/tank/jetpack/carbondioxide,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"bQg" = (
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=sci";
+ location = "market"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bQh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bQi" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bQj" = (
+/obj/structure/bodycontainer/morgue{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bQk" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bQl" = (
+/obj/structure/bed/roller,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQm" = (
+/obj/structure/bed/roller,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQn" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQo" = (
+/obj/structure/disposalpipe/junction/yjunction,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"bQp" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = -26
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bQq" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bQr" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bQs" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"bQt" = (
+/obj/machinery/conveyor/auto{
+ dir = 5;
+ id = "router"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bQu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bQv" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1;
+ sortType = 24
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bQw" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bQx" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bQy" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQz" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQA" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -28
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bQB" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/item/weldingtool,
+/obj/item/wrench/medical,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQC" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 6
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQD" = (
+/obj/machinery/power/apc{
+ name = "Tech Storage APC";
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"bQE" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bQF" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bQG" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bQH" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bQI" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bQJ" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/power/apc{
+ name = "Medbay Treatment Center APC";
+ pixel_y = -24
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQK" = (
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/obj/effect/landmark/start/atmospheric_technician,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bQL" = (
+/obj/structure/disposalpipe/junction{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bQM" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bQN" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bQO" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bQP" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bQQ" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/disposal/bin,
+/obj/machinery/light,
+/obj/effect/turf_decal/stripes/red/full,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/cleanliness{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bQR" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/directions/evac{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bQS" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bQT" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ frequency = 1447;
+ name = "Station Intercom (AI Private)";
+ pixel_y = 24
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/status_display{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bQU" = (
+/obj/structure/chair/office/light{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"bQV" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bQW" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bQX" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bQY" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bQZ" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/landmark/start/scientist,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bRa" = (
+/obj/item/cigbutt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"bRb" = (
+/obj/machinery/door/window/southleft{
+ name = "Captain's Equipment";
+ req_access_txt = "20"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"bRc" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/captain)
+"bRd" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/engine/storage";
+ dir = 4;
+ name = "Canister Storage APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"bRe" = (
+/obj/machinery/computer/security/wooden_tv,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bRf" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bRg" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bRh" = (
+/obj/structure/sign/warning/securearea{
+ pixel_x = -32
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bRi" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bRj" = (
+/obj/machinery/atmospherics/components/trinary/filter/flipped,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bRk" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bRl" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/router)
+"bRm" = (
+/obj/structure/closet/bombcloset,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bRn" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Engineering Foyer";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bRo" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 5
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bRp" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bRq" = (
+/obj/machinery/portable_atmospherics/scrubber/huge/movable,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bRr" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bRs" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bRt" = (
+/obj/structure/closet/wardrobe/miner,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/miningoffice";
+ dir = 8;
+ name = "Mining Office APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bRu" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bRv" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"bRw" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bRx" = (
+/obj/structure/table,
+/obj/item/circuitboard/machine/cyborgrecharger,
+/obj/item/disk/design_disk,
+/obj/machinery/camera/motion{
+ c_tag = "Computer Core";
+ dir = 1;
+ network = list("minisat")
+ },
+/turf/open/floor/circuit/green/telecomms,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bRy" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bRz" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bRA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Engineering Access";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bRB" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 29
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bRC" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bRD" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"bRE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bRF" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"bRG" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"bRH" = (
+/obj/structure/chair/sofa/right,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 29
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"bRI" = (
+/turf/closed/wall/r_wall,
+/area/medical/medbay/central)
+"bRJ" = (
+/obj/structure/chair/sofa/left,
+/obj/effect/landmark/start/assistant,
+/obj/machinery/status_display{
+ pixel_y = 32
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay - Waiting Room";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"bRK" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/engine/vacuum,
+/area/engine/atmos)
+"bRL" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bRM" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs/left,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bRN" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/stairs/medium,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bRO" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bRP" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "E.V.A. Storage";
+ req_access_txt = "18"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"bRQ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"bRR" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction/flip{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bRS" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bRT" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bRU" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"bRV" = (
+/obj/structure/sign/departments/chemistry,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/medical/chemistry)
+"bRW" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/status_display/ai{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bRX" = (
+/obj/effect/landmark/start/medical_doctor,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bRY" = (
+/obj/structure/closet/secure_closet/medical3,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/storage/belt/medical,
+/obj/item/clothing/neck/stethoscope,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bRZ" = (
+/obj/structure/closet/l3closet,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bSa" = (
+/obj/structure/closet/secure_closet/medical3,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/item/storage/belt/medolier,
+/obj/item/clothing/neck/stethoscope,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bSb" = (
+/turf/open/floor/engine/n2o,
+/area/engine/atmos)
+"bSc" = (
+/obj/machinery/vending/wardrobe/medi_wardrobe,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bSd" = (
+/obj/structure/closet/secure_closet/chemical,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bSe" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/requests_console{
+ department = "Robotics";
+ departmentType = 2;
+ name = "Robotics RC";
+ pixel_x = -30;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"bSf" = (
+/obj/structure/table,
+/obj/item/analyzer,
+/obj/item/healthanalyzer,
+/obj/item/plant_analyzer,
+/obj/item/aicard,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 29
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"bSg" = (
+/obj/machinery/rnd/production/techfab/department/medical,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bSh" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/medical/medbay/central)
+"bSi" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/engine/n2o,
+/area/engine/atmos)
+"bSj" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/obj/effect/landmark/blobstart,
+/obj/effect/landmark/xeno_spawn,
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Kill Chamber";
+ dir = 4
+ },
+/turf/open/floor/circuit/telecomms,
+/area/science/xenobiology)
+"bSk" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/public/glass{
+ name = "AI Access"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bSl" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bSm" = (
+/obj/machinery/modular_computer/console/preset/engineering,
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bSn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/electricshock,
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bSo" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bSp" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bSq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bSr" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bSs" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bSt" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bSu" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"bSv" = (
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bSw" = (
+/obj/machinery/power/port_gen/pacman,
+/obj/machinery/light,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/turf/open/floor/plating,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bSx" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bSy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bSz" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1;
+ sortType = 11
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bSA" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel/stairs/right,
+/area/hallway/primary/central)
+"bSB" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bSC" = (
+/turf/closed/wall,
+/area/science/lab)
+"bSD" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/router)
+"bSE" = (
+/turf/closed/wall/r_wall,
+/area/science/lab)
+"bSF" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "router"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router)
+"bSG" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/lab)
+"bSH" = (
+/obj/structure/sign/departments/science,
+/turf/closed/wall/r_wall,
+/area/science/lab)
+"bSI" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/router)
+"bSJ" = (
+/obj/structure/closet/crate/science,
+/obj/item/target,
+/obj/item/target,
+/obj/item/target/alien,
+/obj/item/target/alien,
+/obj/item/target/syndicate,
+/obj/item/target/syndicate,
+/obj/item/gun/energy/laser/practice,
+/obj/item/gun/energy/laser/practice,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/science/circuit";
+ dir = 1;
+ name = "Circuitry Lab APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bSK" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSL" = (
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSM" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/stock_parts/cell/high/plus,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSN" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/obj/item/folder/white,
+/obj/item/disk/design_disk,
+/obj/item/disk/design_disk,
+/obj/item/disk/tech_disk,
+/obj/item/disk/tech_disk,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSO" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/public/glass{
+ name = "AI Access"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bSP" = (
+/obj/machinery/computer/rdconsole/core,
+/turf/open/floor/plasteel,
+/area/science/lab)
+"bSQ" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bST" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSV" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"bSW" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bSX" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/white/full,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_x = 28;
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bSY" = (
+/obj/structure/table,
+/obj/item/stock_parts/micro_laser{
+ pixel_x = 4
+ },
+/obj/item/stock_parts/micro_laser{
+ pixel_x = 4
+ },
+/obj/item/stock_parts/scanning_module{
+ pixel_x = -6
+ },
+/obj/item/stock_parts/scanning_module{
+ pixel_x = -6
+ },
+/obj/item/stock_parts/capacitor,
+/obj/item/stock_parts/capacitor,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bSZ" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTa" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTb" = (
+/turf/open/floor/plasteel,
+/area/science/lab)
+"bTc" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/science/lab)
+"bTd" = (
+/obj/structure/table,
+/obj/item/stack/sheet/glass,
+/obj/item/stack/sheet/glass,
+/obj/item/stack/sheet/glass,
+/obj/item/stock_parts/matter_bin,
+/obj/item/stock_parts/matter_bin,
+/obj/item/stock_parts/manipulator,
+/obj/item/stock_parts/manipulator,
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTe" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/scientist,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTh" = (
+/obj/machinery/rnd/production/protolathe/department/science,
+/turf/open/floor/plasteel,
+/area/science/lab)
+"bTi" = (
+/obj/machinery/rnd/production/circuit_imprinter/department/science,
+/obj/item/reagent_containers/glass/beaker/sulphuric,
+/turf/open/floor/plasteel,
+/area/science/lab)
+"bTj" = (
+/obj/structure/table,
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -6
+ },
+/obj/item/reagent_containers/glass/beaker{
+ pixel_x = 4
+ },
+/obj/item/reagent_containers/dropper,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTk" = (
+/obj/item/rack_parts,
+/obj/structure/table_frame,
+/obj/item/flashlight,
+/obj/item/flashlight,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/warehouse";
+ dir = 1;
+ name = "Warehouse APC";
+ pixel_y = 24
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bTl" = (
+/obj/structure/table,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/clothing/glasses/welding,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTm" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/light,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTn" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTo" = (
+/obj/structure/table/reinforced,
+/obj/item/integrated_electronics/debugger,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bTp" = (
+/obj/machinery/vending/wardrobe/law_wardrobe,
+/obj/effect/turf_decal/bot,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bTq" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/circuit)
+"bTr" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"bTs" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"bTt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/primary/central)
+"bTu" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bTv" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bTw" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bTx" = (
+/obj/item/stack/tile/plasteel{
+ pixel_x = 8;
+ pixel_y = 14
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bTy" = (
+/obj/item/twohanded/required/kirbyplants,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bTz" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bTA" = (
+/obj/structure/filingcabinet/medical,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bTB" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/medical/medbay/lobby)
+"bTC" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bTD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bTE" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bTF" = (
+/obj/structure/grille/broken,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bTG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"bTH" = (
+/turf/open/floor/engine/plasma,
+/area/engine/atmos)
+"bTI" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/engine/plasma,
+/area/engine/atmos)
+"bTJ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"bTK" = (
+/turf/open/floor/engine/co2,
+/area/engine/atmos)
+"bTL" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/engine/co2,
+/area/engine/atmos)
+"bTM" = (
+/obj/structure/table,
+/obj/machinery/light,
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = 1;
+ pixel_y = 6
+ },
+/obj/item/storage/toolbox/mechanical,
+/obj/machinery/camera{
+ c_tag = "Research - Development Lab";
+ dir = 1
+ },
+/obj/machinery/requests_console{
+ department = "Science";
+ departmentType = 2;
+ name = "Science RC";
+ pixel_y = -30;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bTN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/science/circuit)
+"bTO" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bTP" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/light,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bTQ" = (
+/obj/machinery/vending/assist,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bTR" = (
+/turf/closed/wall/r_wall,
+/area/science/circuit)
+"bTS" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/machinery/light/small{
+ dir = 4;
+ light_color = "#d8b1b1"
+ },
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/radio/off{
+ pixel_x = -3;
+ pixel_y = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bTT" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/primary/central)
+"bTU" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "recycler"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bTV" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bTW" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bTX" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/status_display/ai{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bTY" = (
+/turf/open/floor/mineral/titanium/blue,
+/area/hallway/primary/central)
+"bTZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/lattice,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bUa" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Atmospherics - Entrance"
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bUb" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bUc" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/disposaloutlet,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bUd" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bUe" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"bUf" = (
+/obj/structure/plasticflaps,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bUg" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "router"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"bUh" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bUi" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bUj" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bUk" = (
+/obj/structure/closet/crate,
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bUl" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bUm" = (
+/obj/structure/closet/crate/internals,
+/obj/item/tank/internals/emergency_oxygen/double,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bUn" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bUo" = (
+/obj/structure/grille,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"bUp" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/conveyor/auto{
+ id = "router"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bUq" = (
+/turf/closed/wall/r_wall,
+/area/hallway/primary/aft)
+"bUr" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/primary/aft)
+"bUs" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bUt" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bUu" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bUv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/primary/aft)
+"bUw" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bUx" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"bUy" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bUz" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bUA" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"bUB" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/engine/engine_smes";
+ dir = 1;
+ name = "Power Monitoring APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bUC" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bUD" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bUE" = (
+/turf/open/floor/plasteel/stairs/right,
+/area/hallway/primary/aft)
+"bUF" = (
+/obj/machinery/doppler_array/research/science{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bUG" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bUH" = (
+/obj/machinery/shieldgen,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bUI" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bUJ" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"bUK" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Quartermaster's Office";
+ req_access_txt = "31;41"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"bUL" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bUM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/qm)
+"bUN" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Primary Tool Storage";
+ req_access_txt = "11"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bUO" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/storage/primary";
+ dir = 1;
+ name = "Primary Tool Storage APC";
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bUP" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/quartermaster/sorting)
+"bUQ" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/button/door{
+ id = "DeliveryDoor";
+ name = "Cargo Delivery Door Control";
+ pixel_x = -24
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bUR" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/mob/living/simple_animal/bot/firebot,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bUS" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/photocopier,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/requests_console{
+ department = "Cargo Bay";
+ departmentType = 2;
+ name = "Cargo RC";
+ pixel_y = 30
+ },
+/obj/machinery/camera{
+ c_tag = "Supply - Delivery Office Aft";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bUT" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/filingcabinet/filingcabinet,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bUU" = (
+/obj/item/beacon,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bUV" = (
+/obj/effect/turf_decal/stripes/white/full,
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bUW" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/starboard/aft";
+ dir = 1;
+ name = "Starboard Quarter Maintenance APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bUX" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bUY" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/item/grown/bananapeel,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/router)
+"bUZ" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/item/wirecutters,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bVa" = (
+/obj/machinery/light/small,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bVb" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Engineering Access";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"bVc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bVd" = (
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bVe" = (
+/obj/machinery/photocopier,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bVf" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering - Power Monitoring";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"bVg" = (
+/obj/machinery/power/emitter,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/west,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bVh" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bVi" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bVj" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bVk" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bVl" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bVm" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bVn" = (
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"bVo" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bVp" = (
+/obj/machinery/computer/card/minor/rd{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bVq" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bVr" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bVs" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/start/cargo_technician,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bVt" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bVu" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_x = 26
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/router)
+"bVv" = (
+/obj/structure/sign/departments/xenobio{
+ pixel_x = -32
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"bVw" = (
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "cargo"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bVx" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "cargo"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bVy" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "cargo"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bVz" = (
+/obj/structure/rack,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/extinguisher{
+ pixel_x = -4
+ },
+/obj/item/crowbar/red{
+ pixel_x = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bVA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/router)
+"bVB" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bVC" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "AI SMES Access";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bVD" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bVE" = (
+/obj/effect/landmark/start/atmospheric_technician,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 5
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -27
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bVF" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bVG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bVH" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/janitor)
+"bVI" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bVJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bVK" = (
+/obj/item/restraints/legcuffs/beartrap,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"bVL" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/noticeboard/rd{
+ pixel_y = 28
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bVM" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bVN" = (
+/obj/structure/closet/l3closet/scientist,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"bVO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bVP" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bVQ" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bVR" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/sign/warning/securearea{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bVS" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bVT" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bVU" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock{
+ name = "Law Office";
+ req_access_txt = "38"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"bVV" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"bVW" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"bVX" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bVY" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/window/southright{
+ name = "Primary Tool Storage Desk";
+ req_access_txt = "11"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"bVZ" = (
+/obj/machinery/power/apc{
+ name = "Cargo Bay APC";
+ pixel_y = -24
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"bWa" = (
+/turf/closed/wall/r_wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWb" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWc" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWd" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/structure/sign/poster/official/wtf_is_co2{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"bWe" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=1";
+ dir = 1;
+ freq = 1400;
+ location = "Bridge"
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"bWf" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bWg" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Law Office";
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"bWh" = (
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp/green,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"bWi" = (
+/obj/structure/table/wood,
+/obj/item/cartridge/lawyer{
+ pixel_x = 2;
+ pixel_y = 8
+ },
+/obj/item/stamp/law,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"bWj" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"bWk" = (
+/obj/structure/table/wood,
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"bWl" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Toxins Storage";
+ req_access_txt = "7;8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/science/mixing)
+"bWm" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "AI SMES Access";
+ req_one_access_txt = "10;24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bWn" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bWo" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWp" = (
+/obj/machinery/atmospherics/miner/n2o,
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/turf/open/floor/engine/n2o,
+/area/engine/atmos)
+"bWq" = (
+/obj/structure/lattice,
+/obj/machinery/camera{
+ c_tag = "Routing Depot - Aft Exterior";
+ pixel_x = 22
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bWr" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/camera{
+ c_tag = "Research Entrance";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWs" = (
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWt" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bWu" = (
+/obj/machinery/vending/assist,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bWv" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"bWw" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/lawoffice)
+"bWx" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWy" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWz" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWA" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWB" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWC" = (
+/obj/machinery/shower{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWD" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=2";
+ freq = 1400;
+ location = "Medbay"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bWE" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bWF" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bWG" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bWH" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/stairs/medium,
+/area/hallway/primary/central)
+"bWI" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bWJ" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"bWK" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bWL" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWM" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = -32
+ },
+/obj/machinery/camera{
+ c_tag = "Central Hall - AI Access";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bWN" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bWO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bWP" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/command{
+ name = "Computer Core";
+ req_access_txt = "30"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bWQ" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"bWR" = (
+/obj/structure/sign/warning/fire,
+/turf/closed/wall/r_wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWS" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bWT" = (
+/obj/structure/chair/sofa/left,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/landmark/start/scientist,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWU" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWV" = (
+/obj/machinery/vending/coffee,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWW" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWX" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bWY" = (
+/obj/structure/sign/warning/nosmoking,
+/turf/closed/wall/r_wall,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"bWZ" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall,
+/area/hallway/primary/aft)
+"bXa" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/multitool{
+ pixel_y = 4
+ },
+/obj/item/book/manual/wiki/robotics_cyborgs,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bXb" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bXc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"bXd" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"bXe" = (
+/obj/machinery/portable_atmospherics/canister/toxins,
+/obj/machinery/atmospherics/miner/toxins,
+/turf/open/floor/engine/plasma,
+/area/engine/atmos)
+"bXf" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/button/door{
+ id = "EngiLockdown";
+ name = "Engineering Emergency Lockdown";
+ pixel_x = 24;
+ pixel_y = -6;
+ req_access_txt = "11"
+ },
+/obj/machinery/button/door{
+ name = "Privacy Shutters";
+ pixel_x = 24;
+ pixel_y = 6
+ },
+/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"bXg" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bXh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXi" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bXj" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bXk" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bXl" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXm" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bXn" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"bXo" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/disposal/deliveryChute{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/router)
+"bXq" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bXr" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Research Fore";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXs" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"bXt" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bXu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bXv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bXw" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bXx" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXy" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/light,
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-16"
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXz" = (
+/obj/machinery/power/apc{
+ name = "Medbay Lobby APC";
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bXA" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXB" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/item/modular_computer/laptop/preset/civilian,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXC" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bXD" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"bXE" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bXF" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/security/checkpoint/supply)
+"bXG" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"bXH" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hydroponics)
+"bXI" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/computer/security{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/security/checkpoint/supply";
+ dir = 4;
+ name = "Cargo Security Checkpoint APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"bXJ" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXK" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/light,
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXL" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"bXM" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "router_off"
+ },
+/turf/open/floor/plating,
+/area/router)
+"bXN" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bXO" = (
+/obj/structure/table/glass,
+/obj/machinery/reagentgrinder,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Fore";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bXP" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/space/nearstation)
+"bXQ" = (
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXR" = (
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
+/obj/machinery/atmospherics/miner/carbon_dioxide,
+/turf/open/floor/engine/co2,
+/area/engine/atmos)
+"bXS" = (
+/obj/structure/closet/bombcloset,
+/obj/machinery/camera{
+ c_tag = "Toxins Lab - Access";
+ network = list("ss13","rd")
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bXT" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXU" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bXV" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/space/nearstation)
+"bXW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bXX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bXY" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bXZ" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/item/paper_bin,
+/obj/item/radio/headset/headset_sci,
+/obj/item/radio/headset/headset_sci,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYa" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bYc" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYd" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/primary/central)
+"bYe" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bYf" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "router"
+ },
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/router)
+"bYg" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bYh" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bYi" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/recharger,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bYk" = (
+/obj/machinery/vending/wardrobe/science_wardrobe,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYl" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/sorting/mail/flip{
+ sortType = 6
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bYm" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bYn" = (
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bYo" = (
+/obj/structure/closet/emcloset,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"bYp" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/mask/gas,
+/obj/item/wrench,
+/obj/item/light/tube,
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"bYq" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"bYr" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/photocopier,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYs" = (
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research/glass{
+ name = "Toxins Lab Access";
+ req_access_txt = "7;8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"bYt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bYu" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/junction/flip{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYv" = (
+/turf/closed/wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYw" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"bYy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"bYz" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bYA" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYB" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/item/clothing/gloves/color/latex,
+/obj/item/book/manual/wiki/chemistry,
+/obj/item/reagent_containers/dropper,
+/obj/item/radio/headset/headset_medsci,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bYC" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"bYD" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bYE" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bYF" = (
+/obj/machinery/portable_atmospherics/pump,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"bYG" = (
+/obj/machinery/door/poddoor{
+ id = "toxmixex"
+ },
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"bYH" = (
+/obj/structure/reagent_dispensers/fueltank,
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"bYI" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/item/storage/box/beakers,
+/obj/item/assembly/timer{
+ pixel_y = 6
+ },
+/obj/item/assembly/timer{
+ pixel_y = 6
+ },
+/obj/item/assembly/timer{
+ pixel_y = 6
+ },
+/obj/item/assembly/timer{
+ pixel_y = 6
+ },
+/obj/item/assembly/igniter{
+ pixel_y = -4
+ },
+/obj/item/assembly/igniter{
+ pixel_y = -4
+ },
+/obj/item/assembly/igniter{
+ pixel_y = -4
+ },
+/obj/item/assembly/igniter{
+ pixel_y = -4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bYJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bYK" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 8;
+ sortType = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bYL" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bYM" = (
+/obj/machinery/vending/wardrobe/cargo_wardrobe,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bYN" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"bYO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bYP" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bYQ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"bYR" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"bYS" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bYT" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bYU" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bYV" = (
+/obj/machinery/rnd/destructive_analyzer,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/science/lab)
+"bYW" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bYX" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bYY" = (
+/turf/open/floor/circuit/green/telecomms,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bYZ" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/circuit/green/telecomms,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bZa" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/storage/box/disks,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bZb" = (
+/obj/structure/table,
+/obj/machinery/button/door{
+ id = "RDServer";
+ layer = 3.6;
+ name = "RD Server Lockup Control";
+ pixel_x = -24
+ },
+/obj/item/circuitboard/machine/rdserver,
+/obj/item/disk/tech_disk,
+/turf/open/floor/circuit/green/telecomms,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bZc" = (
+/obj/machinery/computer/robotics{
+ dir = 1
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/circuit/green/telecomms,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bZd" = (
+/obj/effect/landmark/blobstart,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bZe" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/science/server{
+ name = "Computer Core"
+ })
+"bZf" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bZg" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bZh" = (
+/turf/closed/wall,
+/area/crew_quarters/toilet/restrooms)
+"bZi" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"bZj" = (
+/obj/machinery/atmospherics/components/trinary/mixer{
+ dir = 4;
+ node1_concentration = 0.8;
+ node2_concentration = 0.2;
+ on = 1;
+ target_pressure = 4500
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bZk" = (
+/obj/machinery/shower{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"bZl" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bZm" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=upload";
+ location = "med"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"bZn" = (
+/obj/structure/window/reinforced/tinted{
+ dir = 1
+ },
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/machinery/door/window/eastright,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"bZo" = (
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"bZp" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"bZq" = (
+/obj/structure/window/reinforced/tinted{
+ dir = 1
+ },
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/machinery/door/window/eastright,
+/obj/effect/landmark/start/assistant,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"bZr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"bZs" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Bathroom Maintenance";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/toilet/restrooms)
+"bZt" = (
+/turf/closed/wall,
+/area/maintenance/starboard/aft)
+"bZu" = (
+/obj/structure/rack,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/extinguisher,
+/obj/item/crowbar,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bZv" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/head/hardhat/red{
+ pixel_y = 6
+ },
+/obj/item/clothing/mask/gas,
+/obj/item/tank/internals/air,
+/obj/item/extinguisher,
+/obj/item/crowbar,
+/obj/machinery/camera{
+ c_tag = "Fire Suppression Storage";
+ pixel_x = 22
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bZw" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"bZx" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Fire Suppression Storage";
+ req_access_txt = "12"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bZy" = (
+/obj/structure/reagent_dispensers/watertank,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"bZz" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research/glass{
+ name = "Xenobiology Kill Room";
+ req_access_txt = "47"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"bZA" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/library)
+"bZB" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bZC" = (
+/obj/machinery/computer/libraryconsole,
+/obj/structure/table/wood,
+/turf/open/floor/carpet,
+/area/library)
+"bZD" = (
+/obj/machinery/chem_master,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"bZE" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bZF" = (
+/turf/open/floor/plasteel,
+/area/library)
+"bZG" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/sign/warning/fire{
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"bZH" = (
+/turf/closed/wall,
+/area/library)
+"bZI" = (
+/obj/machinery/air_sensor/atmos/mix_tank,
+/turf/open/floor/engine/vacuum,
+/area/engine/atmos)
+"bZJ" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/photocopier,
+/turf/open/floor/carpet,
+/area/library)
+"bZK" = (
+/obj/structure/bookcase/random/nonfiction,
+/turf/open/floor/plasteel,
+/area/library)
+"bZL" = (
+/obj/machinery/air_sensor/atmos/nitrous_tank,
+/turf/open/floor/engine/n2o,
+/area/engine/atmos)
+"bZM" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"bZN" = (
+/obj/structure/closet/crate/freezer,
+/obj/item/rack_parts,
+/obj/item/rack_parts,
+/obj/item/wrench,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"bZO" = (
+/obj/machinery/air_sensor/atmos/toxin_tank,
+/turf/open/floor/engine/plasma,
+/area/engine/atmos)
+"bZP" = (
+/obj/machinery/air_sensor/atmos/carbon_tank,
+/turf/open/floor/engine/co2,
+/area/engine/atmos)
+"bZQ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bZR" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bZS" = (
+/turf/closed/wall/r_wall,
+/area/library)
+"bZT" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/item/storage/box/pillbottles,
+/obj/item/hand_labeler,
+/obj/item/clothing/glasses/science,
+/obj/structure/sign/poster/official/safety_eye_protection{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"bZU" = (
+/obj/structure/table/wood,
+/obj/machinery/door/window/northright{
+ name = "Library Desk Window";
+ req_access_txt = "37"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"bZV" = (
+/obj/structure/table/wood,
+/obj/structure/window/reinforced/spawner/north,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"bZW" = (
+/obj/structure/sign/warning/fire,
+/turf/closed/wall/r_wall,
+/area/science/mixing)
+"bZX" = (
+/obj/structure/table/wood,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/computer/libraryconsole/bookmanagement,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"bZY" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"bZZ" = (
+/obj/machinery/vending/wardrobe/curator_wardrobe,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"caa" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"cab" = (
+/obj/structure/bookcase/random/adult{
+ name = "Forbidden Knowledge"
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"cac" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"cad" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/portable_atmospherics/canister,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"cae" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/light,
+/obj/item/storage/firstaid/toxin,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"caf" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cag" = (
+/obj/structure/table/reinforced,
+/obj/item/integrated_electronics/analyzer,
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cah" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cai" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"caj" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cak" = (
+/obj/structure/sign/warning/fire,
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
+"cal" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/engine/atmos)
+"cam" = (
+/obj/machinery/door/poddoor/incinerator_atmos_main,
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"can" = (
+/obj/machinery/power/turbine{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cao" = (
+/obj/machinery/power/compressor{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cap" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/air_sensor/atmos/incinerator_tank{
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/obj/machinery/igniter/incinerator_atmos,
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"caq" = (
+/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior,
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"car" = (
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cas" = (
+/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior,
+/obj/effect/mapping_helpers/airlock/locked,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/turf/open/floor/engine/vacuum,
+/area/engine/atmos)
+"cat" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input,
+/turf/open/floor/engine/vacuum,
+/area/engine/atmos)
+"cau" = (
+/obj/machinery/door/poddoor/incinerator_atmos_aux,
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cav" = (
+/turf/closed/wall/r_wall,
+/area/science/explab)
+"caw" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/explab)
+"cax" = (
+/turf/closed/wall,
+/area/science/explab)
+"cay" = (
+/obj/machinery/air_sensor/atmos/nitrogen_tank,
+/turf/open/floor/engine/n2,
+/area/engine/atmos)
+"caz" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/science/explab)
+"caA" = (
+/obj/structure/closet/radiation,
+/turf/open/floor/plasteel,
+/area/science/explab)
+"caB" = (
+/obj/structure/closet/bombcloset,
+/turf/open/floor/plasteel,
+/area/science/explab)
+"caC" = (
+/obj/structure/table,
+/obj/item/wrench,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/extinguisher{
+ pixel_x = -7;
+ pixel_y = 3
+ },
+/obj/item/storage/toolbox/mechanical,
+/turf/open/floor/plasteel,
+/area/science/explab)
+"caD" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/disposal)
+"caE" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"caF" = (
+/obj/machinery/air_sensor/atmos/oxygen_tank,
+/turf/open/floor/engine/o2,
+/area/engine/atmos)
+"caG" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/science/explab)
+"caH" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/landmark/start/chemist,
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/chair/office/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"caI" = (
+/obj/structure/table/reinforced,
+/obj/item/integrated_electronics/analyzer,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/requests_console{
+ department = "Science";
+ departmentType = 2;
+ name = "Science RC";
+ pixel_x = 30;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"caJ" = (
+/obj/machinery/air_sensor/atmos/air_tank,
+/turf/open/floor/engine/air,
+/area/engine/atmos)
+"caK" = (
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/obj/machinery/atmospherics/miner/nitrogen,
+/turf/open/floor/engine/n2,
+/area/engine/atmos)
+"caL" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/machinery/atmospherics/miner/oxygen,
+/turf/open/floor/engine/o2,
+/area/engine/atmos)
+"caM" = (
+/obj/machinery/light/small,
+/turf/open/floor/engine/n2,
+/area/engine/atmos)
+"caN" = (
+/obj/machinery/light/small,
+/turf/open/floor/engine/o2,
+/area/engine/atmos)
+"caO" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"caP" = (
+/obj/structure/chair/office/light,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/science/explab)
+"caQ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Medbay Lobby"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel/white/side,
+/area/medical/medbay/lobby)
+"caR" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-06"
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"caS" = (
+/obj/machinery/light/small,
+/turf/open/floor/engine/air,
+/area/engine/atmos)
+"caT" = (
+/obj/effect/spawner/structure/window/plasma/reinforced,
+/turf/open/floor/plating,
+/area/science/explab)
+"caU" = (
+/obj/machinery/atmospherics/pipe/simple/general/hidden,
+/turf/closed/wall/r_wall,
+/area/science/explab)
+"caV" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Pen 1";
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"caW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"caX" = (
+/turf/open/floor/engine,
+/area/science/explab)
+"caY" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"caZ" = (
+/obj/machinery/light/small{
+ dir = 4;
+ light_color = "#d8b1b1"
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Pen 2";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"cba" = (
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 9
+ },
+/turf/closed/wall/r_wall,
+/area/science/explab)
+"cbb" = (
+/turf/closed/wall/r_wall,
+/area/science/storage)
+"cbc" = (
+/obj/structure/table/reinforced,
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/item/stack/sheet/metal/ten,
+/obj/item/clothing/glasses/science,
+/obj/item/clothing/glasses/science,
+/obj/item/screwdriver,
+/obj/item/screwdriver,
+/obj/item/multitool,
+/obj/item/multitool,
+/obj/machinery/camera{
+ c_tag = "Research - Circuitry Lab";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cbd" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/table/wood,
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/item/clothing/ears/earmuffs,
+/obj/item/radio,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cbe" = (
+/obj/structure/table/reinforced,
+/obj/item/clothing/mask/gas,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbf" = (
+/obj/machinery/rnd/experimentor,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbg" = (
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/turf/open/floor/plating,
+/area/science/storage)
+"cbh" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cbi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cbj" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cbk" = (
+/obj/structure/table,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/qm";
+ dir = 8;
+ name = "Quartermaster's Office APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"cbl" = (
+/obj/structure/table/reinforced,
+/obj/item/healthanalyzer,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbm" = (
+/obj/item/beacon,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbn" = (
+/obj/structure/window/reinforced{
+ dir = 4;
+ layer = 2.9
+ },
+/obj/machinery/portable_atmospherics/pump,
+/turf/open/floor/plating,
+/area/science/storage)
+"cbo" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cbp" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cbq" = (
+/obj/structure/table/reinforced,
+/obj/item/clipboard,
+/obj/item/pen,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbr" = (
+/obj/structure/table/optable,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbs" = (
+/obj/machinery/computer/operating,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbt" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbu" = (
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cbv" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/sign/warning/biohazard{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"cbw" = (
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cbx" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/syringes,
+/obj/item/pen/blue,
+/turf/open/floor/engine,
+/area/science/explab)
+"cby" = (
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cbz" = (
+/obj/structure/table/reinforced,
+/obj/item/clothing/gloves/color/latex,
+/obj/item/reagent_containers/dropper,
+/obj/item/pen/red,
+/turf/open/floor/engine,
+/area/science/explab)
+"cbA" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/caution/stand_clear{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cbB" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cbC" = (
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/turf/open/floor/plating,
+/area/science/storage)
+"cbD" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cbE" = (
+/turf/closed/wall/r_wall,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cbF" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cbG" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cbH" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cbI" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cbJ" = (
+/obj/structure/table/reinforced,
+/obj/item/analyzer,
+/obj/item/t_scanner,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/engine/supermatter";
+ dir = 4;
+ name = "Thermo-Electric Generator APC";
+ pixel_x = 24
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"cbK" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cbL" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/external{
+ name = "Atmospherics External Airlock";
+ req_access_txt = "24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cbM" = (
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/obj/item/storage/box/lights/mixed,
+/obj/item/stack/sheet/glass,
+/obj/item/stack/sheet/glass,
+/obj/structure/cable{
+ icon_state = "1-10"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cbN" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cbO" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cbP" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/button/door{
+ id = "toxmixex";
+ name = "vent control";
+ pixel_x = -24;
+ pixel_y = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"cbQ" = (
+/obj/structure/closet/secure_closet/freezer/meat,
+/obj/item/reagent_containers/food/snacks/meat/slab/spider,
+/obj/item/reagent_containers/food/snacks/meat/slab/xeno,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"cbR" = (
+/obj/structure/cable{
+ icon_state = "1-10"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"cbS" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "starboard_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cbT" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_x = -2;
+ pixel_y = -27
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cbU" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8;
+ name = "Air to Distro"
+ },
+/obj/machinery/power/apc/highcap/ten_k{
+ areastring = "/area/engine/atmos";
+ name = "Atmospherics APC";
+ pixel_y = -28
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cbV" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cbW" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cbX" = (
+/obj/structure/table,
+/obj/item/aicard,
+/obj/item/disk/tech_disk,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/circuit,
+/area/bridge)
+"cbY" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cbZ" = (
+/obj/machinery/computer/slot_machine,
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"cca" = (
+/obj/machinery/computer/slot_machine,
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"ccb" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/stairs/medium,
+/area/crew_quarters/bar)
+"ccc" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
+/obj/structure/grille,
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ccd" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cce" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/science/circuit)
+"ccf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "starboard_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ccg" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cch" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "router"
+ },
+/turf/open/floor/plating,
+/area/router)
+"cci" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/mass_driver{
+ id = "workshop_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router)
+"ccj" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/airlock/external{
+ name = "Routing Depot";
+ req_one_access_txt = "10;31"
+ },
+/turf/open/floor/plating,
+/area/router)
+"cck" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ccl" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs,
+/area/maintenance/department/chapel)
+"ccm" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/mecha_part_fabricator,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass{
+ amount = 20;
+ layer = 3.2
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"ccn" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "router"
+ },
+/turf/open/floor/plating,
+/area/router)
+"cco" = (
+/obj/machinery/conveyor/auto{
+ id = "router"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"ccp" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"ccq" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/nanomichi_ad{
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"ccr" = (
+/obj/structure/disposalpipe/trunk,
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ccs" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "starboard_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cct" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"ccu" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"ccv" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/door/airlock/mining{
+ name = "Mining Office";
+ req_one_access_txt = "10;24;48"
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ccw" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"ccx" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"ccy" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "router"
+ },
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/router)
+"ccz" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/newscaster{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"ccA" = (
+/obj/machinery/disposal/deliveryChute,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"ccB" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/item/folder/white,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/window/westleft{
+ name = "Chemistry Desk";
+ req_access_txt = "33"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"ccC" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"ccD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"ccE" = (
+/obj/machinery/mass_driver{
+ id = "eng_in";
+ name = "Router Driver"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/router)
+"ccF" = (
+/obj/structure/table,
+/obj/effect/turf_decal/bot,
+/obj/item/flashlight,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"ccG" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/camera{
+ c_tag = "Atmospherics East";
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"ccH" = (
+/obj/machinery/mass_driver{
+ dir = 8;
+ id = "disposal_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ccI" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ccJ" = (
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "starboard_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ccK" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"ccL" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"ccM" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"ccN" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"ccO" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ccP" = (
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 8
+ },
+/obj/structure/grille,
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"ccQ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"ccR" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"ccS" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/security/courtroom)
+"ccT" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ccU" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ccV" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Starboard Quarter Maintenance";
+ req_one_access_txt = "12;48"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"ccW" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"ccX" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"ccY" = (
+/obj/structure/cable,
+/obj/effect/landmark/start/librarian,
+/obj/machinery/power/apc{
+ areastring = "/area/library";
+ dir = 4;
+ name = "Library APC";
+ pixel_x = 24
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"ccZ" = (
+/obj/structure/closet/cardboard,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cda" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark/corner,
+/area/ai_monitored/storage/eva)
+"cdb" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/disposaloutlet,
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cdc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/entry)
+"cdd" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"cde" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/mineral/titanium/blue,
+/area/hallway/primary/central)
+"cdf" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cdg" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdh" = (
+/obj/machinery/photocopier,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cdi" = (
+/obj/machinery/disposal/deliveryChute,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cdj" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/table/wood,
+/obj/machinery/microwave,
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdk" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdl" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdm" = (
+/obj/structure/closet/secure_closet/CMO,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"cdn" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cdo" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"cdp" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cdq" = (
+/obj/machinery/mass_driver{
+ id = "sq_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cdr" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cds" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdt" = (
+/turf/closed/wall/r_wall,
+/area/router/eng)
+"cdu" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdv" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdw" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"cdy" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/closed/wall,
+/area/engine/break_room)
+"cdz" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdA" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdB" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/structure/sign/warning/enginesafety,
+/turf/closed/wall,
+/area/engine/break_room)
+"cdC" = (
+/turf/closed/wall,
+/area/engine/break_room)
+"cdD" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/stripes/line,
+/obj/item/storage/box/monkeycubes,
+/obj/item/storage/box/monkeycubes,
+/obj/machinery/requests_console{
+ department = "Science";
+ departmentType = 2;
+ name = "Science RC";
+ pixel_y = 30;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cdE" = (
+/obj/structure/table/wood,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/tape,
+/obj/item/taperecorder{
+ pixel_x = -4
+ },
+/obj/machinery/newscaster{
+ pixel_x = 30
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"cdF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"cdG" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "engblock";
+ name = "Engineering Router"
+ },
+/turf/open/floor/plating,
+/area/router/eng)
+"cdH" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall,
+/area/engine/break_room)
+"cdI" = (
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"cdJ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdK" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdL" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdM" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdN" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/door/airlock/command{
+ name = "Chief Engineer's Office";
+ req_access_txt = "56"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cdO" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/poddoor/preopen{
+ id = "EngiLockdown";
+ name = "Engineering Emergency Lockdown"
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdP" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Aft Hall - Primary Tool Storage";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cdQ" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/poddoor/preopen{
+ id = "EngiLockdown";
+ name = "Engineering Emergency Lockdown"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cdR" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/sign/poster/contraband/hacking_guide{
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cdS" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/engine/break_room)
+"cdT" = (
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Asteroid Mining Access";
+ req_access_txt = "10;24"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cdU" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ id = "eng"
+ },
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "engblock";
+ name = "Engineering Router"
+ },
+/turf/open/floor/plating,
+/area/router/eng)
+"cdV" = (
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"cdW" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/sleep_console{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cdX" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/sleeper{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cdY" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/sleep_console{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cdZ" = (
+/turf/closed/wall/r_wall,
+/area/medical/medbay/lobby)
+"cea" = (
+/obj/machinery/computer/cloning,
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/item/paper/guides/jobs/medical/cloning{
+ pixel_x = -4
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"ceb" = (
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/stack/sheet/plasteel{
+ amount = 15
+ },
+/obj/item/storage/belt/utility,
+/obj/item/crowbar/large,
+/obj/item/multitool,
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/mecha_part_fabricator,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass{
+ amount = 20;
+ layer = 3.2
+ },
+/obj/item/stack/sheet/plasteel{
+ amount = 15
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"cec" = (
+/obj/structure/table/glass,
+/obj/item/paicard,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"ced" = (
+/obj/machinery/computer/med_data{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cee" = (
+/obj/structure/chair/office/light{
+ dir = 1;
+ pixel_y = 3
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/landmark/start/medical_doctor,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cef" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"ceg" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"ceh" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"cei" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cej" = (
+/obj/machinery/vending/medical,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cek" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"cel" = (
+/obj/structure/chair/office/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/landmark/start/medical_doctor,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cem" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/door/window/eastright{
+ name = "Medbay Desk";
+ req_access_txt = "5"
+ },
+/obj/item/folder/white,
+/obj/item/clothing/glasses/hud/health,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cen" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/circuit,
+/area/bridge)
+"ceo" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/bridge)
+"cep" = (
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Satellite Exterior - Starboard Bow";
+ dir = 1;
+ network = list("tcomms");
+ pixel_x = 22
+ },
+/turf/open/space/basic,
+/area/space)
+"ceq" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall/rust,
+/area/engine/teg_hot)
+"cer" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "eng_out";
+ name = "Router Driver"
+ },
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plating,
+/area/router/eng)
+"ces" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/conveyor/auto{
+ id = "eng"
+ },
+/obj/structure/window/reinforced/spawner/east,
+/turf/open/floor/plating,
+/area/router/eng)
+"cet" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"ceu" = (
+/obj/machinery/vending/snack/random,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"cev" = (
+/obj/machinery/vending/games,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"cew" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "service"
+ },
+/obj/structure/window/reinforced/spawner/west,
+/turf/open/floor/plating,
+/area/router/eng)
+"cex" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"cey" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Arcade"
+ },
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"cez" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/storage/firstaid/fire{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/fire{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/fire{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/brute,
+/obj/item/storage/firstaid/brute,
+/obj/item/storage/firstaid/brute,
+/obj/item/clothing/glasses/hud/health,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"ceA" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/storage/firstaid/toxin{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/toxin{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/toxin{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/o2,
+/obj/item/storage/firstaid/o2,
+/obj/item/storage/firstaid/o2,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"ceB" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"ceC" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/solars/port)
+"ceD" = (
+/obj/docking_port/stationary{
+ dir = 8;
+ dwidth = 2;
+ height = 13;
+ id = "ferry_home";
+ name = "port bay 2";
+ width = 5
+ },
+/turf/open/space/basic,
+/area/space)
+"ceE" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/door/airlock/external{
+ name = "Ferry Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"ceF" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/external{
+ name = "Ferry Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"ceG" = (
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "trash";
+ name = "Disposal Driver"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ceH" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ id = "trash";
+ name = "Disposal Bay Door"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ceI" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"ceJ" = (
+/obj/machinery/power/solar_control{
+ dir = 4;
+ name = "Starboard Quarter Solar Control"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"ceK" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/router/eng)
+"ceL" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/table,
+/obj/item/destTagger,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceM" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/button/massdriver{
+ id = "eng_out";
+ pixel_x = -24;
+ pixel_y = 24
+ },
+/obj/machinery/button/door{
+ id = "engblock";
+ name = "Router Access Control";
+ pixel_x = -24;
+ pixel_y = 32;
+ req_access_txt = "31"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceN" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceO" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/table,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 29
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceP" = (
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/router/eng)
+"ceQ" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = -32
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/cable{
+ icon_state = "2-5"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"ceR" = (
+/obj/machinery/door/poddoor{
+ id = "TEGMixVent";
+ name = "Mixing Chamber Vent"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"ceS" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 3;
+ name = "3maintenance loot spawner"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"ceT" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/computer/cargo/request{
+ dir = 4
+ },
+/obj/machinery/light/small,
+/obj/machinery/requests_console{
+ department = "Engineering Router";
+ name = "Engineering Router RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceU" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 9
+ },
+/obj/structure/fireaxecabinet{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"ceV" = (
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceW" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceX" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/power/apc{
+ name = "Engineering Router APC";
+ pixel_y = -24
+ },
+/obj/machinery/light/small,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plasteel,
+/area/router/eng)
+"ceY" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/vending/cigarette,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"ceZ" = (
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Asteroid Mining Access";
+ req_access_txt = "10;24"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cfa" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 6
+ },
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfb" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/photocopier,
+/turf/open/floor/carpet/blue,
+/area/medical/medbay/central)
+"cfc" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"cfd" = (
+/obj/structure/closet/crate/wooden,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cfe" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Port Bow Hall - Starboard";
+ network = list("ss13","rd")
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cff" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 10
+ },
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfg" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/effect/landmark/start/research_director,
+/obj/machinery/camera{
+ c_tag = "Research Director's Office - Port";
+ network = list("ss13","rd")
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = -8;
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"cfh" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cfi" = (
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cfj" = (
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cfk" = (
+/obj/structure/closet/secure_closet/engineering_electrical,
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cfl" = (
+/turf/closed/wall,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cfm" = (
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cfn" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cfo" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfp" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
+ dir = 1
+ },
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfq" = (
+/obj/structure/lattice/catwalk,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"cfr" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Mixing Chamber Access";
+ req_one_access_txt = "10;24"
+ },
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plating,
+/area/engine/teg_hot)
+"cfs" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cft" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering - Mixing Chamber";
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/teg_hot)
+"cfu" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"cfv" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/portable_atmospherics/canister/toxins,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cfw" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering Construction Area";
+ dir = 4
+ },
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cfx" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cfy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"cfz" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cfA" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 5
+ },
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfB" = (
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
+ dir = 9
+ },
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfC" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfD" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cfE" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 9
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"cfF" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/engine/teg_hot)
+"cfG" = (
+/obj/machinery/door/airlock/highsecurity{
+ name = "Secure Tech Storage";
+ req_access_txt = "19;23"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"cfH" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/outlet_injector/on,
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfI" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/sparker{
+ id = "TEGMixIgniter";
+ pixel_x = 24
+ },
+/obj/effect/decal/cleanable/ash,
+/obj/effect/decal/remains/human,
+/turf/open/floor/engine/vacuum,
+/area/engine/teg_hot)
+"cfJ" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"cfK" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/engine/teg_hot)
+"cfL" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/door/airlock/atmos{
+ name = "Atmospherics Access";
+ req_access_txt = "24"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cfM" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cfN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cfO" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cfP" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cfQ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Library Access"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"cfR" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/vending/cigarette,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cfS" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"cfT" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/visible,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cfU" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/item/clothing/gloves/color/latex,
+/obj/item/book/manual/wiki/cit/chem_recipies,
+/obj/item/book/manual/wiki/cit/chemistry{
+ pixel_x = 2;
+ pixel_y = -3
+ },
+/obj/item/reagent_containers/dropper,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cfV" = (
+/obj/machinery/door/airlock/external{
+ name = "Atmospherics External Airlock";
+ req_access_txt = "24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cfW" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/window/plasma/reinforced/spawner/north,
+/obj/structure/window/plasma/reinforced/spawner,
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/engine/teg_hot)
+"cfX" = (
+/obj/item/pipe,
+/obj/structure/cable{
+ icon_state = "2-5"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"cfY" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/item/stack/sheet/metal,
+/obj/item/stack/sheet/metal,
+/obj/item/stack/sheet/metal,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"cfZ" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/stairs/right,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cga" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cgb" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Mixing Chamber Access";
+ req_one_access_txt = "10;24"
+ },
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plating,
+/area/engine/teg_hot)
+"cgc" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cgd" = (
+/obj/structure/fans/tiny,
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cge" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/external{
+ name = "Atmospherics External Airlock";
+ req_access_txt = "24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cgf" = (
+/obj/structure/table,
+/obj/structure/table,
+/obj/machinery/reagentgrinder,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cgg" = (
+/obj/effect/landmark/start/atmospheric_technician,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cgh" = (
+/obj/machinery/pipedispenser,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/end{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"cgi" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"cgj" = (
+/obj/machinery/conveyor/auto{
+ id = "cargo"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cgk" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/conveyor/auto{
+ id = "cargo"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cgl" = (
+/obj/machinery/button/door{
+ id = "TEGMixVent";
+ name = "Mixing Chamber Vent";
+ pixel_y = 24;
+ req_access_txt = "10"
+ },
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgm" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/turf_decal/caution/stand_clear{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cgn" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cgo" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgp" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/obj/machinery/button/ignition{
+ id = "TEGMixIgniter";
+ name = "Mix Igniter";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgq" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cgr" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/science/research";
+ dir = 1;
+ name = "Research Sector APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"cgs" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cgt" = (
+/obj/effect/landmark/start/cargo_technician,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cgu" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 6
+ },
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cgw" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgx" = (
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cgy" = (
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/rust,
+/area/maintenance/solars/starboard/aft)
+"cgz" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cgA" = (
+/obj/machinery/pipedispenser/disposal,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"cgB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cgC" = (
+/obj/structure/grille,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"cgD" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/teg_hot)
+"cgE" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cgF" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/spawner/north,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgG" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/spawner/north,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgH" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgI" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgJ" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgK" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgL" = (
+/obj/machinery/computer/rdservercontrol{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/dark,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgM" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgN" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgP" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/closed/wall/r_wall,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgQ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cgR" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgS" = (
+/obj/machinery/atmospherics/components/trinary/mixer{
+ dir = 4;
+ node1_concentration = 0.8;
+ node2_concentration = 0.2;
+ on = 1;
+ target_pressure = 4500
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cgU" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cgV" = (
+/obj/structure/reagent_dispensers/water_cooler,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cgW" = (
+/obj/docking_port/stationary{
+ dir = 4;
+ dwidth = 3;
+ height = 5;
+ id = "mining_home";
+ name = "mining shuttle bay";
+ roundstart_template = /datum/map_template/shuttle/mining/delta;
+ width = 7
+ },
+/turf/open/space/basic,
+/area/space)
+"cgX" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cgY" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/machinery/disposal/deliveryChute{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cgZ" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cha" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 4;
+ sortType = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"chb" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"chc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"chd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/landmark/start/cargo_technician,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"che" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"chf" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"chg" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"chh" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plating,
+/area/tcommsat/computer)
+"chi" = (
+/obj/machinery/atmospherics/pipe/simple/general/hidden,
+/turf/closed/wall/r_wall,
+/area/tcommsat/computer)
+"chj" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 1
+ },
+/obj/machinery/meter,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"chk" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"chl" = (
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"chm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/closed/wall/r_wall/rust,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"chn" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/disposal/incinerator";
+ dir = 8;
+ name = "Incinerator APC";
+ pixel_x = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cho" = (
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/department/eva)
+"chp" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"chq" = (
+/obj/machinery/pipedispenser/disposal/transit_tube,
+/obj/effect/turf_decal/stripes/end,
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"chr" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"chs" = (
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cht" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"chu" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"chv" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"chw" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"chx" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"chy" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"chz" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"chA" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"chB" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"chC" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"chD" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"chE" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_cold)
+"chF" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/item/analyzer,
+/obj/item/pipe_dispenser,
+/obj/item/wrench,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"chG" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"chH" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/fore)
+"chI" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"chJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"chK" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/teg_cold)
+"chL" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"chM" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"chN" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"chO" = (
+/obj/structure/table,
+/obj/machinery/requests_console{
+ department = "Atmospherics";
+ departmentType = 4;
+ name = "Atmos RC";
+ pixel_x = 30
+ },
+/obj/item/clothing/head/welding{
+ pixel_x = -5;
+ pixel_y = 3
+ },
+/obj/item/clothing/head/welding{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/obj/item/clothing/glasses/welding,
+/obj/item/multitool,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"chP" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock{
+ name = "Law Office";
+ req_access_txt = "38"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"chQ" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"chR" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/science/mixing";
+ dir = 1;
+ name = "Toxins Lab APC";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"chS" = (
+/obj/machinery/suit_storage_unit/atmos,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"chT" = (
+/obj/machinery/atmospherics/components/unary/tank/air{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"chU" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/library)
+"chV" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"chW" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"chX" = (
+/obj/structure/sign/warning/nosmoking,
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"chY" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/item/storage/hypospraykit/fire,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/wrench,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"chZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cia" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cib" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cic" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cid" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/item/analyzer,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cie" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_cold)
+"cif" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cig" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/disposaloutlet,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cih" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 4
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cii" = (
+/obj/machinery/disposal/deliveryChute,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cij" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/structure/disposaloutlet,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cik" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/mass_driver{
+ dir = 8;
+ id = "router_in";
+ name = "Router Driver"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cil" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cim" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1;
+ sortType = 11
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cin" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cio" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cip" = (
+/obj/machinery/mass_driver{
+ id = "cargo_in";
+ name = "Router Driver"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ciq" = (
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cir" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"cis" = (
+/obj/structure/sign/warning/vacuum{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cit" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ciu" = (
+/obj/structure/barricade/wooden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/poster/ripped{
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"civ" = (
+/obj/structure/girder/displaced,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ciw" = (
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"cix" = (
+/obj/structure/girder,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ciy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ciz" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/item/reagent_containers/food/drinks/trophy,
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"ciA" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"ciB" = (
+/obj/structure/frame/computer,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating/airless,
+/area/maintenance/port/fore)
+"ciC" = (
+/obj/structure/closet/secure_closet/hos,
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/item/storage/box/deputy,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"ciD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"ciE" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/machinery/recharger,
+/obj/machinery/requests_console{
+ department = "Security";
+ departmentType = 5;
+ name = "Security RC";
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"ciF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"ciG" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "disposal_off"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ciH" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 6
+ },
+/obj/machinery/meter,
+/obj/structure/disposalpipe/junction/flip{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"ciI" = (
+/turf/closed/wall/r_wall/rust,
+/area/quartermaster/warehouse)
+"ciJ" = (
+/turf/closed/wall/rust,
+/area/quartermaster/warehouse)
+"ciK" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"ciL" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"ciM" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor/auto{
+ dir = 4;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ciN" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/donkpockets{
+ pixel_y = 4
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "kitchenlock";
+ name = "Kitchen Lockup"
+ },
+/obj/machinery/door/window/northleft{
+ name = "Kitchen Slider";
+ req_access_txt = "28"
+ },
+/obj/machinery/door/window/southleft{
+ name = "Bar Slider";
+ req_access_txt = "25"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/kitchen)
+"ciO" = (
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "disposal_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ciP" = (
+/obj/effect/turf_decal/delivery,
+/obj/item/weldingtool,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"ciQ" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/hallway/primary/aft";
+ dir = 1;
+ name = "Aft Primary Hallway APC";
+ pixel_x = 1;
+ pixel_y = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"ciR" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/door/airlock/security{
+ name = "Cargo Security Checkpoint";
+ req_access_txt = "63"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"ciS" = (
+/obj/machinery/conveyor/auto{
+ dir = 9;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ciT" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/structure/closet/radiation,
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28;
+ pixel_y = -4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"ciU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/structure/closet/radiation,
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"ciV" = (
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ciW" = (
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 8;
+ sortType = 14
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"ciX" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"ciY" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/emergency,
+/obj/item/wrench,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/engine/teg_hot";
+ dir = 8;
+ name = "Hot Loop APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"ciZ" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cja" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cjb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cjc" = (
+/obj/structure/fans/tiny,
+/obj/structure/plasticflaps,
+/obj/machinery/door/poddoor{
+ name = "Disposal Router"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cjd" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cje" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cjf" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Cargo Detainment Cell";
+ req_access_txt = "63"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"cjg" = (
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cjh" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cji" = (
+/obj/structure/fans/tiny,
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 1;
+ id = "disposal"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cjj" = (
+/turf/closed/wall,
+/area/crew_quarters/theatre/mime)
+"cjk" = (
+/obj/machinery/vending/autodrobe,
+/turf/open/floor/plasteel/checker,
+/area/crew_quarters/theatre/mime)
+"cjl" = (
+/obj/structure/closet/crate/wooden/toy,
+/obj/item/toy/figure/mime,
+/turf/open/floor/plasteel/checker,
+/area/crew_quarters/theatre/mime)
+"cjm" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/hallway/secondary/service)
+"cjn" = (
+/obj/structure/reagent_dispensers/cooking_oil,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/kitchen/backroom)
+"cjo" = (
+/obj/structure/table,
+/obj/item/flashlight/seclite,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"cjp" = (
+/turf/closed/wall/r_wall,
+/area/crew_quarters/theatre/mime)
+"cjq" = (
+/turf/closed/wall/rust,
+/area/maintenance/port/central)
+"cjr" = (
+/obj/structure/table,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/item/hand_labeler,
+/obj/item/reagent_containers/glass/bottle/formaldehyde,
+/obj/item/paper/guides/jobs/medical/morgue,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"cjs" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cjt" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/office";
+ dir = 1;
+ name = "Cargo Office APC";
+ pixel_y = 24
+ },
+/obj/structure/sign/poster/contraband/scum{
+ pixel_x = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cju" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/table,
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/item/clothing/ears/earmuffs,
+/obj/item/extinguisher{
+ pixel_x = -12;
+ pixel_y = -2
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering - Hot Loop";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cjv" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet,
+/area/library)
+"cjw" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/library)
+"cjx" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"cjy" = (
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"cjz" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cjA" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/item/twohanded/required/kirbyplants/random,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cjB" = (
+/obj/item/stack/cable_coil/cut/red,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"cjC" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/item/clothing/mask/cigarette,
+/obj/structure/sign/poster/official/twelve_gauge{
+ pixel_x = 32
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cjD" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall,
+/area/maintenance/department/eva)
+"cjE" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_y = 32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cjF" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_y = 32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cjG" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cjH" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning/electricshock{
+ pixel_x = -32
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cjI" = (
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES"
+ },
+/turf/closed/wall/r_wall,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"cjJ" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "E.V.A. Storage";
+ req_access_txt = "18"
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/storage/eva)
+"cjK" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_cold)
+"cjL" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/canister,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"cjM" = (
+/obj/structure/table,
+/obj/item/storage/box/lights/mixed,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/radio/off,
+/obj/item/multitool{
+ pixel_x = -6
+ },
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"cjN" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Visitation Area";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"cjO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/effect/decal/cleanable/dirt{
+ desc = "A thin layer of dust coating the floor.";
+ name = "dust"
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"cjP" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cjQ" = (
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cjR" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Head of Security's Office";
+ req_one_access_txt = "58"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/hos)
+"cjS" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"cjT" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/landmark/start/security_officer,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"cjU" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/visible{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"cjV" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Engineering Sector"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cjW" = (
+/obj/structure/bed,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/item/bedsheet/hos,
+/obj/effect/landmark/start/head_of_security,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"cjX" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 9
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_cold)
+"cjY" = (
+/obj/machinery/computer/station_alert{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = 8;
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cjZ" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cka" = (
+/obj/item/beacon,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"ckb" = (
+/obj/machinery/chem_master,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"ckc" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/aft/secondary";
+ dir = 8;
+ name = "Aft Air Hookup APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"ckd" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cke" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/library)
+"ckf" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"ckg" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"ckh" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cki" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ckj" = (
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"ckk" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/camera{
+ c_tag = "Research Maintenance";
+ dir = 4
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/department/science";
+ dir = 8;
+ name = "Research Wing Maintenance APC";
+ pixel_x = -24
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"ckl" = (
+/turf/open/space/basic,
+/area/space/station_ruins)
+"ckm" = (
+/turf/closed/wall/r_wall,
+/area/engine/teg_cold)
+"ckn" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "External Solar Access";
+ req_access_txt = "10;13"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"cko" = (
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/engine/engineering";
+ dir = 4;
+ name = "Engine Room APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"ckp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/light,
+/obj/structure/table,
+/obj/item/book/manual/wiki/robotics_cyborgs,
+/obj/item/mmi,
+/obj/item/mmi,
+/obj/item/mmi,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"ckq" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"ckr" = (
+/obj/effect/landmark/start/cargo_technician,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cks" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"ckt" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cku" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"ckv" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Warehouse";
+ req_one_access_txt = "10;31"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"ckw" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"ckx" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cky" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"ckz" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/table,
+/obj/item/pipe_dispenser,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"ckA" = (
+/obj/structure/sign/warning/fire,
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"ckB" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/closet/crate/engineering,
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/stack/cable_coil/red,
+/obj/item/stack/cable_coil/red,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/stock_parts/cell/high/plus,
+/obj/machinery/camera{
+ c_tag = "Engineering - Cold Loop";
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"ckC" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"ckD" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/storage/belt/utility,
+/obj/item/crowbar/large,
+/obj/item/multitool,
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_x = -6;
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"ckE" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"ckF" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/engine/teg_cold";
+ dir = 4;
+ name = "Cold Loop APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"ckG" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ckH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"ckI" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/external,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"ckJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/engine/teg_hot)
+"ckK" = (
+/obj/structure/closet/secure_closet/miner,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/item/clothing/under/rank/miner,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ckL" = (
+/obj/structure/closet/secure_closet/miner,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/item/clothing/under/rank/miner,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ckM" = (
+/obj/structure/closet/secure_closet/miner,
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/item/clothing/under/rank/miner,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ckN" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"ckO" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"ckP" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ckQ" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ckR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/science/lab)
+"ckS" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"ckT" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ckU" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ckV" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ckW" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ckX" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"ckY" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"ckZ" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cla" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"clb" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"clc" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible,
+/turf/open/floor/plating,
+/area/science/storage)
+"cld" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cle" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/science/misc_lab";
+ dir = 1;
+ name = "Research Observatory APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"clf" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Pen 3";
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"clg" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"clh" = (
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cli" = (
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"clj" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"clk" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"cll" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"clm" = (
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"cln" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"clo" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"clp" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
+"clq" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"clr" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
+"cls" = (
+/obj/structure/window/reinforced/spawner,
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"clt" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/sign/warning/electricshock,
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"clu" = (
+/obj/machinery/door/window/northleft{
+ name = "Library Desk Door";
+ req_access_txt = "37"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"clv" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/item/clothing/gloves/color/latex,
+/obj/item/storage/box/syringes,
+/obj/item/reagent_containers/dropper,
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"clw" = (
+/obj/effect/landmark/start/librarian,
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"clx" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cly" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"clz" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"clA" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"clB" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"clC" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"clD" = (
+/obj/machinery/telecomms/server/presets/medical,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clE" = (
+/obj/machinery/ntnet_relay,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clF" = (
+/obj/machinery/telecomms/server/presets/supply,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clG" = (
+/obj/machinery/telecomms/server/presets/engineering,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"clI" = (
+/obj/machinery/telecomms/bus/preset_four,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clJ" = (
+/obj/machinery/telecomms/broadcaster/preset_left,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clK" = (
+/obj/machinery/telecomms/processor/preset_four,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clL" = (
+/obj/machinery/telecomms/bus/preset_two,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clM" = (
+/obj/machinery/telecomms/broadcaster/preset_right,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clN" = (
+/obj/machinery/telecomms/processor/preset_two,
+/turf/open/floor/circuit/telecomms/mainframe,
+/area/tcommsat/server)
+"clO" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Electrical Substation";
+ req_access_txt = "10"
+ },
+/turf/open/floor/plating,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"clP" = (
+/obj/structure/table,
+/obj/item/stock_parts/subspace/amplifier,
+/obj/item/stock_parts/subspace/amplifier,
+/obj/item/stock_parts/subspace/analyzer,
+/obj/item/stock_parts/subspace/analyzer,
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"clQ" = (
+/obj/structure/table,
+/obj/item/stock_parts/subspace/ansible,
+/obj/item/stock_parts/subspace/ansible,
+/obj/item/stock_parts/subspace/crystal,
+/obj/item/stock_parts/subspace/crystal,
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"clR" = (
+/obj/structure/table,
+/obj/item/stock_parts/subspace/filter,
+/obj/item/stock_parts/subspace/filter,
+/obj/item/stock_parts/subspace/transmitter,
+/obj/item/stock_parts/subspace/transmitter,
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"clS" = (
+/obj/structure/table,
+/obj/item/stock_parts/subspace/treatment,
+/obj/item/stock_parts/subspace/treatment,
+/obj/item/stock_parts/manipulator,
+/obj/item/stock_parts/manipulator,
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"clT" = (
+/obj/structure/table,
+/obj/item/stack/sheet/glass,
+/obj/item/stack/sheet/glass,
+/obj/item/stock_parts/micro_laser,
+/obj/item/stock_parts/micro_laser,
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"clU" = (
+/obj/structure/table,
+/obj/item/stock_parts/scanning_module,
+/obj/item/stock_parts/scanning_module,
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"clV" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Supply - Security Post";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"clW" = (
+/turf/closed/wall/rust,
+/area/storage/tech)
+"clX" = (
+/turf/closed/wall/rust,
+/area/maintenance/starboard/aft)
+"clY" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/closet/firecloset,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"clZ" = (
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Escape Hall - Port";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cma" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Escape Hall - Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cmb" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Supply - Mining Dock";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cmc" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Starboard Quarter Solar Maintenance";
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"cmd" = (
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#e8eaff"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cme" = (
+/obj/structure/bed,
+/obj/item/clothing/glasses/sunglasses/blindfold,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"cmf" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cmg" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cmh" = (
+/obj/structure/sign/warning/radiation,
+/turf/closed/wall/r_wall,
+/area/engine/gravity_generator)
+"cmi" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cmj" = (
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cmk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cml" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"cmm" = (
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cmn" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cmo" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"cmp" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Gravity Generator";
+ req_access_txt = "11"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cmq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cmr" = (
+/obj/machinery/gravity_generator/main/station,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cms" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cmt" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall/r_wall,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cmu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/structure/cable,
+/obj/machinery/power/smes,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cmv" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cmw" = (
+/obj/machinery/camera{
+ c_tag = "Engineering - Gravity Generator";
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/engine/gravity_generator)
+"cmx" = (
+/obj/machinery/light,
+/turf/open/floor/engine,
+/area/engine/gravity_generator)
+"cmy" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Starboard Quarter Maintenance";
+ req_one_access_txt = "12;48"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"cmz" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Starboard Quarter Maintenance";
+ req_one_access_txt = "12;48"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"cmA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Bar Backroom";
+ req_access_txt = "25"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"cmB" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/science/robotics/lab";
+ dir = 4;
+ name = "Robotics Lab APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cmC" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"cmD" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/machinery/disposal/deliveryChute,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cmE" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cmF" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/mineral/titanium/blue,
+/area/hallway/primary/central)
+"cmG" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cmH" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "cargoblock";
+ name = "Cargo Router"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cmI" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cmJ" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Mining Dock";
+ req_one_access_txt = "10;24;48"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cmK" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cmL" = (
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cmM" = (
+/obj/structure/sign/poster/official/safety_internals{
+ pixel_x = -32
+ },
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cmN" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/item/radio/intercom{
+ frequency = 1359;
+ name = "Station Intercom (Security)";
+ pixel_y = -28
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"cmO" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=1";
+ dir = 1;
+ freq = 1400;
+ location = "Engineering"
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cmP" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"cmQ" = (
+/obj/machinery/light/small{
+ dir = 4;
+ light_color = "#d8b1b1"
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Pen 4";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"cmR" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cmS" = (
+/obj/machinery/chem_master,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"cmT" = (
+/obj/machinery/door/poddoor{
+ id = "toxinsdriver";
+ name = "toxins launcher bay door"
+ },
+/turf/open/floor/plating,
+/area/science/mixing)
+"cmU" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/sleeper{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay - Lobby";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cmV" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cmW" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/requests_console{
+ department = "Cargo";
+ name = "Cargo RC";
+ pixel_x = -30
+ },
+/obj/machinery/camera{
+ c_tag = "Supply - Quartermaster's Office";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"cmX" = (
+/obj/machinery/light/small,
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"cmY" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Hot Loop";
+ req_one_access_txt = "10;24"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/firedoor/heavy,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cmZ" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/atmospherics/components/unary/cryo_cell{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cna" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/atmospherics/components/unary/cryo_cell{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cnb" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/stripes/line,
+/obj/item/storage/box/beakers{
+ pixel_x = -4
+ },
+/obj/item/storage/box/syringes{
+ pixel_x = 4
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cnc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cnd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cne" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cnf" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cng" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"cnh" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Cold Loop";
+ req_access_txt = "10"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/firedoor/heavy,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cni" = (
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cnj" = (
+/obj/machinery/camera{
+ c_tag = "Research - Observatory";
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cnk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cnl" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1;
+ pixel_x = 5
+ },
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cnm" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cnn" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"cno" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cnp" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/bridge)
+"cnq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/mob/living/simple_animal/cockroach,
+/turf/open/floor/plating,
+/area/maintenance/port/central)
+"cnr" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cns" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cnt" = (
+/obj/structure/fans/tiny,
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ dir = 8;
+ id = "disposal"
+ },
+/obj/machinery/door/poddoor{
+ name = "Disposal Router"
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cnu" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/gateway)
+"cnv" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/bot,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/frame/computer,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cnw" = (
+/obj/effect/turf_decal/bot,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cnx" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cny" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cnz" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cnA" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cnB" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"cnC" = (
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cnD" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"cnE" = (
+/obj/docking_port/stationary{
+ dir = 2;
+ dwidth = 9;
+ height = 22;
+ id = "emergency_home";
+ name = "CogStation Escape Dock";
+ width = 29
+ },
+/turf/open/space/basic,
+/area/space)
+"cnF" = (
+/obj/structure/disposalpipe/segment,
+/obj/item/reagent_containers/food/drinks/bottle/kahlua/empty,
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/maintenance/port/fore)
+"cnG" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"cnH" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"cnI" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"cnJ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/space/basic,
+/area/solar/port)
+"cnK" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cnL" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"cnM" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"cnN" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"cnO" = (
+/turf/open/floor/plating,
+/area/science/storage)
+"cnP" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"cnQ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"cnR" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/solar/starboard/aft)
+"cnS" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/highcap/fifteen_k{
+ areastring = /area/maintenance/solars/starboard/aft;
+ dir = 1;
+ name = "Starboard Quarter Solars APC";
+ pixel_y = 26
+ },
+/turf/open/floor/plating,
+/area/maintenance/solars/starboard/aft)
+"cnT" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"cnU" = (
+/obj/machinery/door/poddoor/incinerator_toxmix,
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"cnV" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cnW" = (
+/obj/structure/chair/office/dark{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/library)
+"cnX" = (
+/obj/vehicle/ridden/secway,
+/obj/item/key/security,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cnY" = (
+/obj/vehicle/ridden/secway,
+/obj/item/key/security,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cnZ" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/holopad,
+/obj/machinery/requests_console{
+ department = "Medbay";
+ departmentType = 1;
+ name = "Medbay RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"coa" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cob" = (
+/obj/structure/closet/l3closet/virology,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/sign/warning/biohazard{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"coc" = (
+/obj/machinery/camera{
+ c_tag = "Medbay - Reception";
+ dir = 4
+ },
+/turf/open/floor/plasteel/stairs,
+/area/medical/medbay/central)
+"cod" = (
+/obj/structure/chair/comfy/brown{
+ dir = 8
+ },
+/obj/machinery/light,
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/medical/medbay/lobby)
+"coe" = (
+/obj/structure/bodycontainer/morgue,
+/obj/machinery/camera{
+ c_tag = "Medbay Morgue";
+ dir = 4
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"cof" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cog" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"coh" = (
+/obj/machinery/power/smes,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/engine/storage_shared{
+ name = "Electrical Substation"
+ })
+"coi" = (
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coj" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cok" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"col" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"com" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Robotics Storage";
+ req_access_txt = "29"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"con" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/start/station_engineer,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"coo" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cop" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "CEPrivacy";
+ name = "CE Privacy Shutters"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/heads/chief)
+"coq" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Departures"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cor" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Departures"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cos" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Engineering Workshop";
+ req_access_txt = "11"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cot" = (
+/obj/machinery/computer/apc_control{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cou" = (
+/obj/structure/chair/office/dark{
+ dir = 8
+ },
+/obj/effect/landmark/start/chief_engineer,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cov" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/robotics/lab)
+"cow" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Asteroid Mining Access";
+ req_one_access_txt = "10;48"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cox" = (
+/obj/machinery/vending/wardrobe/robo_wardrobe,
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"coy" = (
+/obj/structure/sign/poster/official/safety_internals{
+ pixel_x = -32
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"coz" = (
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coA" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/camera{
+ c_tag = "Aft Maintenance - Starboard Quarter";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"coB" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Aft Hallway - MedSci Port";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coC" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/camera{
+ c_tag = "Aft Maintenance - Starboard Bow";
+ pixel_x = 22
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"coD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coE" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Aft Hall - MedSci Starboard";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coF" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/landmark/start/assistant,
+/obj/machinery/camera{
+ c_tag = "Aft Hall - Workshop";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coG" = (
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Research - Experimentation Lab";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"coH" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/medical/chemistry)
+"coI" = (
+/obj/structure/closet/secure_closet/medical1,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
+/area/gateway)
+"coJ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Virology Access";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/medical/virology)
+"coK" = (
+/obj/machinery/camera{
+ c_tag = "Medbay - Monkey Pen";
+ dir = 4
+ },
+/mob/living/carbon/monkey,
+/turf/open/floor/grass,
+/area/medical/virology)
+"coL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=cargo";
+ location = "eng2"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coM" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"coN" = (
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 8;
+ sortType = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"coO" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Central Hall";
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/hallway/primary/central)
+"coP" = (
+/obj/structure/table/glass,
+/obj/item/paper_bin,
+/obj/machinery/camera{
+ c_tag = "Central Plaza - Port";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"coQ" = (
+/obj/machinery/camera{
+ c_tag = "Central Docking Bay"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"coR" = (
+/obj/machinery/camera{
+ c_tag = "Ferry Docking Bay";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"coS" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Ferry Docking Bay - Starboard";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"coT" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"coU" = (
+/obj/machinery/computer/secure_data{
+ dir = 1
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Security - Front Desk";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"coV" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/camera{
+ c_tag = "Medbay Entrance";
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"coW" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/techstorage/engineering,
+/obj/machinery/camera{
+ c_tag = "Technical Storage";
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"coX" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay - Operating Theatre";
+ dir = 8;
+ network = list("ss13","medbay");
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"coY" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/item/reagent_containers/glass/beaker/cryoxadone,
+/obj/item/reagent_containers/glass/beaker/cryoxadone,
+/obj/machinery/camera{
+ c_tag = "Medbay - Cryogenics";
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"coZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cpa" = (
+/obj/structure/closet/crate/radiation,
+/obj/item/storage/firstaid/radbgone,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/head/radiation,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpb" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/sign/warning/biohazard{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/medical/virology)
+"cpc" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cpd" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/wood,
+/area/crew_quarters/fitness)
+"cpe" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/white/full,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cpf" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cpg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cph" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 9
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cpi" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/visible{
+ dir = 5
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cpj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cpk" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpl" = (
+/obj/machinery/newscaster{
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cpm" = (
+/obj/structure/chair/stool,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/turf/open/floor/plasteel,
+/area/lawoffice)
+"cpn" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cpo" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpp" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor/auto{
+ id = "cargo"
+ },
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor/preopen{
+ id = "cargoblock";
+ name = "Cargo Router"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cpq" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/abandoned_gambling_den{
+ name = "Arcade"
+ })
+"cpr" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/door/airlock/public/glass,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cps" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cpt" = (
+/obj/vehicle/ridden/secway,
+/obj/item/key/security,
+/obj/machinery/newscaster{
+ pixel_x = -30
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/captain)
+"cpu" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/library)
+"cpv" = (
+/obj/structure/table,
+/obj/machinery/newscaster{
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cpw" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/item/grenade/chem_grenade,
+/obj/item/grenade/chem_grenade,
+/obj/item/grenade/chem_grenade,
+/obj/item/grenade/chem_grenade,
+/obj/item/screwdriver,
+/obj/item/stack/cable_coil/random,
+/obj/item/stack/cable_coil/random,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Research - Chemistry Lab";
+ dir = 4
+ },
+/obj/machinery/requests_console{
+ department = "Chemistry";
+ departmentType = 1;
+ name = "Chemistry RC";
+ pixel_x = -30;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cpx" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/mineral/titanium/blue,
+/area/hallway/primary/central)
+"cpy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cpz" = (
+/turf/closed/wall/r_wall,
+/area/medical/virology)
+"cpA" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpB" = (
+/obj/effect/landmark/carpspawn,
+/turf/open/space/basic,
+/area/space)
+"cpC" = (
+/obj/effect/landmark/carpspawn,
+/turf/open/space/basic,
+/area/space/station_ruins)
+"cpD" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/plating,
+/area/science/storage)
+"cpE" = (
+/obj/structure/fans/tiny,
+/obj/structure/plasticflaps,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cpF" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpG" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/external,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/eva)
+"cpH" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/directions/engineering{
+ dir = 4;
+ pixel_y = -24
+ },
+/obj/structure/sign/directions/supply{
+ dir = 4;
+ pixel_y = -32
+ },
+/obj/structure/sign/directions/evac{
+ dir = 4;
+ pixel_y = -40
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cpI" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"cpJ" = (
+/turf/closed/wall/r_wall/rust,
+/area/quartermaster/office)
+"cpK" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/canister,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cpL" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 9
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cpM" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/turretid{
+ control_area = "area/science/server";
+ icon_state = "control_stun";
+ name = "Computer Core turret control";
+ pixel_x = -3;
+ pixel_y = -23
+ },
+/turf/open/floor/plasteel,
+/area/ai_monitored/turret_protected/ai_upload_foyer)
+"cpN" = (
+/obj/structure/closet/secure_closet/atmospherics,
+/obj/item/cartridge/atmos,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"cpO" = (
+/obj/structure/closet/secure_closet/atmospherics,
+/obj/item/cartridge/atmos,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"cpP" = (
+/obj/machinery/camera{
+ c_tag = "Research - Gateway Atrium";
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"cpQ" = (
+/obj/machinery/vending/wardrobe/atmos_wardrobe,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6;
+ layer = 2.03
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
+"cpR" = (
+/obj/structure/closet/crate/engineering/electrical,
+/obj/item/electronics/apc,
+/obj/item/electronics/apc,
+/obj/item/electronics/airalarm,
+/obj/item/electronics/airalarm,
+/obj/item/electronics/firelock,
+/obj/item/electronics/firelock,
+/obj/item/electronics/firealarm,
+/obj/item/electronics/firealarm,
+/obj/item/electronics/airlock,
+/obj/item/electronics/airlock,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpS" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 5
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpT" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpV" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cpW" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/start/cargo_technician,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cpX" = (
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/engine/air,
+/area/engine/atmos)
+"cpY" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_hot)
+"cpZ" = (
+/obj/structure/table,
+/obj/item/tank/internals/air,
+/obj/item/clothing/mask/gas,
+/turf/open/floor/plasteel/dark,
+/area/engine/teg_hot)
+"cqa" = (
+/obj/machinery/autolathe,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqb" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cqc" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqd" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/mob/living/simple_animal/hostile/retaliate/goose{
+ check_friendly_fire = 1;
+ desc = "It may not be as wise as an owl, but the Head of Security's pet is far more dangerous.";
+ faction = list("neutral","silicon","turret","station");
+ name = "Officer Snooty"
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"cqe" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=eng1";
+ location = "sci"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cqf" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cqg" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cqh" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cqi" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness)
+"cqj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cqk" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=med";
+ location = "cargo"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cql" = (
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=eng2";
+ location = "evac"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cqm" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 26
+ },
+/obj/item/storage/box/disks_nanite,
+/obj/item/book/manual/wiki/research_and_development{
+ pixel_x = 4;
+ pixel_y = -8
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cqn" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqo" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqq" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Warehouse";
+ req_one_access_txt = "10;24"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqr" = (
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/starboard/central";
+ name = "Central Starboard Maintenance APC";
+ pixel_y = -26
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/central)
+"cqs" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/table/wood,
+/obj/item/clipboard,
+/obj/item/paper/guides/jobs/engi/solars,
+/obj/item/pen,
+/obj/machinery/camera{
+ c_tag = "Engineering Foyer - Port";
+ network = list("ss13","rd")
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqt" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/computer/station_alert,
+/obj/structure/sign/poster/official/safety_eye_protection{
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqu" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/computer/atmos_alert,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqv" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqw" = (
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/disposal/bin,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/white/full,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqx" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/modular_computer/console/preset/engineering,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/table/wood,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/obj/structure/disposalpipe/segment,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqz" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/table/wood,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqA" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqB" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/computer/secure_data{
+ dir = 8
+ },
+/obj/machinery/newscaster/security_unit{
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"cqC" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqD" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqE" = (
+/obj/machinery/conveyor_switch{
+ id = "EngiCargoConveyer"
+ },
+/obj/machinery/button/door{
+ id = "EngiDeliverDoor";
+ name = "Engineering Delivery Door Control";
+ pixel_x = 24
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqF" = (
+/obj/effect/turf_decal/delivery,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cqG" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqH" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"cqI" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/atmospheric_technician,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqJ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqK" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/portable_atmospherics/pump,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/sign/plaques/atmos{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cqL" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqM" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqN" = (
+/turf/closed/wall/rust,
+/area/maintenance/department/security)
+"cqO" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cqP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cqQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cqR" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cqS" = (
+/obj/machinery/computer/rdconsole/experiment{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/requests_console{
+ department = "Science";
+ departmentType = 2;
+ name = "Science RC";
+ pixel_x = -30;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"cqT" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cqU" = (
+/obj/machinery/door/airlock/external{
+ name = "Escape Pod"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cqV" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"cqW" = (
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cqX" = (
+/obj/docking_port/stationary{
+ dir = 4;
+ dwidth = 5;
+ height = 7;
+ id = "supply_home";
+ name = "Cargo Shuttle";
+ width = 12
+ },
+/turf/open/space/basic,
+/area/space)
+"cqY" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/status_display{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cqZ" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/requests_console{
+ department = "Medbay";
+ departmentType = 1;
+ name = "Medbay RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cra" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Auxiliary Tool Storage"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/storage/tools)
+"crb" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/turf/open/floor/plating,
+/area/engine/teg_cold)
+"crc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"crd" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/table/reinforced,
+/obj/item/destTagger,
+/obj/item/destTagger,
+/obj/item/destTagger,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_y = 32
+ },
+/obj/machinery/button/massdriver{
+ id = "cargo_out";
+ pixel_x = -8;
+ pixel_y = -4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cre" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Asteroid Mining Access";
+ req_one_access_txt = "10;48"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"crf" = (
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/medical/chemistry";
+ name = "Chemistry Lab APC";
+ pixel_y = -26
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"crg" = (
+/obj/structure/reagent_dispensers/fueltank/high,
+/obj/machinery/light/small,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"crh" = (
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "cargo_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cri" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"crj" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"crk" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/mineral/titanium/blue,
+/area/hallway/primary/central)
+"crl" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"crm" = (
+/obj/machinery/door/firedoor,
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "EngiCargoConveyer"
+ },
+/obj/machinery/door/poddoor{
+ id = "EngiDeliverDoor";
+ name = "Engineering Delivery Door"
+ },
+/turf/open/floor/plating,
+/area/engine/teg_cold)
+"crn" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/turf/open/floor/plating,
+/area/science/storage)
+"cro" = (
+/turf/closed/wall/r_wall/rust,
+/area/maintenance/starboard/aft)
+"crp" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/storage/tech)
+"crq" = (
+/obj/structure/closet/crate/freezer,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/medical/morgue";
+ dir = 4;
+ name = "Morgue APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"crr" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Central Hall - Fore";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"crs" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/turf/open/floor/engine,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"crt" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cru" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"crv" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"crw" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"crx" = (
+/obj/machinery/camera{
+ c_tag = "Engine Room - Port Quarter";
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cry" = (
+/obj/structure/bookcase/random/religion,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/library)
+"crz" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Satellite";
+ dir = 1;
+ network = list("tcomms")
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"crA" = (
+/obj/structure/bookcase/random/fiction,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/library)
+"crB" = (
+/obj/structure/lattice,
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Satellite Exterior - Port";
+ dir = 8;
+ network = list("tcomms")
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"crC" = (
+/obj/structure/lattice,
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Satellite Exterior Starboard";
+ dir = 4;
+ network = list("tcomms")
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"crD" = (
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Server Room";
+ dir = 1;
+ network = list("tcomms")
+ },
+/turf/open/floor/plasteel/dark/telecomms,
+/area/tcommsat/server)
+"crE" = (
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Satellite Exterior - Port Quarter";
+ network = list("tcomms")
+ },
+/turf/open/space/basic,
+/area/space)
+"crF" = (
+/obj/machinery/camera/motion{
+ c_tag = "Telecomms Satellite Exterior - Starboard Quarter";
+ network = list("tcomms");
+ pixel_x = 22
+ },
+/turf/open/space/basic,
+/area/space)
+"crG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"crH" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"crI" = (
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/science/mixing)
+"crJ" = (
+/obj/structure/window/reinforced,
+/obj/machinery/mass_driver{
+ dir = 8;
+ id = "toxinsdriver"
+ },
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/science/mixing)
+"crK" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"crL" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"crM" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plating/airless,
+/area/science/test_area)
+"crN" = (
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/machinery/atmospherics/components/unary/tank/air{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"crO" = (
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/end,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"crP" = (
+/obj/structure/lattice,
+/turf/closed/wall,
+/area/hallway/secondary/entry)
+"crQ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/safety_internals{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"crR" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"crS" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external{
+ name = "Escape Pod"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"crT" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/sign/poster/official/safety_internals{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"crU" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/item/crowbar,
+/obj/structure/sign/poster/official/safety_internals{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"crV" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/airlock/public/glass,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"crW" = (
+/obj/effect/landmark/start/paramedic,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"crX" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/start/medical_doctor,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"crY" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"crZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs/left,
+/area/hallway/primary/aft)
+"csa" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/sign/warning/pods{
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"csb" = (
+/obj/structure/sign/warning/pods{
+ pixel_x = 32;
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/dark/corner{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"csc" = (
+/obj/structure/fans/tiny/invisible,
+/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/space/basic,
+/area/space)
+"csd" = (
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cse" = (
+/obj/structure/table/wood,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/item/clipboard,
+/obj/item/paper/monitorkey,
+/obj/item/pen/fountain,
+/obj/item/stamp/ce,
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Chief Engineer's Desk";
+ departmentType = 5;
+ name = "Chief Engineer's RC";
+ pixel_y = -32
+ },
+/mob/living/simple_animal/parrot/Poly,
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"csf" = (
+/obj/structure/table/wood,
+/obj/machinery/recharger,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Research Director's Desk";
+ departmentType = 5;
+ name = "Research Director's RC";
+ pixel_y = -32;
+ receive_ore_updates = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"csg" = (
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"csh" = (
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"csi" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"csj" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"csk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"csl" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"csm" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"csn" = (
+/obj/machinery/computer/security{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/requests_console{
+ department = "Security";
+ departmentType = 5;
+ name = "Security RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"cso" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/holopad,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"csp" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_x = 28
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"csq" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Cold Loop";
+ req_access_txt = "10"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"csr" = (
+/obj/structure/table,
+/obj/machinery/computer/libraryconsole/bookmanagement,
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Bridge";
+ departmentType = 5;
+ name = "Bridge RC";
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"css" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"cst" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/teg_cold)
+"csu" = (
+/obj/structure/table,
+/obj/machinery/computer/med_data/laptop,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/requests_console{
+ announcementConsole = 1;
+ department = "Chief Medical Officer's Desk";
+ departmentType = 5;
+ name = "Chief Medical Officer RC";
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"csv" = (
+/obj/machinery/computer/card/minor/cmo{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/keycard_auth{
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"csw" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"csx" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/photocopier,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"csy" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/xmastree,
+/turf/open/floor/plasteel{
+ dir = 1;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
+"csz" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"csA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Visitation"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"csB" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"csC" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating/asteroid,
+/area/hydroponics/garden{
+ name = "Nature Preserve"
+ })
+"csD" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"csE" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hop)
+"csF" = (
+/obj/structure/bed,
+/obj/effect/landmark/start/research_director,
+/obj/item/bedsheet/rd,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"csG" = (
+/obj/machinery/holopad,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/lawoffice)
+"csH" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/library)
+"csI" = (
+/obj/structure/table/wood,
+/obj/machinery/light_switch{
+ pixel_x = 4;
+ pixel_y = -24
+ },
+/obj/item/flashlight/lamp/green,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -6;
+ pixel_y = -32
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"csJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"csK" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/science/robotics/lab)
+"csL" = (
+/obj/effect/landmark/xmastree/rdrod,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"csM" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"csN" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"csO" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"csP" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"csQ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"csR" = (
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plating,
+/area/science/storage)
+"csS" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"csT" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/science/circuit)
+"csU" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/storage/tech)
+"csV" = (
+/obj/machinery/chem_master,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"csW" = (
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"csX" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"csY" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"csZ" = (
+/obj/machinery/holopad,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cta" = (
+/obj/effect/landmark/blobstart,
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"ctb" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/landmark/blobstart,
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/engine,
+/area/science/explab)
+"ctc" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ctd" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cte" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctf" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctg" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cth" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cti" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctj" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"ctk" = (
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 4
+ },
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = 32
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"ctl" = (
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"ctm" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/disposalpipe/sorting/mail/flip{
+ sortType = 2
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctn" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/item/storage/toolbox/mechanical,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cto" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/white/full,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctq" = (
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/quartermaster/office)
+"cts" = (
+/obj/structure/rack,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"ctt" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"ctu" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ctv" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"ctw" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"ctx" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cty" = (
+/obj/effect/landmark/start/shaft_miner,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"ctz" = (
+/obj/structure/table,
+/obj/item/stamp/qm,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/item/coin/silver{
+ pixel_x = -12
+ },
+/obj/item/key{
+ pixel_x = 8;
+ pixel_y = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"ctA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Cargo Bay";
+ req_one_access_txt = "31;48"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"ctB" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"ctC" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"ctD" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"ctE" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/modular_computer/console/preset/engineering,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/window/reinforced/spawner/north,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"ctF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"ctG" = (
+/turf/closed/wall,
+/area/engine/workshop)
+"ctH" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"ctI" = (
+/obj/structure/table/reinforced,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"ctJ" = (
+/obj/structure/plasticflaps,
+/turf/open/floor/plating,
+/area/engine/workshop)
+"ctK" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"ctL" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Pen 5";
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"ctM" = (
+/obj/machinery/light/small{
+ dir = 4;
+ light_color = "#d8b1b1"
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Pen 6";
+ dir = 8;
+ pixel_y = -22
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"ctN" = (
+/obj/machinery/light/small{
+ dir = 4;
+ light_color = "#d8b1b1"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ctO" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/sign/warning/biohazard{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"ctP" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ctQ" = (
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
+"ctR" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"ctS" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/sign/warning/biohazard{
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"ctT" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#c1caff"
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Aft";
+ network = list("ss13","rd")
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"ctU" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 10
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"ctV" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/hallway/secondary/exit";
+ name = "Escape Shuttle Hallway APC";
+ pixel_y = -28
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/hallway/secondary/exit)
+"ctW" = (
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ctX" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/closet/toolcloset,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"ctY" = (
+/obj/structure/sign/departments/xenobio{
+ pixel_x = -32;
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"ctZ" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cua" = (
+/obj/structure/chair/comfy/black{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cub" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cuc" = (
+/obj/machinery/door/airlock/virology/glass{
+ name = "Monkey Pen";
+ req_access_txt = "39"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cud" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Aft Access";
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cue" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research{
+ name = "Xenobiology Lab";
+ req_access_txt = "8;55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cuf" = (
+/obj/machinery/light,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cug" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cuh" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cui" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cuj" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cuk" = (
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cul" = (
+/obj/structure/chair/comfy/black,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cum" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/trunk,
+/obj/structure/sign/poster/official/science{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cun" = (
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/food/snacks/meat/steak,
+/obj/machinery/camera{
+ c_tag = "Xenobiology - Test Chamber";
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"cuo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"cup" = (
+/obj/structure/table,
+/obj/item/surgical_drapes,
+/obj/item/scalpel,
+/obj/item/circular_saw{
+ pixel_y = 16
+ },
+/obj/item/hemostat,
+/obj/item/retractor,
+/obj/item/cautery,
+/obj/item/clothing/gloves/color/latex,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cuq" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cur" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cus" = (
+/obj/machinery/light/small,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cut" = (
+/obj/docking_port/stationary{
+ dir = 2;
+ dwidth = 7;
+ height = 9;
+ id = "whiteship_home";
+ name = "SS13: Merchant Dock";
+ width = 13
+ },
+/turf/open/space/basic,
+/area/space)
+"cuu" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/closet/toolcloset,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuv" = (
+/obj/structure/bed,
+/obj/item/bedsheet/medical,
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cuw" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cux" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"cuy" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuz" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuA" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuB" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuC" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/sign/warning/electricshock{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuD" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuE" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuF" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuG" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cuH" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuI" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/item/storage/toolbox/emergency,
+/obj/item/screwdriver,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuJ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/storage/toolbox/mechanical,
+/obj/item/screwdriver,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuK" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/closet/secure_closet/engineering_welding,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/engine/workshop";
+ dir = 1;
+ name = "Engineering Workshop APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuL" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuM" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuN" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/closed/wall,
+/area/engine/workshop)
+"cuO" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cuP" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/landmark/start/atmospheric_technician,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cuQ" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"cuR" = (
+/turf/closed/wall,
+/area/router/air)
+"cuS" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "workshop_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cuT" = (
+/obj/structure/window/reinforced/spawner/west,
+/obj/machinery/conveyor{
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cuU" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/sign/poster/official/build{
+ pixel_x = -32
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuV" = (
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cuW" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medbay";
+ req_access_txt = "5"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/mapping_helpers/airlock/unres,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cuX" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medbay";
+ req_access_txt = "5"
+ },
+/obj/effect/mapping_helpers/airlock/unres,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cuY" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research{
+ name = "Chemistry Lab";
+ req_access_txt = "8;33;47"
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"cuZ" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cva" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cvb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cvc" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/station_engineer,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cvd" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cve" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"cvf" = (
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cvg" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cvh" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/computer/rdconsole/production{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cvi" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cvj" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/obj/machinery/conveyor{
+ id = "DeliveryConveyer"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cvk" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "DeliveryConveyer"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cvl" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/router/air)
+"cvm" = (
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/central";
+ dir = 1;
+ name = "Airbridge Router APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cvn" = (
+/obj/structure/table,
+/obj/item/destTagger,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/router/air)
+"cvo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cvp" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/computer/cargo/request,
+/obj/machinery/camera{
+ c_tag = "Airbridge Router";
+ pixel_x = 22
+ },
+/obj/machinery/requests_console{
+ department = "Airbridge Router";
+ name = "Airbridge Router RC";
+ pixel_y = 28
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cvq" = (
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cvr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cvs" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cvt" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cvu" = (
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cvv" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/requests_console{
+ department = "Genetics";
+ name = "Genetics RC";
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cvw" = (
+/obj/structure/closet,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/item/wrench/medical,
+/obj/item/screwdriver,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_y = -30
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cvx" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/item/storage/firstaid/regular{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/regular{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/firstaid/regular{
+ pixel_x = 2;
+ pixel_y = 4
+ },
+/obj/item/storage/toolbox/emergency,
+/obj/item/hypospray/mkii/tricord,
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_y = -30
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cvy" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cvz" = (
+/obj/machinery/atmospherics/components/trinary/mixer{
+ dir = 4;
+ node1_concentration = 0.8;
+ node2_concentration = 0.2;
+ on = 1;
+ target_pressure = 4500
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cvA" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/warning/securearea{
+ pixel_x = -32;
+ pixel_y = -32
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cvB" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/porta_turret/ai{
+ dir = 1;
+ req_access = list(16)
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cvC" = (
+/obj/machinery/computer/nanite_cloud_controller,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/structure/window/reinforced/spawner,
+/turf/open/floor/plasteel/dark,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cvD" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/rnd/server,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cvE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/door/poddoor{
+ id = "RDServer";
+ name = "RD Server Lockup"
+ },
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cvF" = (
+/obj/item/caution,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cvG" = (
+/obj/machinery/door/airlock/research/glass{
+ name = "Xenobiology Lab Access";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cvH" = (
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research{
+ name = "Toxins Mixing Lab";
+ req_access_txt = "7;8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor/heavy,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"cvI" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/computer/telecomms/server{
+ dir = 1;
+ network = "tcommsat"
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"cvJ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"cvK" = (
+/obj/structure/chair/sofa/right,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"cvL" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cvM" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/bottle/absinthe,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"cvN" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cvO" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cvP" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/camera{
+ c_tag = "Custodial Closet";
+ dir = 1
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cvQ" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/landmark/start/chemist,
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/chair/office/light,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cvR" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/emergency,
+/obj/item/clothing/head/welding,
+/obj/item/clothing/glasses/welding,
+/obj/item/weldingtool,
+/obj/machinery/camera{
+ c_tag = "Robotics";
+ dir = 8;
+ network = list("ss13","medbay");
+ pixel_y = -22
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cvS" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/item/clothing/glasses/science,
+/obj/item/hand_labeler{
+ pixel_y = 8
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cvT" = (
+/obj/structure/extinguisher_cabinet,
+/turf/closed/wall,
+/area/medical/medbay/central)
+"cvU" = (
+/obj/structure/closet/crate/freezer/blood,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/reagent_dispensers/virusfood{
+ pixel_x = -32
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cvV" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cvW" = (
+/obj/structure/chair/comfy/black,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cvX" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research{
+ name = "Xenobiology Lab";
+ req_access_txt = "8;55"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cvY" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research/glass{
+ name = "Xenobiology Lab Access";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
+"cvZ" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/item/clipboard,
+/obj/item/stamp/denied{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/stamp,
+/obj/machinery/door/window/southright{
+ name = "Customs Desk";
+ req_access_txt = "57"
+ },
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "HoPAft";
+ name = "HoP Aft Desk Shutters"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"cwa" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/item/flashlight/lamp,
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "HoPAft";
+ name = "HoP Aft Desk Shutters"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"cwb" = (
+/obj/machinery/door/airlock/maintenance{
+ name = "Research Maintenance";
+ req_one_access_txt = "12;47"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plating,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cwc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/button/door{
+ id = "cargoblock";
+ name = "Router Access Control";
+ pixel_x = -24;
+ pixel_y = 24;
+ req_access_txt = "31"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"cwd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/science/server{
+ name = "Computer Core"
+ })
+"cwe" = (
+/obj/structure/closet/secure_closet/exile,
+/turf/open/floor/plasteel/white,
+/area/gateway)
+"cwf" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cwg" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cwh" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cwi" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cwj" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/medical/virology)
+"cwk" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/lounge)
+"cwl" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/book/manual/wiki/infections,
+/obj/item/folder/white,
+/obj/machinery/requests_console{
+ department = "Virology";
+ name = "Virology RC";
+ pixel_x = -32
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cwm" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cwn" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cwo" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/machinery/microwave,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cwp" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/medical/virology)
+"cwq" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Hot Loop";
+ req_one_access_txt = "10;24"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/door/firedoor/heavy,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cwr" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cws" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cwt" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"cwu" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cwv" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/sign/warning/vacuum/external,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cww" = (
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cwx" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/transit_tube/station/reverse/flipped{
+ dir = 1
+ },
+/obj/structure/transit_tube_pod{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cwy" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/transit_tube/horizontal,
+/turf/open/floor/plating,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cwz" = (
+/obj/structure/transit_tube/curved{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space)
+"cwA" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cwB" = (
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cwC" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cwD" = (
+/obj/structure/transit_tube/diagonal/topleft,
+/turf/open/space/basic,
+/area/space)
+"cwE" = (
+/obj/effect/landmark/start/station_engineer,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cwF" = (
+/obj/structure/lattice,
+/obj/structure/transit_tube/curved{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cwG" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/segment,
+/obj/structure/transit_tube/horizontal,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cwH" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall,
+/area/crew_quarters/toilet/restrooms)
+"cwI" = (
+/obj/structure/transit_tube/horizontal,
+/turf/open/space/basic,
+/area/space)
+"cwJ" = (
+/obj/structure/lattice,
+/obj/structure/transit_tube/horizontal,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cwK" = (
+/obj/structure/transit_tube/crossing/horizontal,
+/turf/open/space/basic,
+/area/space)
+"cwL" = (
+/obj/structure/transit_tube/horizontal,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cwM" = (
+/obj/effect/turf_decal/stripes/end{
+ dir = 4
+ },
+/obj/structure/transit_tube/station/reverse/flipped,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cwN" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"cwO" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cwP" = (
+/obj/structure/bed,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/landmark/start/chief_engineer,
+/obj/item/bedsheet/ce,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/heads/chief";
+ dir = 4;
+ name = "Chief Engineer's Office APC";
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cwQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cwR" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cwS" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering{
+ name = "Warehouse";
+ req_access_txt = "11"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cwT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/medical/virology)
+"cwU" = (
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/mineral/titanium/blue,
+/area/hallway/primary/central)
+"cwV" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cwW" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/door/airlock/public/glass,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cwX" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 1
+ },
+/obj/machinery/door/airlock/public/glass,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cwY" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/air_sensor/atmos/toxins_mixing_tank,
+/turf/open/floor/engine/vacuum,
+/area/science/mixing)
+"cwZ" = (
+/obj/structure/table,
+/obj/item/storage/box/beanbag,
+/obj/item/gun/ballistic/revolver/doublebarrel,
+/obj/item/storage/hypospraykit/toxin,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/bar)
+"cxa" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 6
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cxb" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cxc" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cxd" = (
+/obj/machinery/computer/monitor,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cxe" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxf" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cxg" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cxh" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cxi" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/item/extinguisher,
+/obj/item/extinguisher,
+/obj/item/extinguisher,
+/obj/item/extinguisher,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/camera{
+ c_tag = "Engineering - Primary Tool Storage";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cxj" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/reagent_dispensers/foamtank,
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cxk" = (
+/obj/structure/tank_dispenser,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cxl" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall,
+/area/storage/primary)
+"cxm" = (
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"cxn" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/item/t_scanner{
+ pixel_x = -4
+ },
+/obj/item/pipe,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating{
+ icon_state = "platingdmg2"
+ },
+/area/quartermaster/warehouse)
+"cxo" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/light/small,
+/obj/machinery/camera{
+ c_tag = "Supply - Warehouse Aft";
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/mob/living/simple_animal/bot/floorbot,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxq" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxr" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxs" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/item/storage/toolbox/electrical,
+/obj/item/hand_labeler,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cxt" = (
+/obj/effect/landmark/start/cargo_technician,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cxu" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"cxv" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxw" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxx" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/mining/glass{
+ name = "Warehouse";
+ req_one_access_txt = "10;31"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"cxy" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs,
+/area/quartermaster/storage)
+"cxz" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxA" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/mining{
+ name = "Mining Office";
+ req_access_txt = "48"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cxB" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Cargo Office"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxC" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxE" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cxF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxG" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxI" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxJ" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxL" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxM" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cxN" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxO" = (
+/obj/structure/table,
+/obj/item/storage/firstaid/regular,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cxP" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxQ" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxR" = (
+/obj/effect/landmark/start/shaft_miner,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cxS" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cxT" = (
+/obj/structure/table,
+/obj/effect/turf_decal/bot,
+/obj/machinery/camera{
+ c_tag = "Supply - Cargo Office";
+ dir = 1
+ },
+/obj/machinery/newscaster{
+ pixel_y = -28
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxU" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cxV" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cxW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Starboard Quarter Maintenance";
+ req_one_access_txt = "12;48"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/office)
+"cxX" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cxY" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cxZ" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cya" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cyb" = (
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cyc" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Mining Dock";
+ req_one_access_txt = "10;24;48"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cyd" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cye" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cyf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cyg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cyh" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Mining Office Maintenance";
+ req_one_access_txt = "10;24;48"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/miningoffice)
+"cyi" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 8;
+ icon_state = "intact"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cyj" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cyk" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cyl" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cym" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cyn" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cyo" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Aft Maintenance";
+ req_access_txt = "12"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"cyp" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cyq" = (
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/power/apc{
+ name = "Restrooms APC";
+ pixel_x = 24
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"cyr" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cys" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cyt" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyu" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/camera{
+ c_tag = "Aft Maintenance - Port";
+ pixel_x = 22
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyv" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cyw" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/obj/structure/sign/poster/official/cleanliness{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"cyx" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cyy" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Medbay Lobby"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel/white/side,
+/area/medical/medbay/lobby)
+"cyz" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cyA" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cyB" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyC" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyD" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Departures"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cyE" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cyF" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cyG" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cyH" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Aft Maintenance";
+ req_access_txt = "12"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/medical/medbay/lobby)
+"cyI" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyJ" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"cyK" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cyL" = (
+/obj/structure/closet/cardboard,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyM" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyN" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Robotics Lab Maintenance";
+ req_access_txt = "29"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/science/robotics/lab)
+"cyO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyR" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyS" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyT" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyU" = (
+/obj/machinery/camera{
+ c_tag = "Aft Maintenance - Central Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cyV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"cyW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cyX" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cyY" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"cyZ" = (
+/obj/machinery/computer/arcade,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"cza" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"czb" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/paicard,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/hallway/secondary/exit)
+"czc" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/hallway/secondary/exit)
+"czd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cze" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czf" = (
+/obj/structure/chair/office/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/landmark/start/chief_medical_officer,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"czg" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/mob/living/simple_animal/hostile/retaliate/bat,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"czh" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"czi" = (
+/obj/structure/bed,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/effect/landmark/start/chief_medical_officer,
+/obj/item/bedsheet/cmo,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"czj" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"czk" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"czl" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Aft Maintenance";
+ req_access_txt = "12"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/hallway/secondary/exit)
+"czm" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czn" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czo" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czp" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czq" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/food/drinks/coffee,
+/obj/item/pen/blue,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czr" = (
+/obj/structure/table/glass,
+/obj/item/storage/toolbox/emergency,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czs" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czt" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"czu" = (
+/obj/machinery/suit_storage_unit/cmo,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"czv" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research{
+ name = "Morgue";
+ req_access_txt = "5;29"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"czw" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"czx" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"czy" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"czz" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command/glass{
+ name = "CMO's Office";
+ req_access_txt = "40"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/crew_quarters/heads/cmo)
+"czA" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/crew_quarters/heads/cmo)
+"czB" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Medbay Maintenance";
+ req_access_txt = "5"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"czC" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"czD" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"czE" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"czF" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/disposalpipe/sorting/mail/flip{
+ sortType = 23
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"czG" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"czH" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"czI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"czJ" = (
+/obj/item/beacon,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"czK" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"czL" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"czM" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"czN" = (
+/obj/structure/closet/crate/trashcart,
+/obj/structure/sign/departments/custodian{
+ pixel_x = 32
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/chapel)
+"czO" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Waste Disposal";
+ req_one_access_txt = "12;50"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"czP" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"czQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"czR" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/sorting/mail,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/department/chapel)
+"czS" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock{
+ name = "Custodial Closet";
+ req_access_txt = "26"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"czT" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"czU" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"czV" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"czW" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/door/airlock/research/glass{
+ name = "Robotics Lab";
+ req_access_txt = "29"
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/robotics/lab)
+"czX" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/rust,
+/area/maintenance/disposal)
+"czY" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"czZ" = (
+/obj/effect/landmark/start/janitor,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAa" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/structure/chair/sofa/right,
+/obj/item/reagent_containers/food/drinks/bottle/vermouth/empty,
+/obj/item/reagent_containers/food/snacks/grown/cannabis{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAb" = (
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/structure/chair/sofa/left,
+/obj/item/storage/box/hug/medical,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAc" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cAd" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cAe" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAg" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAh" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Custodial Closet";
+ req_access_txt = "12;26"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAi" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAj" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAk" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/item/reagent_containers/pill/floorpill,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAl" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/item/stack/tile/plasteel{
+ pixel_x = 10;
+ pixel_y = 4
+ },
+/obj/item/camera,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/glass{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAm" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cAn" = (
+/obj/structure/disposalpipe/junction/flip,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cAo" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAp" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cAq" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAr" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/disposal)
+"cAs" = (
+/obj/structure/mopbucket,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAt" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/window/southleft{
+ name = "Cloning Access";
+ req_one_access_txt = "9;45"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cAu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cAv" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs,
+/area/medical/medbay/central)
+"cAw" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/item/soap,
+/obj/item/grenade/chem_grenade/cleaner,
+/obj/item/grenade/chem_grenade/cleaner,
+/obj/item/grenade/chem_grenade/cleaner,
+/obj/item/reagent_containers/spray/cleaner{
+ pixel_x = 4;
+ pixel_y = -1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/item/reagent_containers/spray/cleaner{
+ pixel_x = -8;
+ pixel_y = 4
+ },
+/obj/machinery/requests_console{
+ department = "Custodial Closet";
+ name = "Custodial RC";
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAx" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/landmark/start/janitor,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cAy" = (
+/obj/item/cigbutt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cAz" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/structure/grille/broken,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cAA" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/closed/wall,
+/area/storage/primary)
+"cAB" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cAC" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cAD" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/virology/glass{
+ name = "Isolation Room A";
+ req_access_txt = "39"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cAE" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/item/caution,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cAF" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Detective's Office";
+ req_access_txt = "4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cAG" = (
+/obj/structure/chair/office/light{
+ dir = 4
+ },
+/obj/effect/landmark/start/virologist,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cAH" = (
+/obj/structure/table,
+/obj/item/storage/box/beakers,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cAI" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cAJ" = (
+/obj/structure/table/wood,
+/obj/item/storage/book/bible/booze,
+/obj/item/beacon{
+ pixel_y = -8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"cAK" = (
+/obj/machinery/computer/med_data,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cAL" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/security{
+ name = "Detective's Office";
+ req_access_txt = "4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/detectives_office)
+"cAM" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cAN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cAO" = (
+/obj/effect/landmark/start/detective,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cAP" = (
+/obj/structure/table/wood,
+/obj/item/storage/fancy/cigarettes,
+/obj/item/lighter{
+ pixel_x = -4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/newscaster/security_unit{
+ pixel_y = -30
+ },
+/obj/machinery/camera{
+ c_tag = "Detective's Office";
+ dir = 1
+ },
+/obj/item/reagent_containers/food/drinks/bottle/hcider{
+ pixel_x = 3;
+ pixel_y = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cAQ" = (
+/obj/structure/closet/crate/trashcart,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/disposalpipe/junction,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cAR" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"cAS" = (
+/obj/structure/table/wood,
+/obj/item/storage/box/evidence,
+/obj/item/hand_labeler,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cAT" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/aft)
+"cAU" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cAV" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cAW" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cAX" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cAY" = (
+/obj/machinery/door/airlock{
+ name = "Catering";
+ req_one_access_txt = "25;28"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/bar)
+"cAZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cBa" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cBb" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/main)
+"cBc" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cBe" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBf" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBg" = (
+/obj/structure/chair,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/landmark/start/assistant,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBh" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBi" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBj" = (
+/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/landmark/start/station_engineer,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cBl" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Power Monitoring";
+ req_access_txt = "10"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/engine_smes{
+ name = "Power Monitoring"
+ })
+"cBm" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/rnd/production/techfab/department/engineering,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cBn" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cBo" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBp" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cBq" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBr" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"cBs" = (
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"cBt" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ name = "Security Office";
+ req_access_txt = "63"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/security/main)
+"cBu" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/sign/departments/security{
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBv" = (
+/obj/structure/table/glass,
+/obj/effect/turf_decal/tile/neutral,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBw" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Central Maintenance";
+ req_one_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/hallway/primary/port/fore)
+"cBx" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cBy" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cBz" = (
+/obj/structure/filingcabinet/filingcabinet,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/brown,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/qm)
+"cBA" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = 32
+ },
+/obj/machinery/camera{
+ c_tag = "Aft Hall - Fore";
+ pixel_x = 22
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cBB" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cBC" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/aft/secondary{
+ name = "Aft Air Hookup"
+ })
+"cBD" = (
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cBE" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBF" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"cBG" = (
+/obj/machinery/light,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cBH" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cBI" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/table/wood,
+/obj/machinery/recharger,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cBJ" = (
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/table/wood,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/power/apc{
+ name = "Engineering Foyer APC";
+ pixel_y = -24
+ },
+/obj/item/storage/firstaid/regular,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cBK" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBL" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cBM" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBN" = (
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBO" = (
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBP" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBQ" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBR" = (
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/light,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBS" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
+"cBT" = (
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cBU" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs,
+/area/crew_quarters/bar)
+"cBV" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"cBW" = (
+/obj/structure/sign/plaques/golden{
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"cBX" = (
+/obj/structure/chair/stool/bar,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"cBY" = (
+/obj/machinery/newscaster{
+ pixel_y = -28
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/carpet/green,
+/area/crew_quarters/bar)
+"cBZ" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cCa" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCb" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/sign/departments/security{
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cCc" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCd" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/sleeper{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel/white,
+/area/medical{
+ name = "Medical Booth"
+ })
+"cCe" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cCf" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/camera{
+ c_tag = "Central Maintenance - Fore";
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/central)
+"cCg" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCh" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cCi" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/virology/glass{
+ name = "Monkey Pen";
+ req_access_txt = "39"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCj" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCk" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cCl" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cCm" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCn" = (
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/hallway/primary/port/fore)
+"cCo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cCp" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/hallway/primary/port/fore)
+"cCq" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/hallway/primary/central)
+"cCr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cCs" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
+"cCt" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Chapel Confessions";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 23
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
+"cCu" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/medical/virology)
+"cCv" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cCw" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/medical/virology)
+"cCx" = (
+/obj/structure/chair/office/light,
+/obj/effect/landmark/start/virologist,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCy" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/caution,
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCz" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/virology/glass{
+ name = "Isolation Room B";
+ req_access_txt = "39"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cCA" = (
+/obj/machinery/computer/security/wooden_tv,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
+"cCB" = (
+/obj/machinery/light,
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/office)
+"cCC" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/chapel/main)
+"cCD" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cCE" = (
+/obj/machinery/portable_atmospherics/canister/water_vapor,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction/flip,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/janitor)
+"cCF" = (
+/obj/machinery/conveyor_switch/oneway{
+ id = "recycler";
+ name = "Recycler Conveyor Control"
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plating,
+/area/maintenance/disposal)
+"cCG" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cCH" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cCI" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cCJ" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"cCK" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/public/glass{
+ name = "Library Access"
+ },
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/library)
+"cCL" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cCM" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/disposalpipe/junction,
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=bridge1";
+ location = "router"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cCN" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs/left,
+/area/hallway/primary/central)
+"cCO" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/main)
+"cCP" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/landmark/start/depsec/engineering,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"cCQ" = (
+/obj/structure/bed,
+/obj/item/bedsheet/medical,
+/obj/machinery/light,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cCR" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cCS" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cCT" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/stairs/medium,
+/area/hallway/primary/aft)
+"cCU" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cCV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plating,
+/area/maintenance/department/security)
+"cCW" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"cCX" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/grimy,
+/area/crew_quarters/heads/hos)
+"cCY" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cCZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cDa" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cDb" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/clothing/glasses/science,
+/obj/item/pen,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cDc" = (
+/obj/structure/table,
+/obj/machinery/light,
+/obj/structure/bedsheetbin,
+/obj/item/clothing/glasses/hud/health,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cDd" = (
+/obj/structure/bed,
+/obj/item/bedsheet/medical,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cDe" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cDf" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/medical/virology)
+"cDg" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ id = "DeliveryConveyer"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cDh" = (
+/obj/structure/closet/secure_closet/engineering_chief,
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/heads/chief)
+"cDi" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/closet/crate/solarpanel_small,
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cDj" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/crew_quarters/heads/hor)
+"cDk" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/maintenance{
+ name = "Security Maintenance";
+ req_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/hallway/primary/port/fore)
+"cDl" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cDm" = (
+/obj/structure/plasticflaps,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "DeliveryConveyer"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cDn" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cDo" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/router/air)
+"cDp" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"cDq" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"cDr" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/security/courtroom)
+"cDs" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/sign/warning/securearea{
+ pixel_x = -32
+ },
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "applebush"
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/dark/side,
+/area/bridge)
+"cDt" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Captain's Quarters";
+ req_access_txt = "20"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/captain)
+"cDu" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/crew_quarters/heads/captain)
+"cDv" = (
+/obj/machinery/vending/wardrobe/cap_wardrobe,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"cDw" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"cDx" = (
+/obj/machinery/light_switch{
+ pixel_x = -4;
+ pixel_y = 24
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 6;
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet/blue,
+/area/crew_quarters/heads/captain)
+"cDy" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDz" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDA" = (
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDB" = (
+/obj/item/storage/secure/safe{
+ pixel_x = -24
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/dresser,
+/obj/item/storage/lockbox/medal,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDC" = (
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/obj/effect/landmark/start/captain,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDD" = (
+/obj/structure/bed,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -28
+ },
+/obj/item/bedsheet/captain,
+/obj/effect/landmark/start/captain,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDE" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDF" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDG" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/mob/living/simple_animal/pet/cat/space,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/captain)
+"cDH" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"cDI" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"cDJ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 4
+ },
+/area/gateway)
+"cDK" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command/glass{
+ name = "Gateway Chamber";
+ req_access_txt = "62"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"cDL" = (
+/obj/machinery/gateway{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"cDM" = (
+/obj/machinery/gateway/centerstation,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"cDN" = (
+/obj/machinery/gateway{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/gateway)
+"cDO" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cDP" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cDQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cDR" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cDS" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"cDT" = (
+/obj/structure/table,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/gateway)
+"cDU" = (
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"cDV" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/command{
+ name = "Gateway Atrium";
+ req_access_txt = "62"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/gateway)
+"cDW" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"cDX" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cDY" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"cDZ" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/crew_quarters/heads/hor)
+"cEa" = (
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"cEb" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/command{
+ name = "Research Director's Office";
+ req_access_txt = "30"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/crew_quarters/heads/hor)
+"cEc" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=1";
+ dir = 1;
+ freq = 1400;
+ location = "Bridge"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEd" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEe" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/start/scientist,
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEj" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEk" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research/glass{
+ name = "Research Sector";
+ req_one_access_txt = "29;47"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEl" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEm" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEn" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research/glass{
+ name = "Research Sector";
+ req_one_access_txt = "29;47"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEo" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEq" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEr" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEs" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEt" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEu" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEv" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEw" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research/glass{
+ name = "Research Sector";
+ req_one_access_txt = "29;47"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"cEx" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEy" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"cEz" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEA" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/disposalpipe/sorting/mail/flip{
+ dir = 1;
+ sortType = 24
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"cEC" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/science/lab)
+"cED" = (
+/obj/structure/chair/stool,
+/obj/effect/landmark/start/scientist,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/lab)
+"cEE" = (
+/obj/structure/table/reinforced,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/window/westleft{
+ name = "Science Desk";
+ req_access_txt = "29;47"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/lab)
+"cEF" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEG" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEI" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cEJ" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEK" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/lab)
+"cEL" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/science/lab)
+"cEM" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEN" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cEO" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/research{
+ name = "Chemistry Lab";
+ req_access_txt = "8; 33"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/medical/chemistry)
+"cEP" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cEQ" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cER" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medbay Locker Room";
+ req_access_txt = "5"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cES" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cET" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cEU" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medbay Locker Room";
+ req_access_txt = "5"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cEV" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cEW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/landmark/start/paramedic,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cEX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cEY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cEZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFa" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFe" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFf" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFg" = (
+/obj/machinery/light,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cFh" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFi" = (
+/obj/effect/landmark/start/paramedic,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFj" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFk" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFl" = (
+/obj/structure/closet/secure_closet/medical1,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFm" = (
+/obj/structure/closet/crate/freezer/blood,
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFn" = (
+/obj/structure/closet/l3closet,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFo" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFp" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFq" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFr" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFs" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/item/surgical_drapes,
+/obj/item/scalpel,
+/obj/item/circular_saw{
+ pixel_y = 16
+ },
+/obj/item/hemostat,
+/obj/item/retractor,
+/obj/item/surgicaldrill,
+/obj/item/cautery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFt" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay - Port";
+ dir = 4
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/medical/medbay/central";
+ dir = 8;
+ name = "Medbay APC";
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFu" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFv" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFw" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/door/window/westright{
+ name = "Treatment Center";
+ req_access_txt = "5"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFx" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFy" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFz" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/item/clothing/gloves/color/latex,
+/obj/item/clothing/suit/apron/surgical,
+/obj/item/clothing/mask/surgical,
+/obj/item/healthanalyzer,
+/obj/item/clothing/neck/stethoscope,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/zone2{
+ name = "Medbay Treatment Center"
+ })
+"cFA" = (
+/obj/structure/table,
+/obj/item/storage/box/beakers{
+ pixel_x = 5
+ },
+/obj/item/storage/box/syringes{
+ pixel_x = -4
+ },
+/obj/item/reagent_containers/dropper,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cFB" = (
+/obj/machinery/vending/snack/teal,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cFC" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/medical/medbay/central)
+"cFD" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFE" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/start/paramedic,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFF" = (
+/obj/effect/landmark/start/paramedic,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cFG" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cFH" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medbay Break Room";
+ req_access_txt = "5"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFI" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFK" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/carpet/blue,
+/area/medical/medbay/central)
+"cFL" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cFM" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cFN" = (
+/obj/structure/closet/secure_closet/medical1,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/cafeteria,
+/area/medical/medbay/central)
+"cFO" = (
+/obj/structure/closet/crate/medical,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFP" = (
+/obj/structure/table/wood,
+/obj/item/modular_computer/laptop/preset/civilian,
+/obj/item/reagent_containers/pill/patch/styptic,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/carpet/blue,
+/area/medical/medbay/central)
+"cFQ" = (
+/obj/structure/chair/office/light{
+ dir = 8
+ },
+/obj/effect/landmark/start/medical_doctor,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/carpet/blue,
+/area/medical/medbay/central)
+"cFR" = (
+/obj/structure/closet/crate/medical,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFS" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cFT" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/virology/glass{
+ name = "Virology Exterior Airlock";
+ req_access_txt = "39"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cFU" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cFV" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cFW" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cFX" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research/glass{
+ name = "Chemistry Lab";
+ req_access_txt = "33"
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
+"cFY" = (
+/turf/open/floor/plasteel,
+/area/router/air)
+"cFZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/obj/machinery/button/massdriver{
+ id = "airbridge_out";
+ pixel_x = -8;
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cGa" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "airbridge_off"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cGb" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "MedSci Router";
+ req_access_txt = "5"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cGc" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cGd" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/camera{
+ c_tag = "Medbay Locker Room";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cGe" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/light,
+/obj/item/reagent_containers/blood/OMinus{
+ pixel_x = 4;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/food/drinks/coffee{
+ pixel_x = 6
+ },
+/obj/item/storage/box/masks{
+ pixel_x = -4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_y = -30
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cGf" = (
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "airbridge_off"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cGg" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "airbridge_off"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cGh" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "airbridge_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cGi" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/effect/landmark/start/scientist,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGk" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGl" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGm" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGn" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGo" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGp" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGr" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/research/glass{
+ name = "Xenobiology Lab Access";
+ req_access_txt = "55"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGs" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cGt" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/start/scientist,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cGu" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/research{
+ name = "Research Sector"
+ })
+"cGv" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGw" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research{
+ name = "Xenobiology Lab";
+ req_access_txt = "8;55"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGx" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research{
+ name = "Experimentation Lab";
+ req_access_txt = "47"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cGy" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGz" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cGA" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGB" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGC" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGD" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGE" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cGF" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGG" = (
+/obj/structure/table,
+/obj/item/extinguisher,
+/obj/item/storage/toolbox/mechanical,
+/obj/item/wrench,
+/obj/item/clothing/mask/gas,
+/obj/item/extinguisher{
+ pixel_x = -7;
+ pixel_y = 3
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/science/storage";
+ dir = 4;
+ name = "Toxins Storage APC";
+ pixel_x = 24
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cGH" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/machinery/camera{
+ c_tag = "Toxins Lab - Storage";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cGI" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGJ" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGK" = (
+/obj/structure/window/reinforced{
+ dir = 4;
+ layer = 2.9
+ },
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGL" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/machinery/light/small,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGM" = (
+/obj/structure/tank_dispenser,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGN" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/science/storage)
+"cGO" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/science/storage)
+"cGP" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGQ" = (
+/obj/machinery/door/airlock/research{
+ name = "Plasma Canister Storage";
+ req_access_txt = "7;8"
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cGR" = (
+/obj/effect/landmark/start/scientist,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cGS" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cGT" = (
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "Station Intercom (Common)";
+ pixel_x = 28
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cGU" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/turf/open/floor/plating/airless,
+/area/science/storage)
+"cGV" = (
+/obj/machinery/portable_atmospherics/canister/toxins,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGW" = (
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plating,
+/area/science/storage)
+"cGX" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cGY" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cGZ" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 1
+ },
+/turf/open/floor/plating/airless,
+/area/science/storage)
+"cHa" = (
+/obj/machinery/portable_atmospherics/canister/toxins,
+/obj/structure/sign/warning/fire{
+ pixel_x = -32
+ },
+/obj/machinery/camera{
+ c_tag = "Toxins Lab - Plasma Storage";
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/science/storage)
+"cHb" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHc" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHd" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHe" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHf" = (
+/obj/structure/table/reinforced,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/stock_parts/cell/high/plus,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHg" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHh" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHi" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/circuit)
+"cHj" = (
+/obj/structure/table,
+/obj/item/storage/hypospraykit/toxin{
+ pixel_x = -5
+ },
+/obj/item/storage/hypospraykit/fire{
+ pixel_x = 5
+ },
+/obj/item/clothing/glasses/sunglasses,
+/obj/item/clothing/glasses/sunglasses,
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"cHk" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"cHl" = (
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"cHm" = (
+/obj/machinery/atmospherics/components/binary/pump,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"cHn" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/explab)
+"cHo" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHp" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHq" = (
+/obj/structure/closet/firecloset,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHr" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHs" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHt" = (
+/obj/structure/disposalpipe/junction,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHu" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHv" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/camera{
+ c_tag = "Research - Experimentation Hall";
+ dir = 8;
+ network = list("ss13","medbay")
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/science/explab)
+"cHw" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/sign/warning/biohazard{
+ pixel_x = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHx" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cHy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cHz" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cHA" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/research{
+ name = "Experimentation Lab";
+ req_access_txt = "47"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHB" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/effect/landmark/blobstart,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHC" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/power/apc{
+ areastring = "/area/science/explab";
+ dir = 4;
+ name = "Experimentation Lab APC";
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark/side{
+ dir = 8
+ },
+/area/science/explab)
+"cHD" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cHE" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cHF" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cHG" = (
+/obj/machinery/door/firedoor,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/research{
+ name = "Experimentation Lab";
+ req_access_txt = "47"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHH" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHI" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/explab)
+"cHJ" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/science/explab)
+"cHK" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cHL" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cHM" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cHN" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cHO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cHP" = (
+/obj/structure/chair/office/light{
+ dir = 1;
+ pixel_y = 3
+ },
+/obj/effect/landmark/start/geneticist,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cHQ" = (
+/obj/machinery/light,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cHR" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical{
+ name = "Morgue";
+ req_one_access_txt = "9;45"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"cHS" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Genetics Lab";
+ req_access_txt = "9"
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cHT" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/rust,
+/area/medical/morgue)
+"cHU" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cHV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/medical/genetics";
+ dir = 8;
+ name = "Genetics Lab APC";
+ pixel_x = -24
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cHW" = (
+/obj/machinery/rnd/production/circuit_imprinter,
+/obj/item/reagent_containers/glass/beaker,
+/obj/structure/sign/poster/official/state_laws{
+ pixel_y = 32
+ },
+/turf/open/floor/circuit,
+/area/science/robotics/lab)
+"cHX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cHY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/recharge_station,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cHZ" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ name = "Airbridge Router"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cIa" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cIb" = (
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/item/storage/firstaid/radbgone,
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_x = 28
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cIc" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cId" = (
+/obj/effect/landmark/xeno_spawn,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cIe" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cIf" = (
+/obj/structure/closet/crate/trashcart,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cIg" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cIh" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cIi" = (
+/obj/structure/window/reinforced/spawner,
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cIj" = (
+/obj/structure/chair,
+/obj/effect/landmark/start/geneticist,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cIk" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cIl" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple,
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cIm" = (
+/obj/structure/chair,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/landmark/start/geneticist,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cIn" = (
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/genetics)
+"cIo" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Genetics Lab Maintenance";
+ req_access_txt = "9"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/medical/genetics)
+"cIp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cIq" = (
+/obj/structure/window/reinforced/spawner,
+/obj/structure/window/reinforced/spawner/east,
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cIr" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -28;
+ pixel_y = -4
+ },
+/obj/machinery/light_switch{
+ pixel_x = -24;
+ pixel_y = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cIs" = (
+/obj/machinery/door/airlock/atmos{
+ name = "Atmospherics";
+ req_access_txt = "24"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cIt" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cIu" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cIv" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIw" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIx" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Aft Hall";
+ network = list("ss13","rd")
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIz" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIA" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIB" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIC" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cID" = (
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIE" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIF" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIG" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1;
+ light_color = "#cee5d2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIH" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cII" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIJ" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIK" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIM" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIN" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Engineering Sector"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIQ" = (
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIR" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIS" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIT" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIU" = (
+/obj/structure/disposalpipe/junction/flip{
+ dir = 8
+ },
+/obj/machinery/navbeacon{
+ codes_txt = "patrol;next_patrol=evac";
+ location = "eng1"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIV" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIW" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cIZ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cJa" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cJb" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cJc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cJd" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cJe" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cJf" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Unisex Restrooms"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"cJg" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"cJh" = (
+/obj/structure/table,
+/obj/structure/bedsheetbin/towel,
+/obj/machinery/camera{
+ c_tag = "Aft Restrooms";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"cJi" = (
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/obj/machinery/airalarm{
+ dir = 1;
+ locked = 0;
+ pixel_y = -22
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cJj" = (
+/obj/machinery/computer/security/mining,
+/obj/effect/turf_decal/tile/brown{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/airalarm{
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cJk" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cJl" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/camera{
+ c_tag = "Engine Room - Starboard Quarter";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJm" = (
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cJn" = (
+/obj/machinery/door/airlock/external{
+ name = "Atmospherics External Airlock";
+ req_access_txt = "24"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cJo" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/machinery/portable_atmospherics/pump,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/engine/atmos)
+"cJp" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJq" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
+/obj/machinery/suit_storage_unit/engine,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJr" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 5
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cJs" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cJt" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cJu" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/portable_atmospherics/canister,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cJv" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Engineering Router";
+ req_access_txt = "11"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJw" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJx" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{
+ dir = 1
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cJy" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/rnd/production/circuit_imprinter,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cJz" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "DeliveryConveyor"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
+"cJA" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJB" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/visible,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJC" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Gravity Generator";
+ req_access_txt = "11"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/firedoor/heavy,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cJD" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/power/terminal,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cJE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cJF" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cJG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/table,
+/obj/machinery/light/small,
+/obj/machinery/power/apc/highcap/five_k{
+ areastring = "/area/engine/gravity_generator";
+ dir = 4;
+ name = "Gravity Generator APC";
+ pixel_x = 26
+ },
+/obj/structure/cable{
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"cJH" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 1
+ },
+/obj/machinery/portable_atmospherics/canister,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cJI" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/gravity_generator)
+"cJJ" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cJK" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJL" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJM" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/landmark/start/atmospheric_technician,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cJN" = (
+/obj/machinery/light/small,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJO" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/engine/supermatter{
+ name = "Thermo-Electric Generator"
+ })
+"cJP" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/machinery/light/small,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJQ" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"cJR" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Canister Storage";
+ req_one_access_txt = "10;24"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/firedoor/heavy,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cJS" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cJT" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/corner,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cJU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cJV" = (
+/obj/structure/plasticflaps,
+/obj/machinery/door/poddoor{
+ id = "DeliveryDoor";
+ name = "Delivery Door"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "DeliveryConveyor"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cJW" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cJX" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cJY" = (
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"cJZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cKa" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cKb" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cKc" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Canister Storage";
+ req_access_txt = "10"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/storage{
+ name = "Canister Storage"
+ })
+"cKd" = (
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "DeliveryConveyor"
+ },
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"cKe" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/public/glass{
+ name = "Airbridge Router"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cKf" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cKg" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/machinery/vending/engivend,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cKh" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cKi" = (
+/obj/structure/sign/poster/official/space_cops{
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/dark,
+/area/science/robotics/lab)
+"cKj" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/door/window/northright{
+ name = "Medbay Desk";
+ req_access_txt = "5"
+ },
+/obj/item/clipboard,
+/obj/item/pen,
+/obj/item/clothing/glasses/hud/health,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cKk" = (
+/obj/structure/chair/office/light{
+ dir = 1;
+ pixel_y = 3
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/landmark/start/medical_doctor,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cKl" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/lobby)
+"cKm" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/stairs,
+/area/medical/medbay/central)
+"cKn" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cKo" = (
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 8;
+ sortType = 9
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cKp" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/medical/medbay/central)
+"cKq" = (
+/obj/machinery/light/small,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel/showroomfloor,
+/area/medical/morgue)
+"cKr" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cKs" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cKt" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cKu" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cKv" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/misc_lab{
+ name = "Research Observatory"
+ })
+"cKw" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
+"cKx" = (
+/obj/structure/grille,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating/airless,
+/area/science/xenobiology)
+"cKy" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
+"cKz" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cKA" = (
+/obj/machinery/atmospherics/components/binary/valve,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cKB" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cKC" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/science/xenobiology)
+"cKD" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cKE" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port/fore)
+"cKF" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/reagent_dispensers/fueltank,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cKG" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/closet/wardrobe/yellow,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cKH" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"cKI" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"cKJ" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"cKK" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"cKL" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"cKM" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"cKN" = (
+/obj/structure/table/reinforced,
+/obj/item/assembly/signaler{
+ pixel_x = -4
+ },
+/obj/item/assembly/signaler,
+/obj/item/assembly/signaler{
+ pixel_y = 8
+ },
+/obj/item/assembly/signaler{
+ pixel_x = 8;
+ pixel_y = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/mixing)
+"cKO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/structure/sign/departments/restroom{
+ pixel_y = -32
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cKP" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/structure/sign/departments/custodian{
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cKQ" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output,
+/turf/open/floor/engine/vacuum,
+/area/engine/atmos)
+"cKR" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input,
+/turf/open/floor/engine/n2o,
+/area/engine/atmos)
+"cKS" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output,
+/turf/open/floor/engine/n2o,
+/area/engine/atmos)
+"cKT" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input,
+/turf/open/floor/engine/plasma,
+/area/engine/atmos)
+"cKU" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output,
+/turf/open/floor/engine/plasma,
+/area/engine/atmos)
+"cKV" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input,
+/turf/open/floor/engine/co2,
+/area/engine/atmos)
+"cKW" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output,
+/turf/open/floor/engine/co2,
+/area/engine/atmos)
+"cKX" = (
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cKY" = (
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cKZ" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cLa" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cLb" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cLc" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cLd" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLe" = (
+/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/engine/atmos)
+"cLf" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/engine/atmos)
+"cLg" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 29
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLh" = (
+/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLi" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLj" = (
+/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/engine/atmos)
+"cLk" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 0;
+ name = "CO2 Outlet Pump"
+ },
+/turf/open/floor/plasteel/dark/side{
+ dir = 1
+ },
+/area/engine/atmos)
+"cLl" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLm" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cLn" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/closet/secure_closet/engineering_personal,
+/obj/item/clothing/under/overalls,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cLo" = (
+/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLp" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLq" = (
+/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLr" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/effect/landmark/start/station_engineer,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cLs" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLt" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input{
+ dir = 1
+ },
+/turf/open/floor/engine/n2,
+/area/engine/atmos)
+"cLu" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output{
+ dir = 1
+ },
+/turf/open/floor/engine/n2,
+/area/engine/atmos)
+"cLv" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input{
+ dir = 1
+ },
+/turf/open/floor/engine/o2,
+/area/engine/atmos)
+"cLw" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output{
+ dir = 1
+ },
+/turf/open/floor/engine/o2,
+/area/engine/atmos)
+"cLx" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{
+ dir = 1
+ },
+/turf/open/floor/engine/air,
+/area/engine/atmos)
+"cLy" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{
+ dir = 1
+ },
+/turf/open/floor/engine/air,
+/area/engine/atmos)
+"cLz" = (
+/obj/effect/turf_decal/bot,
+/obj/structure/closet/secure_closet/engineering_personal,
+/obj/item/clothing/under/overalls,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cLA" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Virology - Starboard";
+ dir = 8;
+ pixel_y = -22
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/medical/virology";
+ dir = 4;
+ name = "Virology Lab APC";
+ pixel_x = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cLB" = (
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/router/air)
+"cLC" = (
+/obj/structure/bed,
+/obj/item/bedsheet/medical,
+/obj/machinery/camera{
+ c_tag = "Virology - Port";
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cLD" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cLE" = (
+/obj/structure/closet/crate/medical,
+/turf/open/floor/plasteel,
+/area/router/air)
+"cLF" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cLG" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cLH" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cLI" = (
+/obj/structure/chair/office/light,
+/obj/effect/landmark/start/virologist,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cLJ" = (
+/obj/structure/table,
+/obj/item/stack/packageWrap,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/item/wirecutters,
+/turf/open/floor/plasteel,
+/area/router/air)
+"cLK" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/conveyor{
+ id = "airbridge_off"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cLL" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cLM" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cLN" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 11
+ },
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cLO" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "airbridge_off"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cLP" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/item/storage/box/syringes,
+/obj/item/hand_labeler,
+/obj/item/radio/headset/headset_med,
+/obj/structure/sign/warning/biohazard{
+ pixel_x = 32
+ },
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1485;
+ listening = 0;
+ name = "Station Intercom (Medical)";
+ pixel_y = -30
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cLQ" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "airbridge_off"
+ },
+/obj/machinery/door/poddoor{
+ name = "Airbridge Router"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cLR" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/mass_driver{
+ dir = 8;
+ id = "workshop_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cLS" = (
+/obj/machinery/light,
+/obj/effect/landmark/xeno_spawn,
+/turf/open/floor/plasteel/freezer,
+/area/medical/virology)
+"cLT" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/medical/virology)
+"cLU" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 1;
+ frequency = 1441;
+ id = "inc_in"
+ },
+/turf/open/floor/plating/airless,
+/area/medical/virology)
+"cLV" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLW" = (
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cLX" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
+"cLY" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output{
+ dir = 4
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cLZ" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
+"cMa" = (
+/obj/machinery/light/small{
+ dir = 1;
+ light_color = "#ffc1c1"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 4
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cMb" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cMc" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMd" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 4;
+ name = "N2 to Airmix"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMe" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMf" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/tcommsat/computer)
+"cMg" = (
+/obj/machinery/atmospherics/components/trinary/mixer/airmix{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMh" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMi" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/structure/closet/firecloset,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMj" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{
+ dir = 1
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cMk" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/dark/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMl" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMm" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMn" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "N2 to Pure"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMo" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMp" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"cMq" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMr" = (
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMs" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMt" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{
+ dir = 4
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cMu" = (
+/obj/machinery/light/small,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8
+ },
+/turf/open/floor/engine/vacuum,
+/area/maintenance/disposal/incinerator)
+"cMv" = (
+/obj/machinery/button/door/incinerator_vent_atmos_main{
+ pixel_x = -24;
+ pixel_y = 8
+ },
+/obj/machinery/button/door/incinerator_vent_atmos_aux{
+ pixel_x = -40;
+ pixel_y = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMw" = (
+/obj/machinery/atmospherics/components/binary/valve/digital{
+ name = "Waste Release"
+ },
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMx" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 5
+ },
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_y = -30
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMy" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1;
+ name = "Nitrogen Outlet"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMz" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/light,
+/obj/machinery/camera{
+ c_tag = "Atmospherics - Starboard Aft";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMA" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMB" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1;
+ name = "O2 to Airmix"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMC" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "O2 to Pure"
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cMD" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/engine/atmos)
+"cME" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/engine/atmos)
+"cMF" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "Air to Pure"
+ },
+/turf/open/floor/plasteel/white/corner,
+/area/engine/atmos)
+"cMG" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
+"cMH" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cMI" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 9
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cMJ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cMK" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/tcommsat/computer)
+"cML" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cMM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cMN" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cMO" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"cMP" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/engine/atmos)
+"cMQ" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cMR" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 9
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"cMS" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"cMT" = (
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"cMU" = (
+/obj/structure/window/reinforced/spawner/north,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cMV" = (
+/obj/machinery/conveyor{
+ dir = 10;
+ id = "workshop_off"
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cMW" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/vending/tool,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cMX" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/table,
+/obj/item/storage/box/lights/mixed,
+/obj/item/multitool{
+ pixel_x = 5;
+ pixel_y = 3
+ },
+/obj/item/multitool{
+ pixel_x = 5;
+ pixel_y = 3
+ },
+/obj/item/multitool,
+/obj/item/multitool,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cMY" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/table,
+/obj/machinery/camera{
+ c_tag = "Engineering - Workshop";
+ dir = 1
+ },
+/obj/item/clothing/gloves/color/yellow,
+/obj/item/t_scanner,
+/obj/item/t_scanner,
+/obj/item/t_scanner,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cMZ" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNa" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/chair,
+/obj/effect/landmark/start/station_engineer,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNb" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/chair,
+/obj/effect/landmark/start/station_engineer,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNc" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/table,
+/obj/item/storage/toolbox/electrical,
+/obj/item/stack/cable_coil/red,
+/obj/item/stack/cable_coil/red,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNd" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/closet/crate/engineering,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNe" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/disposalpipe/segment,
+/obj/item/radio/intercom{
+ name = "Station Intercom (Common)";
+ pixel_y = -29
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNf" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNg" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/vending/assist,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNh" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/airlock/public/glass{
+ name = "Airbridge Router"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cNi" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cNj" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cNk" = (
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel,
+/area/router/air)
+"cNl" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/router/air)
+"cNm" = (
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "airbridge_off"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cNn" = (
+/obj/machinery/conveyor{
+ dir = 10;
+ id = "airbridge_off"
+ },
+/turf/open/floor/plating,
+/area/router/air)
+"cNo" = (
+/turf/closed/wall/rust,
+/area/engine/workshop)
+"cNp" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/window/southleft{
+ name = "Workshop Desk";
+ req_access_txt = "11"
+ },
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNq" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/window/southright{
+ name = "Workshop Desk";
+ req_access_txt = "11"
+ },
+/obj/item/folder/yellow,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNr" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
+/turf/open/floor/plating,
+/area/engine/workshop)
+"cNs" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/engine/workshop)
+"cNt" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/engine/workshop)
+"cNu" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 4
+ },
+/obj/machinery/door/airlock/engineering{
+ name = "Engineering Workshop";
+ req_access_txt = "11"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/workshop)
+"cNv" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 9
+ },
+/turf/closed/wall,
+/area/engine/workshop)
+"cNw" = (
+/turf/closed/wall/r_wall,
+/area/router/air)
+"cNx" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hallway/primary/aft)
+"cNy" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/miningdock/airless)
+"cNz" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/miningdock/airless)
+"cNA" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
+"cNB" = (
+/turf/open/floor/plating,
+/area/quartermaster/miningdock/airless)
+"cNC" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/freezer,
+/area/crew_quarters/toilet/restrooms)
+"cND" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"cNE" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/warning/electricshock{
+ pixel_y = 32
+ },
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNF" = (
+/obj/item/shovel,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNH" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/warning/electricshock{
+ pixel_y = 32
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNI" = (
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cNJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cNK" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 4
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/engine/teg_hot)
+"cNL" = (
+/obj/machinery/atmospherics/components/unary/outlet_injector/on{
+ dir = 8
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/engine/teg_cold)
+"cNM" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/item/circuitboard/machine,
+/obj/item/circuitboard/machine,
+/obj/item/circuitboard/machine,
+/obj/item/circuitboard/machine,
+/obj/item/wallframe/camera,
+/obj/item/wallframe/camera,
+/obj/item/wallframe/camera,
+/obj/item/wallframe/camera,
+/obj/item/stack/cable_coil,
+/obj/item/stack/cable_coil,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNN" = (
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNO" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNP" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/frame/computer{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/miningdock/airless)
+"cNQ" = (
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES"
+ },
+/turf/closed/wall/r_wall,
+/area/router/aux)
+"cNR" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNS" = (
+/obj/machinery/power/apc{
+ name = "Mining Dock APC";
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNT" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light_switch{
+ pixel_y = -24
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNU" = (
+/obj/structure/table,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stack/sheet/plasteel/fifty,
+/turf/open/floor/plating,
+/area/quartermaster/miningdock/airless)
+"cNV" = (
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/science/robotics/lab)
+"cNW" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/camera{
+ c_tag = "Supply - Mining Exterior";
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cNX" = (
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cNY" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/external/glass{
+ name = "Refinery";
+ req_access_txt = "48"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cNZ" = (
+/obj/machinery/door/airlock/external/glass{
+ name = "Refinery";
+ req_access_txt = "48"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningdock/airless)
+"cOa" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 9
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cOb" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOc" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/camera{
+ c_tag = "Supply - Refinery Exterior";
+ pixel_x = 22
+ },
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOd" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/medical/medbay/lobby)
+"cOe" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"cOf" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOg" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOh" = (
+/obj/structure/lattice,
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOi" = (
+/obj/machinery/conveyor_switch{
+ id = "MiningConveyer"
+ },
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOj" = (
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOk" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/closet/toolcloset,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOl" = (
+/turf/closed/wall/r_wall,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOm" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "MiningConveyer"
+ },
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOn" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOo" = (
+/obj/structure/table,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOp" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOq" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"cOr" = (
+/obj/machinery/light/small,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOs" = (
+/obj/structure/closet/crate,
+/obj/item/stack/sheet/glass/fifty,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOt" = (
+/obj/structure/closet/crate,
+/obj/item/stack/rods/fifty,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOu" = (
+/obj/structure/closet/crate,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/metal/fifty,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOv" = (
+/obj/item/storage/toolbox/emergency,
+/obj/structure/table,
+/turf/open/floor/plating/airless,
+/area/quartermaster/miningdock/airless/no_grav)
+"cOw" = (
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit)
+"cOx" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/router/medsci";
+ dir = 1;
+ name = "MedSci Router APC";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/router/medsci)
+"cOy" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/router/medsci)
+"cOz" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/router/medsci)
+"cOA" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/router/medsci)
+"cOB" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/router/medsci)
+"cOC" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/light_switch{
+ pixel_x = 24
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/router/medsci)
+"cOD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 1
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cOE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/router/medsci)
+"cOF" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/router/medsci)
+"cOG" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel,
+/area/router/medsci)
+"cOH" = (
+/obj/machinery/computer/cargo/request{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/router/medsci)
+"cOI" = (
+/turf/closed/wall/r_wall,
+/area/router/medsci)
+"cOJ" = (
+/obj/machinery/conveyor{
+ id = "medsci_off"
+ },
+/turf/open/floor/plating,
+/area/router/medsci)
+"cOK" = (
+/obj/structure/table/reinforced,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
+/obj/item/destTagger,
+/obj/machinery/light,
+/obj/machinery/button/massdriver{
+ id = "medsci_out";
+ pixel_x = -8;
+ pixel_y = 8
+ },
+/obj/machinery/requests_console{
+ department = "MedSci Router";
+ name = "MedSci Router RC";
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/router/medsci)
+"cOL" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "medsci_off"
+ },
+/turf/open/floor/plating,
+/area/router/medsci)
+"cOM" = (
+/turf/closed/wall/r_wall,
+/area/janitor/aux)
+"cON" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock{
+ name = "Auxiliary Custodial Closet";
+ req_access_txt = "12"
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plating,
+/area/janitor/aux)
+"cOO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/janitor/aux)
+"cOP" = (
+/obj/machinery/mass_driver{
+ id = "medsci_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating,
+/area/router/medsci)
+"cOQ" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/janitor/aux";
+ dir = 1;
+ name = "Auxiliary Custodial Closet APC";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cOR" = (
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cOS" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/item/storage/box/lights/mixed,
+/obj/item/light/tube,
+/obj/item/radio/off,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cOT" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ name = "MedSci Router"
+ },
+/turf/open/floor/plating,
+/area/router/medsci)
+"cOU" = (
+/obj/structure/plasticflaps,
+/obj/structure/fans/tiny,
+/obj/machinery/door/poddoor{
+ name = "MedSci Router"
+ },
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "medsci_off"
+ },
+/turf/open/floor/plating,
+/area/router/medsci)
+"cOV" = (
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/item/storage/box/mousetraps,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/mop,
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cOW" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cOX" = (
+/obj/structure/table,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/item/modular_computer/laptop/preset/civilian,
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cOY" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/janitor/aux)
+"cOZ" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera{
+ c_tag = "Custodial Closet - Auxiliary";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cPa" = (
+/obj/structure/mopbucket,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cPb" = (
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/tile/purple,
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/janitor/aux)
+"cPc" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/white,
+/area/medical/virology)
+"cPd" = (
+/obj/machinery/conveyor{
+ id = "sq_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPe" = (
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "sq_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPf" = (
+/obj/machinery/conveyor/auto,
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPg" = (
+/obj/machinery/mass_driver{
+ dir = 1;
+ id = "medsci_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPh" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "sq_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPi" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "viro_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPj" = (
+/obj/machinery/conveyor{
+ dir = 9;
+ id = "viro_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPk" = (
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "viro_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPl" = (
+/obj/machinery/mass_driver{
+ dir = 8;
+ id = "viro_in";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPm" = (
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "sq_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPn" = (
+/obj/machinery/conveyor{
+ dir = 10;
+ id = "sq_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPo" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "viro_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPp" = (
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "viro_out";
+ name = "Router Driver"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPq" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "sq_off"
+ },
+/turf/open/floor/plating/airless,
+/area/router/aux)
+"cPr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/hydroponics/lobby)
+"cPs" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/bridge)
+"cPt" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel/dark,
+/area/security/checkpoint/customs)
+"cPu" = (
+/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden,
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plasteel,
+/area/engine/break_room)
+"cPv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/landmark/event_spawn,
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"cPw" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/structure/sign/poster/contraband/kss13{
+ pixel_y = -32
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/science{
+ name = "Research Maintenance"
+ })
+"cPx" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/sign/poster/official/medical_green_cross{
+ pixel_y = 32
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
+"cPy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/obj/structure/sign/poster/contraband/lusty_xenomorph{
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/aft)
+"cVq" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"cVO" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"dpO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"dVR" = (
+/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"eCy" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 9
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -27
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"eIh" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 0;
+ name = "N2O Outlet Pump"
+ },
+/turf/open/floor/plasteel/white/corner{
+ dir = 1
+ },
+/area/engine/atmos)
+"eKM" = (
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_y = -30
+ },
+/obj/machinery/atmospherics/pipe/manifold/supplymain/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"eTZ" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"eUF" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 9
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"fgS" = (
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 0;
+ name = "Plasma Outlet Pump"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"fkx" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"frb" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"fti" = (
+/obj/machinery/atmospherics/components/binary/pump,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"fui" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space)
+"fuE" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 10
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"fuR" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
+/obj/item/radio/intercom{
+ name = "Station Intercom (General)";
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel,
+/area/science/mixing)
+"fIw" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"guK" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/space/basic,
+/area/space)
+"gDY" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Fuel Pipe to Incinerator"
+ },
+/obj/machinery/light,
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"gGG" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"hcR" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/bridge)
+"hiV" = (
+/obj/effect/turf_decal/tile/yellow{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/yellow{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"hlo" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"hlV" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"hDz" = (
+/obj/machinery/space_heater,
+/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"hKC" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"hMZ" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "Pure to Port"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"hXk" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"ifC" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/manifold/orange/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"iAW" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"iQY" = (
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 4
+ },
+/obj/structure/closet/firecloset,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"jiZ" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 5
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"jml" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ layer = 2.4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"jon" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"jyu" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"jMO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 8
+ },
+/turf/closed/wall/r_wall,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"jXo" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 10
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"kxw" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/turf/open/space/basic,
+/area/space)
+"kxL" = (
+/obj/structure/lattice,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"kzb" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/bridge)
+"kOG" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "Mix to Engine"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"lcD" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "Air to Port"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"lRy" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"mkx" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"mqB" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"mxW" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 9
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"mEa" = (
+/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"mIT" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"mKP" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/tcommsat/computer)
+"mNN" = (
+/obj/machinery/space_heater,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"ntC" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ name = "Port to Fuel Pipe"
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"nvn" = (
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"nAF" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ name = "Mix to Port"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"nBM" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"nEX" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"nLV" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/green/visible,
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"ony" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"opd" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"oMB" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"pgu" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/orange/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"prx" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"qeq" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"qgO" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"qlJ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"qnM" = (
+/obj/structure/lattice,
+/obj/structure/sign/warning{
+ name = "\improper KEEP CLEAR: HIGH SPEED DELIVERIES";
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"qvB" = (
+/obj/machinery/atmospherics/components/unary/thermomachine/heater{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"qHL" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/manifold/yellow/visible{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"qWY" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ name = "Waste In"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"rbJ" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/space/basic,
+/area/space/nearstation)
+"rdF" = (
+/obj/machinery/atmospherics/pipe/simple/dark/visible{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"rTW" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 6
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"rUl" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"sdp" = (
+/obj/structure/reagent_dispensers/foamtank,
+/turf/open/floor/engine,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"sHB" = (
+/obj/machinery/atmospherics/pipe/manifold/orange/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"sRD" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"sVC" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"tjb" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+ dir = 9
+ },
+/obj/machinery/meter,
+/turf/open/floor/plating,
+/area/engine/engineering{
+ name = "Engine Room"
+ })
+"tpQ" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/turf/open/space/basic,
+/area/space/nearstation)
+"tuF" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 6
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"tyI" = (
+/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"tXV" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ layer = 2.4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"tZj" = (
+/obj/structure/tank_dispenser{
+ pixel_x = -1
+ },
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"tZC" = (
+/obj/machinery/atmospherics/pipe/manifold4w/orange/visible,
+/obj/machinery/meter,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"urj" = (
+/obj/machinery/atmospherics/pipe/simple/general/hidden{
+ dir = 8;
+ icon_state = "intact"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/bridge)
+"uwK" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/secure_construction{
+ name = "Engineering Construction Area"
+ })
+"uAY" = (
+/obj/structure/table,
+/obj/item/storage/belt/utility,
+/obj/item/t_scanner,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"uVD" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"vcb" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"vsO" = (
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"vxU" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 27
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"wbu" = (
+/obj/machinery/atmospherics/pipe/simple/violet/visible,
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"wPS" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 9
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"wWH" = (
+/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"xcO" = (
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/green/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 0;
+ name = "Mix Outlet Pump"
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"xjk" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"xkC" = (
+/obj/machinery/atmospherics/pipe/simple/orange/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"xoj" = (
+/obj/structure/table,
+/obj/item/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/obj/item/pen,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"xqa" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/violet/visible{
+ dir = 5
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
+"xCy" = (
+/obj/machinery/atmospherics/components/binary/pump,
+/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"xKr" = (
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/orange/hidden,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+
+(1,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(2,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(3,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(4,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(5,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(6,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(7,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(8,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(9,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(10,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(11,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(12,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(13,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(14,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(15,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(16,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(17,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(18,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(19,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(20,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(21,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(22,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(23,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaw
+aaf
+aaw
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(24,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaf
+aaw
+bHZ
+aaw
+aaf
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(25,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaw
+aaw
+acp
+bJM
+acp
+aaw
+aaw
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(26,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaf
+aaf
+acp
+bef
+crG
+crK
+acp
+aaf
+aaf
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(27,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaw
+acp
+acp
+beh
+acp
+crL
+acp
+acp
+aaw
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(28,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaf
+aaf
+acp
+bFr
+crH
+crM
+acp
+aaf
+aaf
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(29,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaw
+aaw
+acp
+acp
+acp
+aaw
+aaw
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(30,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaf
+aaw
+crG
+aaw
+aaf
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(31,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaw
+crH
+aaw
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(32,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(33,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(34,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(35,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(36,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(37,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+cpC
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(38,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(39,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(40,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(41,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(42,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(43,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+crB
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(44,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aye
+aEf
+akI
+akI
+akI
+akI
+akI
+akI
+akI
+akI
+akI
+akI
+akI
+akI
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+crE
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(45,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aye
+aaU
+akI
+adp
+ajt
+chi
+arW
+aHo
+buV
+bxu
+akI
+bxB
+bxQ
+bxZ
+byb
+byi
+byn
+byp
+byB
+byG
+byL
+byB
+clI
+byn
+clP
+byi
+aaa
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(46,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aye
+aaa
+akI
+adZ
+chh
+cMf
+axF
+aIM
+mKP
+crz
+cMf
+bxE
+bxW
+bya
+byb
+byk
+byn
+byq
+byn
+byH
+clD
+byn
+clJ
+byn
+clQ
+byi
+aaU
+aye
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(47,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aye
+aaa
+akI
+ajZ
+anx
+akJ
+aAI
+aMx
+cnn
+bxx
+bxD
+bxI
+bxJ
+byb
+byb
+byb
+byn
+byx
+byn
+byn
+byn
+byn
+clK
+byn
+clR
+byi
+aaa
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(48,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aye
+aaa
+akI
+ahh
+aCf
+akI
+aAJ
+cMp
+aYa
+bxm
+akI
+aNC
+bxv
+byf
+byj
+byl
+byn
+byn
+byn
+byI
+clE
+byn
+byn
+byn
+crD
+byi
+aaa
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(49,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aye
+aaU
+akI
+ajn
+aLH
+akI
+aAK
+aRC
+bxn
+akI
+bxA
+hiV
+cvI
+byb
+byb
+byb
+byn
+byy
+byn
+byn
+byn
+byn
+clL
+byn
+clS
+byi
+aaa
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(50,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aye
+cep
+akI
+akI
+akI
+akI
+aGa
+cMK
+bxo
+akI
+akI
+bbk
+bxX
+byg
+byb
+bym
+byn
+byz
+byn
+byJ
+clF
+byn
+clM
+byn
+clT
+byi
+aaU
+aye
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(51,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aEa
+cMK
+bxq
+bxC
+akI
+bxK
+bxY
+byh
+byb
+byi
+byn
+byA
+byC
+byK
+clG
+byC
+clN
+byn
+clU
+byi
+aaa
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(52,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aEa
+cMK
+bxt
+akI
+akI
+akI
+akI
+akI
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+byi
+crF
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(53,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aEa
+aTH
+bab
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+crC
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(54,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aEb
+bRD
+aaU
+aaU
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(55,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(56,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+agL
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(57,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aiq
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(58,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aiq
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cpC
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(59,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaL
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaL
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(60,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+cpC
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(61,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(62,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEb
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(63,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+cpC
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(64,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bxT
+bxT
+bFl
+bxT
+bFl
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bAb
+cKw
+cli
+bxT
+bxT
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(65,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+cpC
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bxT
+bFj
+bHS
+bSj
+bJr
+bFj
+bxT
+bKE
+caV
+bKM
+bxT
+bKE
+clf
+bKM
+bxT
+bKE
+ctL
+bKM
+bxT
+ctQ
+cKx
+clj
+clk
+clj
+clm
+cln
+cln
+cln
+clp
+clq
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(66,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+cpC
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bxT
+bFk
+bHS
+bIE
+bJr
+bFk
+bxT
+bKF
+bLd
+bKM
+bxT
+bKF
+bLd
+bKM
+bxT
+bKF
+bKM
+bKM
+bxT
+bxT
+cKy
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+clr
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(67,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bxT
+bFl
+bFl
+bZz
+bFl
+bFl
+bxT
+bKF
+bKM
+bKM
+bxT
+bKF
+bKM
+bKM
+bxT
+bKF
+bKM
+bKM
+bxT
+bOs
+cKz
+bOG
+bOP
+bxT
+bOW
+bOZ
+bPc
+bPe
+bxT
+cls
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(68,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaK
+aaM
+abi
+aaa
+aaa
+aaU
+aEa
+bRD
+aaU
+aaU
+aaa
+aaU
+aGn
+aGn
+aGn
+aGn
+aGn
+aGn
+aGn
+aGn
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bxT
+bFm
+bHT
+bFt
+bJs
+bJV
+bxT
+bKG
+bLe
+bFl
+bxT
+bKG
+bLe
+bFl
+bxT
+bKG
+bLe
+bFl
+bxT
+cvz
+cKA
+bOH
+bFl
+bxT
+bKM
+bKM
+bKM
+bKM
+bxT
+cls
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(69,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bOc
+aaU
+aaU
+aaU
+aaU
+bOc
+aaU
+aaU
+aaU
+aaU
+bOc
+aaU
+aaU
+aaU
+aaU
+aEa
+bRD
+aaU
+aaU
+aGn
+aGn
+aGn
+aIA
+aJe
+aLE
+aLy
+aMQ
+aNF
+aGn
+aGn
+aGn
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bbv
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bxT
+cnb
+bHU
+bOF
+bJt
+bJW
+bxT
+cbo
+bLf
+cjZ
+bxT
+cbo
+bLf
+cjZ
+bxT
+cbo
+bLf
+cjZ
+bxT
+ctT
+cKB
+bOI
+bOQ
+bOT
+bKM
+bKM
+bKM
+bPf
+bxT
+cls
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(70,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bOf
+ciA
+ciA
+ciA
+ciA
+cnG
+cnH
+aaL
+cnI
+ciA
+cnJ
+abh
+abh
+abh
+abh
+aEb
+bRD
+aaU
+aaU
+aGn
+aHD
+aIg
+aHF
+aJn
+aHF
+aHF
+aJn
+aHF
+aPp
+aPT
+aGn
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+bxT
+bFo
+bHV
+bYz
+cbi
+cbp
+cbA
+cbH
+cjP
+cjP
+ckg
+cjP
+cjP
+cjP
+ckg
+cjP
+ckY
+cjP
+cjP
+ctR
+cKC
+bOJ
+bFl
+bKM
+bKM
+bKM
+bKM
+bPg
+bxT
+cls
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(71,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abx
+aoH
+abx
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aEa
+bRD
+aaU
+aGn
+aGn
+aHE
+aHF
+aHF
+aIE
+aIE
+aIE
+aIE
+csD
+aHF
+aPU
+aGq
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaU
+aaU
+bcy
+cnU
+cnU
+cnU
+bZW
+aaU
+aaU
+aaU
+cbb
+cbb
+cbb
+cbb
+cbb
+cbb
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+bxT
+cdD
+bHW
+bIG
+csl
+bzy
+bKp
+bKJ
+bLh
+bLh
+bLh
+bLh
+bMh
+bLh
+bLh
+bLh
+ckZ
+bLh
+cbF
+cnl
+cla
+bOK
+bOR
+bKM
+bKM
+bPa
+bKM
+cun
+bxT
+cls
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(72,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aju
+aoP
+aqM
+aaU
+aaU
+aaa
+aaa
+aaa
+aGq
+aDn
+aLK
+aGq
+aGq
+aKH
+aHF
+aHF
+aIE
+aJu
+aKA
+aZT
+aMX
+aIE
+aHF
+aPV
+aQW
+aSJ
+aSJ
+aQW
+aSJ
+aQW
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bcw
+aUZ
+bcw
+aaU
+bcy
+bdc
+byc
+bdc
+bcy
+bYG
+bYG
+bYG
+cbb
+cbg
+chT
+cpD
+cGH
+cbb
+aaa
+aaa
+aaa
+aaU
+aaa
+bAb
+bxT
+bFq
+bHY
+bIH
+cGA
+bJX
+bKq
+bKK
+bLi
+bLi
+bLF
+bLi
+bMi
+bLi
+bLF
+bLi
+bLi
+bLi
+cvV
+ckS
+cla
+bOL
+bFl
+bKM
+bKM
+bKM
+bKM
+bPi
+bxT
+cls
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(73,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abx
+aqw
+aoW
+aqw
+aqw
+aaU
+aaa
+aaa
+aaa
+aGq
+aEe
+aUz
+bDP
+aGq
+aGL
+aHF
+aHF
+aIH
+aJz
+aKE
+aLI
+aMX
+aIE
+aHF
+aPW
+aQW
+cDv
+cjQ
+cDB
+cDD
+aQW
+aQW
+aSJ
+aSJ
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+bcw
+bde
+bcw
+cmT
+bcy
+bfp
+cwY
+bOD
+bcy
+bwK
+bAz
+bAN
+cGN
+cbg
+chV
+crn
+cGI
+cGN
+aaU
+aaU
+aaU
+aaU
+aaU
+bAf
+bxT
+crN
+crO
+bII
+cGB
+bFw
+bxT
+cjG
+bLj
+ckN
+bxT
+cjG
+bLj
+ckN
+bxT
+cjG
+bLj
+ckN
+bxT
+bOy
+cla
+bOM
+bOS
+bOU
+bKM
+bKM
+bKM
+bPj
+bxT
+cls
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(74,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abx
+akg
+apS
+arr
+abx
+aaU
+aaa
+aaa
+aaa
+aGq
+aXj
+aZq
+bDQ
+hcR
+aGM
+aHF
+aHF
+aII
+aJu
+aKG
+aRe
+aXS
+bbb
+aHF
+aHF
+aQW
+baP
+aTo
+cjQ
+cDE
+aVP
+cpt
+aWw
+aSJ
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bcw
+bee
+bcw
+crI
+bcy
+bfo
+blG
+bfo
+bcy
+bwM
+bAz
+bAN
+bKH
+cbh
+clc
+csR
+cGJ
+cGO
+cGU
+cGZ
+cbb
+bxT
+bxT
+bAg
+bBJ
+bFs
+bIa
+bIJ
+cGC
+bXO
+bxT
+bFl
+bLk
+bKG
+bxT
+bFl
+bLk
+bKG
+bxT
+bFl
+bLk
+bKG
+bxT
+ctU
+ckX
+bON
+bFl
+bxT
+bKM
+bKM
+bKM
+bKM
+bxT
+cls
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(75,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aiN
+akj
+anV
+asl
+abx
+aaU
+aaU
+aaU
+aaU
+aGq
+aFE
+bdz
+bDR
+aKF
+aLm
+aMi
+aMi
+aQh
+aQN
+aRa
+aRl
+aXT
+bbc
+bbD
+bik
+cDt
+cDw
+cDy
+cps
+cDF
+bRb
+bRc
+aWx
+aSJ
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bcy
+bdf
+bdf
+crJ
+blT
+bqJ
+bBN
+bKI
+bOr
+bnl
+bdc
+bfn
+cbb
+cbn
+cmK
+cnO
+cGK
+cbb
+cbb
+cbb
+cbb
+bJZ
+cby
+bMx
+bxT
+bFt
+bIb
+csY
+cGD
+bZD
+bxT
+bKM
+bKM
+bKF
+bxT
+bKM
+bKM
+bKF
+bxT
+bKM
+bKM
+bKF
+bxT
+bOA
+clb
+bOG
+bOP
+bxT
+bOX
+bPb
+bPd
+bPk
+bxT
+cls
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(76,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aiN
+akz
+aDO
+asH
+awm
+axc
+awm
+ayJ
+aqw
+aGq
+aJL
+aUR
+bEc
+kzb
+aGW
+aHI
+aIL
+aKv
+aGn
+aKK
+aLQ
+aGn
+bbd
+bbG
+bit
+cDu
+cDx
+cDz
+cDC
+cDG
+aVR
+bBj
+aWy
+aSJ
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bcy
+bdt
+ctj
+bUF
+bOv
+bfo
+blI
+bfo
+bWS
+bfo
+bAF
+bfo
+bcy
+cbu
+cnz
+cGF
+cGL
+cGP
+cGV
+cHa
+cbb
+bxV
+cOq
+cGv
+cGw
+cGy
+cGy
+cGy
+cGE
+bKb
+bxT
+bKM
+bKM
+bKF
+bxT
+bKM
+bLd
+bKF
+bxT
+bKM
+cnD
+bKF
+bxT
+cue
+cvX
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+clr
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(77,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aiN
+akB
+aDT
+atv
+awo
+atv
+axp
+atv
+azy
+aGq
+aJM
+urj
+cbX
+aGq
+aGX
+aHM
+aHM
+aIP
+aJB
+aHM
+aHM
+aNg
+aSW
+aHM
+biF
+aQW
+aTr
+cDA
+bEN
+bjw
+aQW
+aQW
+aSJ
+aSJ
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bcy
+bec
+bek
+blH
+bnm
+bwN
+bJY
+bLE
+bOE
+cKH
+cKI
+cbP
+bcy
+cbC
+cnO
+cnO
+cnO
+cGQ
+cGW
+cGV
+cbb
+bKa
+cGq
+bMy
+bxT
+bzy
+bzy
+bIK
+bJx
+bKc
+bxT
+cta
+caZ
+bLy
+bxT
+bKM
+cmQ
+bLy
+bxT
+bKM
+ctM
+bLy
+bxT
+ctS
+cud
+clj
+cll
+clj
+clm
+clo
+clo
+clo
+clp
+clt
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(78,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bfq
+aaa
+aaa
+aaU
+aiN
+alu
+aDT
+aGy
+awu
+auL
+awu
+auL
+aAc
+aGq
+aJX
+bdE
+cen
+aGq
+cvK
+aHM
+cnp
+aIQ
+aJG
+aKL
+bPt
+aNi
+aSW
+aHM
+bju
+aQW
+aSJ
+aSJ
+aQW
+aSJ
+aQW
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bcy
+bed
+boJ
+fuR
+bzX
+bAl
+boL
+bAG
+cnT
+boQ
+cKJ
+bga
+bcy
+chR
+cnV
+cGG
+cGM
+cGP
+cGV
+cGV
+cbb
+bxT
+cGr
+bxT
+bxT
+bFl
+bFl
+bFl
+bFl
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+bxT
+cvG
+cvY
+bxT
+bxT
+bxT
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(79,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+agW
+ahf
+ain
+aaa
+ain
+alt
+agW
+aaa
+aqw
+abx
+aCd
+aDV
+aEp
+aEs
+aIo
+aEs
+aNZ
+atv
+aGq
+aGq
+bdJ
+ceo
+aGq
+aKY
+aHM
+aHM
+aHM
+aHM
+aHM
+aHM
+aHM
+aSW
+aHM
+bjJ
+aGq
+aaU
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+bcy
+bcy
+bcy
+bcy
+bcy
+bgC
+bdf
+boR
+bDL
+boR
+cKJ
+bAP
+bcy
+bWl
+bZW
+bcy
+cbb
+cbb
+cbb
+cbb
+cbb
+bRh
+bTO
+bVv
+bTR
+aaU
+aaU
+aaU
+aaU
+cav
+cav
+cav
+cav
+cav
+cav
+cav
+aaU
+aaU
+aaa
+aaa
+aaa
+aaU
+cbB
+ctY
+cvA
+cbB
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(80,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+agW
+ahk
+ain
+aaU
+ain
+ahk
+agW
+aaU
+abx
+aiO
+amq
+avW
+awd
+awK
+axf
+awK
+aOK
+aAi
+ceC
+aAR
+aEm
+aGz
+aGs
+aOp
+aOZ
+aPu
+aOZ
+aOZ
+aOZ
+aSa
+aSa
+bbe
+bnG
+bkA
+aGq
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bUo
+bbF
+bbN
+bim
+bem
+bgD
+bmE
+bpM
+bFp
+bvj
+cKK
+bAU
+bRi
+bSl
+bRi
+bcy
+aEF
+bko
+bko
+bko
+bTr
+aVF
+cGt
+aVF
+bTR
+cav
+cav
+cav
+cav
+cav
+cav
+cbe
+cbl
+cbq
+cav
+cav
+cav
+aaU
+aaa
+aaa
+aaa
+aaU
+cbB
+cKr
+cub
+cbB
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(81,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+agW
+ahl
+ain
+ain
+ain
+alv
+agW
+agW
+agW
+aiP
+anV
+auL
+awr
+awM
+asL
+axu
+aOL
+asL
+asL
+asL
+aFj
+aFj
+aFj
+bmc
+aHP
+aHP
+aIT
+aJK
+aKP
+aSi
+aYh
+csr
+aNR
+blf
+aNR
+aTt
+aTt
+aTt
+aaa
+bdg
+bdg
+bdg
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bdg
+bdg
+bdg
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bUo
+bbL
+bbN
+bim
+beq
+bhy
+bnj
+bpR
+bJw
+bLc
+cKL
+bAV
+bRj
+bZf
+bZY
+bcy
+aSj
+bko
+csT
+bko
+bTs
+aVF
+cGs
+aVF
+cav
+cav
+cHj
+cqS
+cav
+cav
+ccL
+caX
+caX
+caX
+ctb
+cav
+cav
+cav
+aaa
+aaa
+aaa
+aaU
+cbB
+cKr
+cuf
+cbB
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(82,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+agW
+aho
+ais
+akl
+akO
+aho
+alW
+amX
+agW
+aiO
+aob
+bUA
+awk
+ajU
+asL
+axv
+aOW
+aAn
+aAS
+aCc
+aFj
+aFX
+aGt
+bnW
+cjW
+aFj
+aFj
+aGq
+bdQ
+aSB
+aGq
+aNR
+aNR
+bly
+bFy
+aTJ
+aUB
+aTt
+aaa
+bdg
+beN
+bgx
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bdg
+bEC
+bgx
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bZW
+bcy
+bcy
+bcy
+bcy
+biK
+bdf
+bpR
+bJT
+bLl
+cKM
+bQX
+bvy
+bZg
+caa
+bcy
+aTE
+aTE
+aTE
+aTE
+bTG
+aVF
+cGs
+aVF
+caw
+caA
+cHk
+caP
+caT
+caX
+caX
+cbf
+caX
+cbr
+caX
+cbx
+cav
+cav
+aaa
+aaa
+aaa
+aaU
+cbB
+cKr
+cub
+cbB
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+cpC
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(83,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahg
+ahg
+ahg
+ahg
+ahg
+ahp
+aiE
+akq
+akT
+aAd
+atq
+atH
+anU
+anU
+asL
+asL
+azi
+asL
+anU
+axz
+aPj
+ayM
+cCP
+aCg
+aFm
+aGK
+cCW
+brG
+aGu
+aMh
+aFm
+aOr
+aKS
+aSW
+cDs
+aNR
+aPs
+blA
+bqh
+buG
+bIW
+aTt
+aaa
+bdg
+beR
+beJ
+bdg
+bdg
+bdg
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bdg
+bdg
+bdg
+beJ
+beR
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bdc
+bdc
+bdc
+bei
+beI
+biT
+bmE
+bpR
+bwD
+bLx
+cKN
+bWt
+bvy
+bZj
+cac
+bcy
+aTX
+aVF
+aVF
+aVF
+aVF
+aVF
+cHg
+bTP
+caw
+caB
+cHl
+caP
+caT
+caY
+caX
+caX
+cbm
+cbs
+caX
+ctI
+cav
+cav
+aaa
+aaa
+aaa
+aaU
+cbB
+cKr
+cub
+cbB
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(84,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahg
+akp
+alw
+afH
+ahg
+ahq
+aiG
+akr
+alj
+ari
+amg
+amX
+anU
+aCr
+aKd
+aLJ
+azj
+aph
+asL
+axA
+aPk
+aMp
+aOn
+aCi
+aFj
+aGb
+cCX
+bGn
+aHW
+baK
+aFj
+aSs
+bWe
+cPs
+bdS
+aNR
+aPt
+aYR
+csE
+bvJ
+aUF
+aTt
+aaa
+bdg
+beJ
+beJ
+aXk
+bjg
+aXl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+baZ
+bjg
+bhS
+beJ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+bcy
+bcy
+bgW
+bgW
+bgW
+bgW
+bnk
+bqI
+bHF
+bDM
+bOu
+bWu
+bRk
+bZB
+cad
+bcy
+aVF
+cGR
+cGX
+cHb
+cHc
+cHe
+cHh
+bTQ
+caw
+caC
+cHk
+caP
+caT
+coG
+caX
+cHx
+cHD
+cHJ
+caX
+cbz
+cav
+cav
+aaa
+aaa
+aaa
+aaU
+cbB
+cKs
+cug
+cbB
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(85,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+ahg
+aks
+akY
+alF
+ahg
+aps
+agW
+agW
+agW
+asF
+ain
+ain
+anU
+aEw
+asX
+aNj
+aNJ
+aph
+asL
+axB
+aPn
+aAv
+aOO
+aCl
+aFj
+ciC
+aGv
+bLp
+bEV
+aIr
+aFj
+aOs
+aIP
+aTf
+aYy
+bbf
+bsf
+bnI
+aRo
+bBt
+biq
+aTt
+aaa
+bdg
+beJ
+beJ
+bdg
+bdg
+bdg
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bdg
+bdg
+bdg
+beJ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+bgW
+bin
+bjs
+bgW
+bgW
+bmb
+bgW
+bgW
+bOv
+bWS
+bcy
+cvH
+bcy
+bcy
+bSJ
+cGS
+cGY
+buC
+cHd
+cHf
+cHi
+buC
+cax
+bWd
+cHm
+cbv
+caU
+cba
+cnC
+cHy
+cHE
+cbt
+cpe
+cav
+cav
+cav
+aaa
+aaa
+aaU
+cbB
+cbE
+cKt
+cuh
+cbE
+cbB
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(86,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+anU
+anU
+acc
+anU
+ahg
+akt
+atI
+amm
+ame
+akL
+akD
+amh
+aBA
+arq
+awJ
+awJ
+anU
+aHb
+asY
+aNG
+aNV
+aBb
+anU
+abS
+aPv
+abS
+aPD
+abS
+aFj
+aFj
+aLa
+cjR
+aFj
+aFj
+aFj
+aGn
+bfA
+aTu
+aGn
+aNR
+aNR
+aNR
+aRw
+bCe
+aNR
+aNR
+aaa
+bdg
+beJ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bdg
+coQ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bgW
+cfg
+bjt
+bep
+bVe
+bVp
+csf
+bgW
+jyu
+bXg
+bXS
+bYb
+cae
+bcy
+bfr
+cGT
+bJz
+bTo
+cag
+cbc
+caI
+bTo
+cax
+caE
+cHn
+csk
+cav
+cav
+cav
+cHz
+cHF
+caX
+cav
+cav
+cav
+aaU
+aaU
+aaU
+cbB
+cbB
+cnj
+cKu
+cui
+clh
+cbB
+cbB
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(87,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+anU
+aaN
+aaS
+auE
+ahy
+aku
+aly
+aoq
+aoR
+aoV
+aoY
+apu
+aeD
+arT
+aaS
+aNM
+anU
+aHN
+atj
+ayf
+azn
+aBe
+bzx
+axC
+aPY
+aAz
+aOh
+aCG
+bpX
+aGo
+aAz
+cjS
+anU
+aMY
+aNK
+aNL
+aPo
+aTD
+aNL
+aNK
+aVj
+aNR
+bao
+bDk
+aNR
+aaU
+aaa
+bdg
+beJ
+bbI
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bdg
+cmd
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bgX
+bAw
+biA
+biA
+biA
+bmd
+csI
+bgW
+bOw
+bcy
+bRm
+bYj
+bRq
+bcy
+big
+cce
+bJA
+bTq
+big
+big
+bTN
+big
+cax
+cpg
+cHo
+cbw
+bXd
+cav
+cav
+cHA
+cHG
+cav
+cav
+cbE
+cbE
+cbE
+cbE
+cbE
+cbE
+cle
+csW
+cKv
+cuj
+cuq
+cus
+cbE
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(88,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aah
+aaz
+byX
+byX
+byX
+byX
+byX
+aaz
+acO
+anU
+aeb
+apc
+auI
+ahy
+aky
+amI
+aod
+amB
+ajy
+akF
+awG
+axW
+asj
+awR
+axo
+anU
+aIl
+anU
+anU
+anU
+aBf
+anU
+aTp
+aQb
+aaS
+aQl
+agu
+aSk
+aUg
+blY
+cjT
+aLk
+aNd
+aNL
+aNL
+aPq
+aUC
+aNL
+aNL
+aVj
+aNR
+aNR
+bEm
+aNR
+aaU
+aaa
+bdg
+beJ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bdg
+beJ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bgX
+biB
+biA
+cDS
+cDU
+cDW
+cDY
+bgW
+bOx
+bcy
+bcw
+bYs
+bcw
+bcy
+bYr
+cgV
+cGi
+cGl
+cGo
+cGp
+cGu
+cGp
+cGx
+cGz
+cHp
+cHr
+cGz
+cHu
+cHw
+cHB
+cHH
+cHK
+cHM
+ckP
+ckT
+ckT
+ckT
+ckV
+cHK
+clg
+ctc
+cua
+cvW
+cur
+clh
+cbB
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(89,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aan
+aaA
+aaA
+aaA
+aaA
+aaA
+aaA
+aaA
+ada
+anU
+anU
+apQ
+auK
+ahg
+akA
+amQ
+ama
+ahg
+abS
+abS
+awZ
+aEy
+ayS
+abS
+abS
+anU
+aIV
+anU
+ayj
+anU
+aBj
+anU
+axN
+aQb
+aaS
+bpo
+aAX
+aED
+aVw
+aBF
+aKx
+aLL
+aNf
+aNN
+aNL
+aPq
+aUC
+aNL
+aNL
+aVl
+aYT
+baz
+bFH
+aYT
+aaU
+aaa
+bdg
+beJ
+beJ
+bdg
+bdg
+bdg
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bdg
+bdg
+bdg
+beJ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+bdg
+bdg
+bGI
+bGI
+bGI
+bGI
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bgX
+csF
+csN
+biA
+biA
+csL
+cDZ
+bgX
+bPl
+bXx
+bXT
+bYu
+bYA
+bYA
+bZG
+cmV
+cGj
+cGm
+bYv
+bYv
+cio
+cct
+caz
+bOO
+cHq
+cHs
+cHt
+cHv
+caG
+cHC
+cHI
+cHL
+cHN
+ckQ
+ckQ
+ckU
+ckQ
+ckW
+cHL
+csX
+ctP
+cuk
+cul
+cur
+clh
+cbB
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(90,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaU
+aaU
+aas
+aaA
+aaC
+abn
+abq
+abG
+ack
+aaA
+adb
+anU
+aaR
+aqa
+amZ
+adO
+acN
+amZ
+acN
+aqY
+ajz
+alM
+axK
+axX
+azk
+awY
+awY
+azl
+aJw
+anU
+anU
+anU
+aLw
+abS
+axT
+aQb
+aaS
+aAY
+avj
+aSN
+aVI
+aBF
+aKy
+anU
+aNk
+aNL
+aNL
+aPq
+aUC
+aNL
+aTO
+aTP
+aYT
+baA
+bFI
+aYT
+aYT
+bdg
+bdg
+beJ
+beJ
+aXk
+bjg
+aXl
+cut
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+baZ
+bjg
+bhS
+beJ
+beJ
+bGI
+bXP
+aaa
+aaa
+aaa
+aaa
+aaa
+ceE
+bjg
+ceF
+beJ
+beJ
+bGI
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bgW
+biG
+cve
+bky
+biA
+biA
+cDZ
+bgX
+bWT
+bXh
+bYa
+bYw
+bYL
+bZE
+bZE
+csP
+cGk
+cGn
+cct
+bYo
+ckk
+bYF
+bBP
+bFu
+bIc
+bBQ
+bBQ
+bFG
+cuY
+bCg
+bCg
+cbB
+cbB
+cbB
+cbB
+cbB
+cbB
+cbB
+cbE
+ctW
+cbD
+ctZ
+ctZ
+cld
+cus
+cbE
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(91,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+cpC
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aas
+aaA
+adB
+aaF
+aaJ
+abm
+acd
+acl
+acD
+aaG
+aeh
+aqf
+auS
+agu
+ajx
+ana
+agu
+agu
+agu
+agu
+aqf
+asV
+aCt
+agE
+atU
+aAV
+auV
+aGP
+bls
+aKO
+aLx
+ayR
+ayC
+aQE
+aMZ
+aAZ
+aCL
+abS
+aVO
+aKh
+anU
+anU
+abS
+abS
+aNL
+aPz
+aUG
+aNL
+aNL
+aVu
+aYT
+baC
+cPt
+bcs
+aYT
+bdj
+beF
+beJ
+beJ
+bdg
+bdg
+bdg
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bdg
+bdg
+bdg
+beJ
+beJ
+bGI
+bXV
+aaa
+aaa
+aaa
+aaa
+aaa
+bdg
+bdg
+bGI
+beJ
+cis
+bGI
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+bgW
+biI
+cvM
+bkC
+bVN
+bmj
+cEa
+bgW
+bWU
+bXl
+bXy
+bWa
+bYc
+bXU
+bXU
+bWa
+bJF
+bKv
+bYv
+bYp
+bYx
+cPw
+bBQ
+bFE
+bId
+bIL
+cpw
+bKd
+cuZ
+bKN
+bCg
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+cbB
+cbB
+ctN
+clh
+clh
+ctN
+cbB
+cbB
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(92,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aas
+aaA
+aaH
+aic
+abv
+abO
+acu
+aaA
+acU
+adK
+aeL
+asO
+auT
+ahE
+akQ
+ahE
+ahE
+ahE
+ahE
+ahE
+aqz
+atV
+aCW
+aEC
+aEL
+aBa
+aGG
+aHH
+aIs
+aJy
+aKt
+aKC
+aLn
+aQH
+aMq
+aQm
+aSh
+aTR
+aWS
+bpS
+anU
+aLW
+aaS
+abS
+aLZ
+aPB
+aUV
+aYB
+bbg
+bcH
+bnZ
+bqi
+bIl
+bcJ
+bOY
+bdr
+beJ
+beJ
+beJ
+bdg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bdg
+beJ
+ceI
+bGI
+bXV
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bGI
+beJ
+bbI
+bGI
+aaU
+aaU
+aaU
+aaU
+aaU
+aUk
+bgW
+bgW
+cDj
+bgX
+bgW
+bgW
+cEb
+bgW
+bWV
+bXh
+bXA
+bXU
+bpz
+aaa
+aaU
+bXU
+bKs
+bKv
+bYv
+bYq
+cPv
+bYH
+bBQ
+bDT
+bIe
+bIM
+bIM
+bIM
+cvt
+bJD
+bJH
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cbB
+cbE
+cbB
+cbB
+cbE
+cbB
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(93,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aas
+aaA
+abl
+aaF
+aaQ
+abA
+abA
+acC
+acZ
+adW
+asV
+aeM
+adA
+aed
+afl
+afl
+afl
+aiK
+ajA
+ajA
+aew
+avg
+aew
+axi
+atW
+aCE
+aDW
+anU
+anU
+anU
+aPX
+abS
+ayI
+aQM
+aSx
+aTF
+aUv
+aVz
+aWe
+aTF
+aWC
+aXi
+aXO
+aYS
+aZM
+bbp
+bcN
+aYJ
+aNL
+aVJ
+aYW
+baF
+bIr
+bcx
+cvZ
+bdr
+beJ
+beT
+bbI
+bdg
+aaU
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaU
+bdg
+cmd
+beT
+bGI
+bXV
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bGI
+beJ
+beJ
+bGI
+aaU
+aaU
+aaU
+aaU
+aaU
+aTV
+aUo
+aVW
+cDH
+bbS
+aUk
+bVL
+cEc
+bXr
+bWW
+bXh
+bXB
+bXU
+bpz
+aaa
+aaU
+bXU
+bKs
+bKv
+bYv
+cgr
+bYy
+crf
+bBQ
+bFx
+bIf
+bIM
+csZ
+bIM
+cvQ
+bJE
+bJH
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(94,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+cpB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aas
+aaA
+abk
+abo
+abw
+abP
+acy
+aaA
+adb
+anU
+aeQ
+aeM
+ani
+aew
+aeJ
+aeJ
+aeJ
+aew
+aeJ
+aeJ
+aeJ
+avF
+aeJ
+aeJ
+aeJ
+aew
+aCH
+aew
+aIn
+aew
+aJV
+aew
+aew
+ayT
+aRO
+aBI
+aDs
+bfw
+aYo
+aKo
+anU
+aaS
+aMP
+abS
+aOv
+aPH
+bcQ
+aUC
+aNL
+aVJ
+aYX
+baD
+bIV
+bKg
+cwa
+bdr
+beJ
+bfd
+beJ
+bdg
+aaU
+aaa
+aWZ
+aWZ
+aWZ
+aWZ
+aWZ
+aWZ
+aWZ
+aaa
+aaU
+bdg
+beJ
+bfd
+bdg
+bXV
+aaa
+aaa
+ceD
+aaa
+aaa
+aaa
+aaU
+bdg
+beJ
+coR
+bdg
+aaa
+aaa
+aaa
+aaa
+aaU
+aUi
+aUp
+aWm
+cDH
+bcB
+aTV
+bVM
+cEd
+bWs
+bWs
+bXh
+bXJ
+bXU
+bpz
+aaa
+aaU
+bXU
+bKs
+bLG
+bYv
+bzA
+cwb
+bYv
+bBQ
+csV
+bIe
+bYB
+cfU
+bIM
+cvt
+cmS
+bJH
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cpB
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(95,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aan
+aaA
+aaA
+aaA
+aaA
+aaA
+aaA
+aaA
+ada
+anU
+aeQ
+aeM
+adD
+aew
+afn
+agI
+aid
+aew
+ajG
+alU
+aew
+awH
+aew
+axj
+ayQ
+aew
+aDY
+aew
+aew
+aew
+aQf
+aSX
+aew
+ayU
+aSQ
+aAB
+aDt
+asL
+aYr
+asL
+anU
+abS
+abS
+abS
+aNL
+aPq
+bdx
+aYO
+aNL
+aVL
+aYT
+baG
+bbM
+bcz
+aYT
+bdy
+beM
+bfd
+beJ
+bdg
+aaU
+aaU
+aWZ
+aXC
+aYg
+aYz
+aZf
+aZr
+aWZ
+aaU
+aaU
+bdg
+beJ
+bfd
+bdg
+bXV
+aaa
+bdg
+buB
+bdg
+aaa
+aaa
+aaU
+bdg
+beJ
+beJ
+bdg
+aaa
+aaa
+aaa
+aaa
+aaU
+aUi
+aUu
+cnu
+cDI
+cDT
+aTV
+bQZ
+cEd
+csO
+cEu
+bXh
+bXK
+bWa
+bYc
+bXU
+bXU
+bWa
+bKt
+bLU
+bRM
+bRO
+bRR
+bRT
+bRV
+bSd
+bTC
+bYI
+cgf
+bKe
+czH
+bKO
+bJH
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(96,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aay
+aaz
+bPo
+bPo
+bPo
+bPo
+bPo
+aaz
+aeg
+anU
+aeV
+aeM
+adE
+aew
+afG
+agP
+agP
+aiL
+ajT
+anu
+ask
+ayF
+aCX
+aEE
+aEE
+aES
+aGT
+aHT
+aJt
+aJN
+aQg
+akv
+aeJ
+ayU
+aSQ
+aTg
+aDu
+asL
+aYq
+aXu
+aZU
+aZV
+beb
+aNO
+aNL
+aPq
+bex
+aNL
+aTO
+bhh
+aYT
+aYT
+bbP
+aYT
+aYT
+bdg
+bdg
+bJy
+caW
+bdg
+aaU
+aaa
+aWZ
+aXD
+aYk
+aYk
+aYk
+aZs
+aWZ
+aaa
+aaU
+bdg
+caW
+bJy
+bdg
+bXV
+aaU
+bdg
+bjg
+bdg
+aaU
+aaU
+aaU
+bdg
+beJ
+beJ
+bdg
+aaa
+aaa
+aaa
+aaa
+aaU
+aUi
+aUu
+aWm
+cDH
+bOt
+aTV
+bIg
+cEe
+cEs
+cEv
+cEx
+cEA
+cEJ
+cEM
+cEJ
+cEJ
+cEJ
+bKu
+bQv
+bRN
+cEs
+bRS
+cEN
+cEO
+cEP
+bTD
+bYJ
+cka
+cmR
+cFV
+bKP
+bJH
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(97,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+anU
+agv
+aeN
+abS
+aew
+afJ
+agP
+agP
+ajB
+akv
+anw
+aym
+azN
+aDe
+aDe
+aDe
+aET
+aHg
+aHS
+aLf
+aJO
+aQi
+alU
+aeJ
+ayW
+aSQ
+aAB
+aDB
+asL
+aYq
+aXu
+aZV
+aZV
+beb
+aNS
+aOw
+aPq
+bcQ
+aNL
+aTY
+aWk
+aXR
+azd
+aTS
+aRW
+bcR
+bdN
+beJ
+bfd
+beJ
+bdg
+bdg
+aaU
+aWZ
+aXE
+aYk
+aYA
+aYk
+beg
+aWZ
+aaU
+bdg
+bdg
+beJ
+bfd
+bGI
+bYd
+bGI
+bGI
+bzb
+bGI
+bdg
+bdg
+bdg
+bGI
+beJ
+bbK
+bGI
+aaU
+aaU
+aaU
+aaU
+aaU
+aTV
+aVh
+biP
+cDH
+bcC
+aTV
+bIn
+bIN
+bIO
+bIQ
+bIR
+bIQ
+bIQ
+bIR
+bIQ
+bIS
+bIQ
+bIQ
+bQP
+cfZ
+bWX
+bWX
+ckf
+bCf
+bFB
+bIh
+bYK
+bJC
+bKf
+cFW
+bKQ
+bCg
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(98,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+akE
+akE
+ans
+apg
+aqE
+aew
+afY
+agP
+agP
+aiL
+akv
+anw
+akv
+akv
+akv
+akv
+aAh
+aew
+aEW
+alU
+akv
+aKa
+aKw
+alU
+aeJ
+azc
+aSQ
+aAB
+aDL
+asL
+aYq
+aXu
+aZW
+aZV
+beb
+beb
+beb
+aPM
+bcQ
+aNL
+aNL
+aWl
+aXR
+aRI
+aTS
+aRW
+bcR
+bcR
+cmd
+bfd
+bgz
+bgx
+bdg
+bdg
+aWZ
+aXF
+aYk
+aYk
+aYk
+aZt
+aWZ
+bdg
+bdg
+beJ
+beJ
+bfd
+blc
+bYP
+coS
+aXc
+aXc
+aXc
+aXc
+aXc
+aXc
+aXc
+aXc
+aXc
+bGI
+aaU
+aaU
+aaU
+aaU
+aaU
+aTV
+aTV
+aTV
+bAc
+brw
+aTV
+bVM
+cEf
+bWx
+aab
+bXo
+bXQ
+bXZ
+bYi
+bYk
+bWa
+bWa
+bXU
+bXU
+bXU
+bXU
+bXU
+bWa
+bCg
+bFC
+bIi
+caj
+bJD
+bCg
+cFX
+bJH
+bCg
+cOI
+cOI
+cOI
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(99,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aak
+aak
+aak
+aak
+aak
+aaa
+aaa
+aaa
+aaa
+aaa
+aak
+aak
+aak
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+akN
+alq
+alq
+apn
+aqF
+aeJ
+agD
+ahr
+aiH
+aew
+akw
+aoB
+akw
+aqD
+aew
+ayh
+aew
+aew
+aUy
+alU
+akv
+aym
+aQg
+akv
+aew
+azf
+bpW
+aAP
+aEc
+aFT
+aZO
+aXu
+aZX
+bcr
+beO
+beO
+beb
+cDp
+beL
+aRm
+aNL
+aXw
+aXR
+aRW
+aTS
+aRW
+bcR
+bdU
+beJ
+bfd
+beJ
+bii
+coP
+bdg
+aWZ
+aVG
+bnu
+bnV
+aYl
+aZu
+aWZ
+bdg
+byV
+bzB
+bgA
+bWf
+bXm
+bZQ
+ccN
+ccN
+cei
+ccN
+ccN
+ccN
+ccN
+ccN
+coZ
+blO
+bGI
+aaa
+aaa
+aaa
+aaa
+aaU
+aTV
+aVk
+bfu
+bAn
+bFz
+cDV
+cDX
+cEg
+bWx
+bSE
+ckR
+bSE
+bSG
+bTc
+bSE
+bSE
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+bCg
+clv
+bIi
+caH
+bJE
+bCg
+cOx
+cOA
+cOE
+cOJ
+cOP
+cOT
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cPf
+cPf
+cPf
+cPf
+cPo
+abp
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(100,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+abM
+abR
+abR
+abM
+aZG
+aaU
+aaU
+aaU
+aaU
+aaU
+aTd
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aTx
+akE
+akE
+anC
+app
+aqH
+aew
+aew
+aew
+aew
+aew
+aew
+aew
+aew
+aew
+aew
+axk
+asz
+aew
+aGV
+akv
+aLv
+alU
+aQA
+aSZ
+aew
+abS
+bEL
+aCb
+asL
+asL
+bfm
+aXA
+aZY
+bct
+beP
+beP
+bjv
+cDq
+bhz
+ccQ
+ccS
+aXB
+aYY
+aSc
+aTT
+aUH
+bcX
+bel
+cpl
+bfi
+bgA
+bLH
+bji
+bli
+aWZ
+aWZ
+aWZ
+boe
+aWZ
+aWZ
+aWZ
+beJ
+bSW
+bUy
+bJG
+aZy
+aZy
+aZy
+aZy
+beJ
+bfd
+bjg
+aYI
+bai
+baV
+cKF
+bbn
+cKG
+bGI
+aaa
+aaa
+aaa
+aaa
+aaU
+aTV
+aVq
+bfx
+bCd
+cpP
+aTV
+bVR
+cEh
+bWy
+buf
+bJu
+bSQ
+bSY
+bTd
+bTj
+bSE
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bCg
+bZT
+bIi
+cbK
+ckb
+coH
+cOy
+cOB
+cOF
+cOK
+cOI
+cOI
+aZG
+aaU
+aaU
+aaU
+aTd
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aTx
+abM
+abR
+abM
+abM
+cPo
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(101,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+abM
+aca
+acG
+acG
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aWj
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+akP
+als
+anW
+apr
+aqJ
+arR
+ajC
+agH
+akC
+amb
+amk
+auH
+ape
+civ
+avG
+axl
+aCu
+aew
+aFG
+aIz
+aew
+aPZ
+aQY
+aTa
+aew
+aDi
+bGY
+aDX
+aIq
+atc
+aYq
+aXu
+baa
+bcL
+beS
+bgm
+bjC
+cDr
+bhW
+ccR
+aNL
+aXG
+aXR
+awO
+aUc
+cjq
+bcR
+bcR
+bcR
+bcR
+bgE
+bLJ
+bLV
+bfi
+blE
+bBW
+bgA
+aww
+awL
+aGC
+aON
+aGC
+bTu
+bUC
+bVQ
+aZy
+bTp
+bRe
+baw
+bZA
+cfQ
+bZA
+bZA
+bqB
+bZS
+bZS
+bZS
+bZS
+bZS
+aaa
+aaa
+aaa
+aaa
+aaU
+aUi
+aVq
+bzz
+cuQ
+cts
+aTV
+bVM
+cEf
+bWz
+bSE
+bSK
+bSR
+bSL
+bTe
+bTM
+bSE
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+bCg
+cum
+bIj
+ccd
+cvS
+bCg
+cOz
+cOC
+cOG
+cOL
+cOL
+cOU
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cPg
+cPi
+cPj
+abR
+cPo
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(102,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+abM
+ace
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+abp
+aWj
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+akE
+akE
+akE
+akE
+akE
+akE
+ahm
+ako
+alx
+bfa
+aaj
+bNM
+civ
+cix
+avG
+axm
+aCC
+aCK
+aFZ
+aew
+aew
+awQ
+ayO
+aBx
+aoF
+aHR
+ccM
+aDX
+aJU
+atc
+aYq
+aXu
+baj
+bcP
+bfg
+bgy
+bjD
+aNO
+bcQ
+aNL
+aUD
+aXR
+aXR
+cjy
+aTS
+aQL
+aUX
+aZE
+aVS
+bcR
+bgF
+bcR
+bLX
+bLY
+bLY
+aVd
+bLY
+bQg
+bQw
+bLY
+bLY
+bLY
+bTy
+aZy
+bVU
+aZy
+bJm
+bbm
+baw
+aXe
+chU
+cjw
+cjw
+cke
+clu
+cmP
+clw
+bZZ
+bZH
+aaU
+aaU
+aaU
+aaU
+aaU
+aTV
+aYf
+beo
+bCd
+cwe
+aTV
+bVS
+cEi
+cEt
+cEw
+cEy
+cEB
+cEK
+bSS
+bTl
+bSE
+brU
+brU
+brU
+brU
+cdZ
+brU
+brU
+bCg
+bFG
+bIk
+ccB
+bJH
+bCg
+cGb
+bRI
+cOH
+bRI
+bRI
+bRI
+bCh
+aaU
+aaU
+aaU
+cpz
+cpz
+cpz
+cpz
+cpz
+cpz
+cpz
+aaa
+aaa
+aaa
+aaa
+cPk
+abR
+cPo
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(103,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+abR
+ace
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aWj
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bUo
+aaU
+acL
+afs
+aiT
+aco
+alG
+cjo
+aaj
+aGc
+bNT
+ciy
+cnF
+bGU
+bHl
+aoF
+asW
+atz
+avJ
+awS
+azB
+aBC
+atc
+aLX
+aJv
+aJZ
+aLY
+aNA
+bkF
+aXu
+aXu
+bcU
+aXu
+aXu
+bjD
+aQn
+bcQ
+aNL
+aUE
+aXR
+aQG
+aRW
+bsb
+aUI
+aUY
+bew
+aUY
+aWb
+aRW
+bcR
+cpc
+bjj
+bjj
+bmh
+bnv
+bou
+bQx
+bqj
+bjj
+bjj
+bjj
+aZy
+bVV
+bWg
+aWg
+bbo
+baw
+bZC
+cjv
+aYc
+bZF
+bau
+bZU
+cnW
+bbq
+bcp
+bZH
+aaU
+aaU
+aaU
+aaU
+aaU
+aTV
+bHH
+aWp
+cDJ
+coI
+aTV
+bVT
+cEj
+bWA
+bSG
+bSL
+bSS
+bUJ
+bSS
+bSL
+bSC
+brZ
+btf
+btU
+cec
+brU
+ced
+cej
+bCh
+bRL
+bIs
+ccC
+bRZ
+cFn
+cGc
+bMj
+bMj
+bMj
+cfb
+cFP
+bCh
+aaa
+aaa
+aaU
+cpz
+bNr
+bQU
+cuv
+cLC
+cCQ
+cwT
+aaa
+aaa
+aaa
+aaa
+cPk
+abM
+cPp
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(104,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+abM
+acf
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bUo
+aaU
+acL
+afF
+aip
+beV
+aco
+amd
+aaj
+cit
+ciw
+ciz
+ciB
+bGV
+bHm
+aLu
+ata
+ata
+ata
+awT
+aAk
+cjN
+atc
+aDF
+aRU
+aDX
+bAX
+atc
+aVQ
+aWa
+aWa
+cCV
+aYt
+aBY
+aOB
+aNO
+bcQ
+aNL
+aUL
+aXR
+aQK
+aRW
+bzT
+cnq
+aVe
+aRH
+aVe
+aWc
+aRW
+bcR
+bcR
+bcR
+bcR
+bmi
+bnx
+bpn
+bQx
+bqA
+aZy
+aZy
+aZy
+aZy
+bav
+bWh
+csG
+bQA
+aZy
+aXf
+bZJ
+bZF
+cpu
+bax
+bZV
+bZX
+ccY
+cab
+bZH
+aaa
+aaa
+aaa
+aaa
+aaU
+aUk
+aUk
+aUi
+cDK
+aUk
+aUk
+bWa
+cEk
+bWa
+bSE
+bSM
+bST
+bSZ
+bTf
+bTm
+bSC
+bsa
+buA
+bJK
+ceg
+bqT
+cee
+cef
+coc
+bTz
+bTE
+ccD
+bTE
+bTE
+cGd
+cvT
+cFA
+ckh
+cFK
+cFQ
+bCh
+aaa
+aaa
+aaU
+cpz
+bNv
+cAC
+cCk
+cCv
+cCS
+cpz
+aaa
+aaa
+aaa
+aaa
+aaa
+aRv
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(105,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+acM
+aWj
+aWj
+aaa
+aaa
+aaa
+adj
+adj
+adj
+adj
+adj
+adj
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaj
+aaj
+aaj
+aaj
+aaj
+aaj
+aaj
+aaj
+aaj
+avi
+aal
+aal
+aal
+bGW
+aco
+apH
+aoF
+auP
+bGf
+bHh
+cqd
+cBb
+cBt
+aMN
+cCO
+aQw
+coU
+atc
+aVV
+aSg
+aXM
+aYq
+aYt
+baB
+aOB
+aQo
+bix
+bcS
+aQo
+aXR
+aQL
+cjq
+aQL
+aQL
+cjq
+aQL
+aQL
+aTS
+aRW
+bcR
+bjG
+blk
+blF
+bmn
+bnz
+bpw
+bQx
+bll
+aZz
+cpm
+bad
+bah
+baR
+bWi
+aWh
+cmN
+aZy
+aXg
+bZK
+bZF
+csH
+bau
+bKw
+bZH
+bZH
+bZH
+bZH
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aUk
+aWr
+cDL
+biU
+aUk
+bWr
+cEl
+bWB
+bSE
+bSN
+bSU
+bTa
+bTg
+bTn
+bSC
+bRH
+bth
+cOd
+ceg
+brl
+cef
+cnZ
+bRI
+bTA
+bVO
+cfN
+ckd
+ckd
+cGe
+bMj
+bLI
+ckj
+cFL
+cnX
+bCh
+aaa
+aaa
+cpz
+cpz
+cpz
+cAD
+cCl
+cCw
+cpz
+cpz
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(106,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+adj
+aeC
+afv
+adF
+agM
+adj
+aaa
+aaU
+aaU
+aaj
+aaj
+aaj
+aaj
+aaj
+aaj
+aau
+ahn
+ajH
+ajY
+alB
+amj
+ape
+aal
+ciu
+aal
+ape
+amj
+aCM
+bHd
+afX
+atc
+auW
+avL
+axw
+cqH
+bhN
+aDb
+aDP
+aFk
+aGh
+csn
+atc
+aVZ
+aXL
+cqN
+aYq
+aYt
+baH
+bcR
+aPr
+biC
+beJ
+bft
+bdg
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aQL
+aTS
+aRW
+bcR
+bjX
+cpn
+blJ
+bmZ
+bnA
+bpy
+bQI
+bll
+aZA
+aZI
+bae
+chP
+baS
+bWj
+baS
+bbr
+aZy
+bKR
+bZF
+bZF
+cjx
+bay
+baX
+bZH
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aUk
+aXm
+cDM
+blU
+aUk
+bWc
+bWo
+bWC
+bSE
+bYV
+cEC
+cEL
+bTh
+bSC
+bSC
+bRJ
+bth
+bTB
+cek
+cKj
+cKk
+cKl
+cKm
+cKn
+cKo
+bRX
+crW
+bIq
+cqZ
+bMj
+bLW
+cFF
+cFM
+cnY
+bCh
+aaa
+aaa
+cpz
+cvU
+ctO
+cAE
+bNs
+cLF
+bNA
+cpz
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(107,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+adj
+aeR
+afx
+aga
+afI
+adj
+aaa
+aaa
+aaU
+aaj
+aaE
+acn
+acn
+acn
+acn
+afw
+acn
+ajN
+amS
+amS
+aoX
+amS
+amS
+aDE
+amS
+amS
+aKR
+apY
+bRa
+cjO
+atc
+aVr
+avM
+avL
+csw
+aBK
+aCa
+aCa
+aAQ
+aHZ
+atc
+atc
+ayd
+ayd
+ayd
+chJ
+aOo
+baM
+bcR
+aPr
+biC
+beJ
+bft
+bdg
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aQL
+aTS
+aRW
+bcR
+bku
+bll
+blK
+bmn
+bnD
+bpC
+bQx
+bll
+aZC
+aZN
+bCS
+bak
+bAI
+bWk
+cdE
+bbs
+aZy
+cry
+crA
+aYG
+cCJ
+baE
+bZS
+bZS
+bGI
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bUq
+bUq
+aUk
+aXs
+cDN
+bmG
+aUk
+bWb
+cEm
+bWL
+bSE
+bSP
+cED
+bTb
+bTi
+bSC
+brk
+bsp
+bth
+bth
+ceg
+brU
+bSX
+cel
+bCh
+cEQ
+bXn
+bRY
+bSa
+bSc
+bSg
+bMj
+cFB
+cFG
+cFN
+cvw
+bRI
+aaU
+aaU
+cpz
+bMN
+bMJ
+cAG
+bMJ
+cLG
+bNB
+cpz
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(108,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+add
+adC
+adC
+adC
+aeS
+adj
+adj
+agN
+ahL
+ahL
+ahL
+ahL
+afD
+afQ
+age
+age
+agy
+age
+age
+afC
+akK
+akG
+alC
+aal
+ape
+aal
+aDU
+aal
+bGH
+aal
+aOH
+aal
+arb
+atc
+atc
+atc
+atc
+csA
+aCa
+aCa
+aId
+aIx
+aJx
+aVc
+ayd
+cfR
+aLl
+ayd
+cDk
+ayd
+ayd
+bGI
+aPw
+bmC
+aYP
+bft
+bcR
+bdg
+bdg
+bdg
+bdg
+bdg
+bdg
+bcR
+bgN
+bgF
+bcR
+bcR
+bcR
+bcR
+bna
+bnP
+bpF
+bQY
+bqK
+aZy
+aZy
+aZy
+bak
+baw
+bWw
+aZy
+aZy
+aZy
+bZH
+bZH
+bZA
+cCK
+bZH
+bZS
+bSB
+bTT
+bTW
+bTW
+bTW
+bTW
+bTW
+bTW
+bUr
+bUu
+aUk
+aXt
+cDK
+aXt
+bwm
+bWa
+cEn
+bWR
+bSH
+bSG
+cEE
+bSG
+bSC
+bSC
+bhx
+bqv
+bti
+btY
+cod
+cdZ
+bss
+cem
+bRI
+cER
+cEU
+bCh
+bCh
+bCh
+bSh
+bMj
+cFC
+cFH
+bCh
+bCh
+cpz
+bMl
+bMl
+cpz
+bMO
+bMJ
+cAH
+cvy
+cLH
+bNC
+ctD
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(109,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+adf
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+adM
+aaj
+aaI
+ami
+akX
+akX
+akX
+akX
+aqV
+arS
+akX
+akX
+akX
+akX
+avN
+awy
+avN
+avN
+avN
+aBk
+avN
+aDa
+aDS
+aDS
+aDS
+aBy
+cwf
+cBc
+cBu
+cBE
+cKD
+cBo
+cBZ
+cCb
+cCe
+cCe
+cCe
+cDl
+cCn
+cCp
+cCq
+aRb
+bjU
+aYQ
+bgc
+bgd
+bgd
+bgG
+bgd
+bgd
+bgd
+bgd
+boo
+bTw
+bgE
+coO
+bkx
+blo
+blo
+bnc
+bnR
+bpG
+bQx
+bqY
+brM
+bwr
+bkx
+brI
+blo
+bWE
+blo
+bGr
+bIZ
+bVI
+blo
+aYH
+cCL
+aYH
+bGI
+bTt
+bGI
+but
+but
+but
+but
+but
+but
+bUq
+bUv
+bUq
+baL
+cDO
+bbl
+bbA
+bbW
+cEo
+bbl
+coB
+bbl
+cEF
+buD
+bCX
+bqc
+brm
+bst
+bst
+bst
+csj
+bst
+bst
+coV
+bCh
+cES
+cEV
+cFj
+cFj
+cFo
+cFr
+cFt
+cFD
+cFI
+cFO
+cFR
+ctD
+bMo
+cob
+cpz
+bMP
+bMJ
+cAK
+bMJ
+cLI
+bND
+cDe
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(110,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+adf
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aiM
+aaj
+aaI
+aco
+akX
+alA
+aoe
+apA
+aqX
+arU
+apA
+atN
+auv
+akX
+avO
+awz
+ayp
+azb
+avN
+aBl
+aBP
+aDc
+aBQ
+aEJ
+aFM
+azP
+aFf
+aIu
+aKJ
+aKJ
+cKE
+aKJ
+aKJ
+aKJ
+aKJ
+aKJ
+aKJ
+aXK
+aYw
+aYV
+baJ
+bcf
+bke
+bmq
+bmL
+bgu
+beJ
+beJ
+beJ
+beJ
+beJ
+beJ
+beJ
+biS
+bjR
+cCG
+bUw
+cCG
+cCG
+bpx
+cCG
+cCH
+bRf
+cCG
+cCH
+cCG
+bUw
+bVJ
+cCG
+bWF
+cCG
+cfz
+cCG
+cCG
+cCH
+cCG
+cCM
+cCG
+cCN
+coM
+cpr
+cpx
+cpx
+cpx
+cpx
+cpx
+cpx
+crV
+crY
+crZ
+csJ
+cDP
+bUI
+bUI
+bVB
+cEp
+bUI
+cqe
+cqg
+cEG
+bdv
+bDd
+bqe
+brq
+bst
+bst
+bVP
+cKh
+btj
+btj
+bAo
+cuW
+cET
+cEW
+bQk
+bQk
+bQk
+bQu
+cFu
+cFE
+cFJ
+bQL
+cFS
+cFT
+cFU
+bNg
+bNh
+bNj
+bNw
+cPc
+cCm
+cCx
+cDb
+cDf
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(111,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+adf
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aiM
+aam
+aaI
+acw
+akX
+alE
+aoi
+apD
+arf
+arZ
+atp
+atT
+aux
+akX
+avR
+awC
+ayq
+azp
+avN
+aBo
+aBQ
+aDd
+aBQ
+aEK
+aFM
+azQ
+aFi
+cBe
+aEv
+aEv
+aEv
+aEv
+aEv
+aEv
+aEv
+aEv
+aEv
+aMH
+aMS
+aNI
+aOS
+aQD
+bkP
+aZJ
+beJ
+beJ
+beJ
+beJ
+beJ
+btG
+beJ
+beJ
+beJ
+biW
+bqd
+bcf
+bwU
+bcf
+bcf
+bCi
+bcf
+bCp
+bcf
+bcf
+bCs
+bcf
+bwU
+bCD
+bcf
+bcf
+bcf
+bGt
+bJB
+blB
+cCI
+blB
+blB
+bRg
+bWH
+bWM
+bZr
+cde
+cmF
+crk
+cmF
+cmF
+cwU
+cAT
+cBA
+cCT
+cCU
+cCY
+cCU
+cCU
+cCZ
+cDQ
+cEq
+cID
+bZm
+cEH
+bdv
+bDd
+cyy
+cyA
+bst
+cyE
+cyK
+buJ
+bst
+bst
+bAq
+cuX
+bFJ
+cEX
+cqW
+bWD
+cqb
+bKy
+cFv
+bJI
+bLB
+bLL
+bMa
+ctF
+coJ
+cpb
+cpz
+bMR
+bNx
+cBD
+cLA
+cCy
+cLP
+cLT
+cLU
+aaa
+aaa
+aaa
+aaa
+aTd
+aaa
+abp
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(112,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+adf
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aiM
+aap
+abd
+abT
+akX
+alO
+aok
+akX
+arh
+asb
+akX
+atY
+auB
+akX
+avS
+awC
+ayr
+azA
+aAf
+aBr
+aBR
+aDf
+aDZ
+aEN
+aFM
+aAe
+aFC
+cAW
+aHk
+aIi
+aHQ
+aHQ
+aHQ
+aJT
+aHQ
+aHQ
+aHQ
+aHQ
+aOz
+aHt
+bGI
+bGI
+bkU
+aZJ
+bGI
+bGI
+bGI
+crr
+bjj
+bjj
+bjj
+bjj
+bIP
+bje
+bqn
+bjj
+bkx
+blC
+blO
+bnr
+blO
+blO
+blO
+baf
+bRs
+bxk
+bkx
+bjj
+bFA
+bjj
+bIP
+bGA
+bGE
+bLg
+bMG
+bPR
+bGE
+bRy
+bSA
+bTw
+cwW
+bTY
+bTY
+bTY
+bTY
+bTY
+bTY
+cwX
+cqY
+bUE
+baO
+cDR
+bFc
+bFc
+cDa
+cEr
+bPQ
+cIE
+cEz
+cEI
+bXi
+bXq
+caQ
+bXC
+bXL
+cyF
+bst
+buK
+bst
+bst
+bKi
+bPP
+bQa
+cEY
+bvn
+bJg
+bQl
+bQl
+cFw
+bpa
+bQn
+bQC
+cmZ
+cpz
+cvs
+cwg
+cpz
+bMl
+bNy
+cBG
+cpz
+cCz
+cpz
+cpz
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(113,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+adf
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+aad
+adM
+aaq
+aaI
+acF
+akX
+akX
+akX
+akX
+arj
+ase
+akX
+akX
+akX
+akX
+avX
+awF
+ayt
+azC
+avN
+aBt
+aBZ
+aDd
+aEd
+aEO
+aFM
+aAj
+aIk
+cBf
+cBv
+aIj
+aHs
+aHs
+aHs
+aHs
+aHs
+aHs
+aHs
+aHt
+aNp
+aHt
+aPb
+bGI
+blm
+baq
+bGI
+aPb
+bGI
+bgL
+bGI
+bdg
+bdg
+bdg
+bGI
+bjh
+bqF
+bGI
+aWB
+bsl
+cjJ
+aXH
+aYm
+aYm
+aYm
+aZv
+bRP
+aWB
+aWB
+bDN
+cpv
+bDN
+bGI
+bdg
+bdg
+bGI
+bGI
+bGI
+bGI
+bRB
+bGI
+bTt
+bGI
+but
+but
+but
+but
+but
+but
+bUq
+bUv
+bUq
+baQ
+cuR
+cvl
+cvl
+cKe
+cNh
+cNw
+cIF
+ccp
+bqo
+buF
+bDm
+bqe
+ceY
+bst
+cyG
+bst
+buM
+buM
+buM
+buS
+buS
+bFX
+cEZ
+bAs
+ayY
+baT
+baT
+cFx
+bpb
+bqO
+bru
+coY
+cpz
+bMr
+cwh
+cwl
+bNm
+bNz
+cBT
+cpz
+cCD
+cDc
+cpz
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(114,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+adh
+adC
+adC
+adC
+afb
+adj
+adj
+agO
+adj
+adj
+adj
+adM
+aat
+abf
+acF
+acI
+aem
+aex
+aht
+aRz
+brB
+ank
+arJ
+amo
+acF
+avN
+avN
+avN
+avN
+avN
+aBw
+aBZ
+aDo
+aDo
+aEP
+aFM
+aAj
+aFC
+cBg
+aIj
+aHs
+aHs
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aHY
+aHY
+aHY
+aHY
+aHY
+bln
+bmy
+aNT
+aNT
+aNT
+aNT
+aNT
+aaa
+aaa
+aaU
+aSt
+bjk
+bqG
+aWB
+aWB
+aWK
+aXo
+aXI
+aYn
+aYD
+aZj
+aZw
+bRQ
+aZQ
+aWB
+aWB
+bGI
+bGI
+bGI
+aaU
+aaU
+aaU
+bGI
+aSV
+bGI
+bRW
+bgY
+cgC
+bTT
+bTZ
+bTZ
+bTZ
+bTZ
+bTZ
+bTZ
+bUr
+bUz
+bUq
+bbh
+cuR
+cvm
+cDn
+cKf
+cNi
+cvl
+cIF
+ccp
+bqr
+bbh
+bbh
+bqm
+bqm
+cdW
+cyG
+cdY
+buM
+byd
+czf
+csv
+buM
+bFJ
+cFa
+cFk
+cFl
+cFp
+cFp
+cFy
+bbt
+bqP
+brO
+bQB
+ctD
+bMs
+bMA
+cwm
+bMT
+bNG
+cCa
+cCo
+cLL
+cDd
+cwg
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(115,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+adj
+adY
+afc
+afy
+agb
+adF
+ahM
+ahM
+aie
+adM
+bHX
+abY
+acF
+acV
+adi
+aeT
+afq
+aij
+cdI
+adi
+adi
+anl
+acF
+aVD
+axP
+aCA
+bGM
+avN
+avN
+aCh
+aDp
+aDp
+avN
+aDS
+aAU
+aFC
+cBh
+aHs
+aHs
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aHY
+aTL
+aVA
+aWi
+aWo
+blr
+aXq
+bbj
+bda
+bol
+aSl
+aNT
+aaa
+aaa
+aaU
+aSt
+bjk
+bqG
+aWB
+aWG
+aWM
+aXr
+aXJ
+aXr
+aXr
+aXr
+aXr
+bRU
+aZR
+aWI
+aWB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bGI
+bGI
+aRy
+bSk
+aRy
+bGI
+bGI
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+bUq
+bUq
+bUq
+aaa
+cuR
+cvn
+cDo
+cLB
+cNj
+cvl
+cIF
+ccp
+cpH
+bbh
+bpA
+bXz
+bqm
+cmU
+cyG
+cdX
+buS
+csu
+czg
+czt
+czz
+czD
+cFb
+bEl
+bJn
+bQm
+bQm
+bop
+bpe
+bQz
+bXD
+cna
+cvo
+cvO
+cwi
+cwn
+cwu
+cAB
+cCc
+cCr
+cLD
+cuv
+cCr
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(116,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+aaU
+aWj
+aaU
+aaU
+aaU
+adj
+adY
+aeR
+adF
+adF
+adF
+adF
+adF
+aig
+adM
+aiZ
+ajL
+acF
+adg
+adi
+aeU
+aeU
+agr
+alD
+anj
+ajJ
+ajJ
+auM
+ayD
+ayD
+ayD
+aIe
+aLg
+aEo
+bnJ
+bHo
+bHq
+bHf
+arw
+aBg
+aGg
+cBh
+aHs
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aHY
+aVg
+aQF
+bba
+bcK
+bmg
+bmD
+bmR
+bnK
+bnL
+aSm
+aNT
+aaa
+aaa
+aaU
+aSt
+bjk
+bqG
+aWB
+aWI
+aWO
+bPz
+bQf
+aYs
+aYE
+aYs
+aYs
+bSV
+aZS
+aWG
+aWB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bqX
+bSr
+bqX
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+cuR
+cvp
+cFY
+cLE
+cNk
+cuR
+cIF
+ccp
+cJe
+bbh
+bpB
+bPw
+bqm
+bsG
+cyG
+bsG
+buS
+bAJ
+czh
+czu
+czA
+czE
+cFc
+bEl
+aJD
+bbx
+bbZ
+boq
+bpg
+bpg
+bAy
+bQJ
+cpz
+bMu
+bMC
+cwo
+bMU
+bNc
+cCg
+cCr
+cLD
+cuv
+cCr
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(117,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+abp
+aar
+aTd
+aWj
+abp
+aaa
+aaU
+adj
+adY
+afc
+afz
+agk
+agR
+afz
+ahR
+afz
+aiW
+ajp
+ajR
+agj
+agq
+agq
+agq
+acH
+ags
+alK
+agq
+anR
+apf
+auQ
+azz
+azz
+azz
+azz
+azz
+aUA
+boH
+bDZ
+bEF
+bHx
+bHk
+aBh
+aGx
+cBh
+aHs
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aHY
+aIv
+aIv
+aJW
+aHY
+aRQ
+aYe
+aNT
+aUO
+aQU
+aSn
+aNT
+aaa
+aaa
+aaU
+aSt
+bjk
+bqG
+aWB
+aWI
+aWP
+aXy
+aXN
+aXy
+cda
+aXy
+aXy
+aXy
+aZZ
+bag
+aWB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bqX
+bSs
+bqX
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+cuR
+cuR
+cFZ
+cLJ
+cNl
+cuR
+cIG
+ccw
+csM
+cyo
+cyt
+bPw
+bqm
+bqm
+cyH
+bqm
+buS
+caR
+czi
+cdm
+buS
+bFY
+cEX
+bIU
+aJE
+bbz
+bjx
+bot
+bot
+bjx
+bAH
+bQQ
+cpz
+cvs
+cwj
+cwp
+cwT
+cpz
+cCi
+cCr
+cLM
+cvf
+cCr
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(118,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+aaU
+aWj
+aaU
+aaU
+aaU
+adj
+adY
+aeR
+afB
+agp
+agS
+agp
+agp
+agp
+aiX
+ajr
+ajW
+agn
+agw
+ajJ
+ahw
+anQ
+aUS
+ckG
+cwk
+aBm
+aoh
+acF
+arl
+ayX
+aDj
+bGN
+bGR
+bHb
+bvd
+bHq
+bHf
+bHf
+arw
+aBi
+aGx
+cBh
+aHs
+aaU
+aaa
+aaa
+aEQ
+aEQ
+aEQ
+aEQ
+aEQ
+aHY
+aHY
+aHY
+aHY
+aHY
+aTb
+aWv
+aNT
+aNT
+aNT
+aNT
+aNT
+aSt
+aSt
+aSt
+aSt
+bjk
+bqG
+aWB
+aWB
+aWQ
+aXz
+aXU
+aYu
+aYF
+aZn
+aZx
+bEs
+bac
+aWB
+aWB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bqX
+bSs
+bqX
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+cuR
+cGa
+cuR
+cNm
+cuR
+cIH
+cgv
+coE
+bxM
+cyu
+cNJ
+cyB
+cyC
+cyI
+cyL
+buS
+buS
+buS
+buS
+buS
+bFZ
+cEZ
+bJa
+aKZ
+bbB
+blv
+czK
+bph
+bqR
+bAM
+cvx
+bMk
+bMv
+bMD
+bMv
+bMv
+cvs
+cCj
+cCu
+cLN
+cLS
+cCr
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(119,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+adj
+adY
+aeR
+afI
+agt
+agV
+adF
+adF
+aih
+adM
+adm
+aeH
+acF
+adJ
+adi
+afq
+agY
+aij
+brB
+adi
+amf
+aoc
+asJ
+asJ
+asJ
+asJ
+asJ
+asJ
+asJ
+bvt
+aDv
+bHu
+bHy
+bHB
+aAj
+aGx
+cBh
+aHs
+aaU
+aaa
+aaa
+aEQ
+aFw
+aDR
+aDM
+aLV
+aDN
+aDN
+aDN
+aDN
+aDg
+aUM
+bfl
+aOa
+aPI
+aPI
+aPI
+aPI
+aPI
+aTn
+aPI
+aPI
+bjp
+bqW
+aUh
+aWB
+aWB
+aWB
+aXV
+aYv
+aYN
+aWB
+aWB
+aWB
+aWB
+aWB
+aye
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bqX
+bSs
+bqX
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+cuR
+cGf
+cLK
+cNn
+cuR
+cIF
+cgB
+bqr
+bbh
+ciQ
+bpD
+bpD
+cmB
+bpD
+cyM
+cyB
+cyB
+cyB
+cyB
+czB
+czF
+cFd
+bEl
+aMm
+bbC
+blw
+blw
+blw
+blw
+bAT
+cez
+bMl
+bMv
+bMv
+bMw
+bMv
+cpz
+cuc
+cpz
+cvs
+cCl
+cCu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(120,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+aaa
+adj
+adM
+adM
+afe
+afL
+adM
+adM
+ahQ
+ahV
+aiI
+adM
+adt
+aeO
+acF
+aek
+aes
+afr
+ahi
+ail
+ckH
+alr
+avn
+apb
+asJ
+atB
+aBU
+aDk
+bGO
+bGS
+asJ
+aDz
+ark
+bHv
+aPF
+aPF
+aJA
+aGx
+cBh
+aHs
+aaU
+aaa
+aaa
+aEV
+aFy
+aGd
+aDM
+aMg
+aIa
+aGE
+aGE
+aGE
+aLi
+aUT
+baI
+aOb
+aPK
+aPK
+aPK
+aPK
+aPK
+aVm
+btR
+aPK
+bjH
+brc
+bkV
+aVv
+bkR
+aWB
+aXW
+aWB
+aZd
+aWB
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+bqX
+bSs
+bqX
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+cuR
+cGg
+cLO
+cuR
+cuR
+cIF
+cgB
+bqx
+bbh
+bPw
+bqq
+bqq
+bqq
+bqq
+bqq
+bqq
+bqq
+bqq
+bqq
+bqq
+bHC
+cFe
+cFk
+cFm
+cFq
+cFs
+cFz
+bqt
+blx
+bBn
+ceA
+bMl
+bMw
+bMv
+bNi
+bMv
+coK
+bMv
+bNu
+bMl
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(121,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+adj
+adj
+adP
+aep
+aeR
+afI
+agF
+adM
+adM
+adM
+adM
+adM
+adt
+aeO
+acF
+ale
+ale
+ale
+ale
+aru
+asf
+ale
+ale
+ale
+ale
+azL
+aCj
+aDl
+aIh
+aLB
+aVE
+byR
+bHr
+bHv
+aPF
+bGp
+aAj
+aGS
+cBh
+aHs
+aaU
+aaa
+aaa
+aEV
+aFz
+aGe
+aDM
+aUK
+aGe
+alZ
+alZ
+alZ
+alZ
+aHU
+aHU
+alZ
+alZ
+alZ
+aSt
+aSt
+aSt
+bjA
+aVv
+cho
+aWq
+bro
+bwa
+bwY
+bwY
+bwY
+bCl
+bCn
+aWd
+aSt
+aaU
+bun
+bxl
+awq
+awq
+awq
+awq
+awq
+awq
+awq
+aOe
+aQv
+aaU
+bqX
+bSt
+bqX
+aaU
+cgI
+cgN
+cgN
+cgN
+cgN
+aPg
+aPg
+cgP
+aaU
+aaU
+aaU
+aaU
+cuR
+cGh
+cLO
+cuR
+cvL
+cII
+cgB
+bqr
+bbh
+bPw
+bqq
+brz
+bsL
+bSe
+bJd
+bQp
+byw
+bzG
+bAC
+bCY
+bHD
+cFf
+bEl
+aOF
+bbE
+coX
+bbE
+bbE
+bqS
+bQy
+ceB
+bMn
+bMv
+bMv
+bML
+bMv
+bMv
+bMv
+bML
+bMl
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(122,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+adj
+adF
+adF
+aeq
+afj
+afN
+adF
+adF
+adj
+aaU
+aaU
+act
+abQ
+aeX
+abU
+ale
+alQ
+aol
+ale
+arz
+ash
+ale
+aua
+auF
+ale
+aAL
+aCw
+aPi
+aPi
+bGT
+asJ
+bHj
+bHs
+bHw
+aPF
+bGs
+aAj
+aGx
+cBh
+aHs
+aaU
+aaa
+aaa
+aEQ
+aHn
+aWt
+aWz
+aWW
+aIc
+alZ
+alZ
+aog
+aog
+axV
+axV
+aog
+aog
+alZ
+bvv
+aUh
+cjM
+aVv
+aVv
+bue
+bue
+bxf
+bBY
+bue
+bue
+bue
+aXY
+bCo
+aWd
+cho
+aaU
+bup
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+aRy
+bSO
+aRy
+bfh
+cgJ
+bye
+cmI
+bXa
+bfh
+bfh
+bfh
+cgJ
+aaU
+aaa
+aaa
+aaa
+cuR
+cHZ
+cLQ
+cuR
+bdC
+cIJ
+cgB
+bqr
+bbh
+bPw
+bqq
+cHW
+bsM
+btn
+buj
+bvK
+bts
+bts
+bAD
+bCY
+bHD
+cFf
+bJb
+bJJ
+bKh
+bKz
+bKS
+bLq
+bKz
+bLM
+bKz
+bKz
+bMw
+bMv
+bMv
+bMv
+bMl
+bMl
+bMl
+bMl
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(123,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+adj
+adF
+adX
+aeu
+afk
+afP
+agK
+adF
+adj
+aaa
+aaU
+act
+adv
+aeO
+afW
+ale
+alT
+aom
+apN
+arA
+asn
+atr
+aud
+auG
+ale
+aAO
+asJ
+asJ
+asJ
+asJ
+asJ
+bHk
+bHk
+bHk
+aPF
+aHt
+aKc
+aGx
+cBi
+aHt
+aDM
+aDM
+aDM
+aEQ
+aDM
+aDM
+aDM
+aXa
+bdb
+alZ
+aog
+apB
+aFc
+bfj
+axV
+axV
+apB
+aog
+alZ
+aUh
+aUP
+bCC
+aZb
+bue
+bvc
+bys
+bCc
+bGZ
+bNN
+bue
+aXZ
+aXX
+aWd
+aZo
+aaU
+avv
+ajO
+aGi
+axI
+axI
+axI
+aGi
+aNo
+aPE
+beu
+ajO
+baW
+beK
+bTX
+bWI
+bWN
+cbj
+cdf
+cny
+bXk
+cgL
+cvD
+cvF
+cgJ
+aaU
+aaa
+aaa
+aaa
+aRv
+aaa
+aaa
+bbh
+bdD
+cIK
+cgB
+bqr
+bcT
+bPw
+bqq
+ccm
+bsM
+bto
+buj
+bwf
+byD
+bts
+bAE
+bCY
+bHE
+cAm
+cAt
+cAv
+cFg
+bKz
+bKT
+bLr
+bKT
+bLN
+bMb
+bKz
+bMv
+bMw
+bMv
+bMV
+bMl
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(124,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+adj
+adF
+adX
+aey
+adM
+adY
+agK
+adF
+adj
+aaa
+aac
+acE
+adU
+aeO
+afW
+ale
+alV
+aon
+apO
+arC
+aso
+apO
+aon
+auJ
+ale
+aBz
+aEU
+aGD
+aJF
+aJF
+aJF
+aJF
+bEr
+bEK
+bEK
+bGu
+bHi
+aHa
+cBj
+cBw
+cBF
+cBF
+cBF
+cBF
+cBF
+cCf
+aHG
+aXb
+aVC
+alZ
+aog
+apG
+aFN
+axV
+aLO
+axV
+aRL
+aog
+alZ
+aUh
+aUQ
+aVM
+aVN
+bue
+bvg
+byE
+bCu
+bHa
+bOB
+bue
+aYd
+aYx
+aWd
+aZo
+aaU
+avv
+ajO
+bCv
+axI
+bCF
+axI
+axI
+aNr
+bHp
+bLm
+ajO
+ajO
+aRy
+bUi
+aRy
+bfh
+bfh
+cdh
+bzN
+bYT
+bYS
+cvE
+bYS
+cgJ
+bfh
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+bbh
+bdF
+cIL
+ciF
+bqz
+bdu
+caO
+cov
+ceb
+bsN
+btp
+buj
+cup
+bts
+bts
+ckp
+bqq
+bHG
+cFf
+bJc
+bJL
+cHO
+bKz
+bKU
+bKT
+cIg
+cIj
+bMc
+bKz
+bMv
+bME
+bMv
+bMv
+bMl
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(125,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+adj
+adF
+adX
+aez
+afu
+afT
+agK
+adF
+adj
+aaU
+abz
+acP
+aef
+afg
+agf
+ale
+ale
+ale
+ale
+arD
+asq
+ale
+ale
+ale
+ale
+aBH
+bGz
+ayu
+aim
+aim
+aim
+aim
+aim
+aim
+aim
+aEh
+aEq
+aHp
+aIJ
+aLc
+aQS
+aQS
+aQS
+aQS
+aQS
+aWu
+aWA
+aXd
+bre
+alZ
+apB
+axV
+aGp
+axV
+csC
+axV
+axV
+apB
+alZ
+aSt
+aSt
+cho
+aSt
+bue
+bue
+byF
+bCw
+bue
+bOC
+bue
+cho
+aSt
+ckI
+aSt
+brs
+avv
+ajO
+axI
+avY
+bDw
+bEZ
+bFv
+bGB
+bIF
+bLz
+bNe
+ajO
+bQb
+bUj
+aTh
+bfh
+brb
+bzN
+bzN
+bYU
+cgM
+bYY
+bZb
+cgJ
+bfh
+bfh
+bfh
+bfh
+bfh
+brs
+brs
+bcT
+bdD
+cIM
+ciW
+bqC
+bdu
+bXt
+bqs
+brF
+bsP
+cnk
+csi
+cvu
+cxf
+cxh
+ckD
+bqq
+cPx
+cFh
+bJe
+cea
+cHP
+bKA
+bKV
+bLs
+czL
+cIk
+bMd
+bKz
+bMl
+bMl
+bMl
+bMl
+bMl
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(126,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+adj
+adF
+adF
+aeA
+aeA
+aeA
+adF
+adF
+adj
+aaa
+chH
+acS
+aen
+afi
+agg
+ahj
+ajf
+ajf
+ajf
+aAx
+alN
+ano
+ano
+ano
+auZ
+aBL
+bnH
+axh
+anq
+anq
+anq
+anq
+anq
+anq
+anq
+anq
+bID
+aHu
+aGr
+aOJ
+aOT
+aOT
+aOT
+aOU
+aOU
+aOT
+aXP
+aOT
+aOT
+aOJ
+aog
+axV
+bfj
+axV
+axV
+axV
+axV
+aog
+aSG
+aRh
+aRq
+aRq
+aRq
+aRq
+bvz
+byZ
+bCy
+bvz
+bOV
+aRq
+cjD
+bnU
+btw
+bns
+aya
+avy
+alo
+axZ
+awn
+aIS
+awn
+aJp
+aNz
+aHq
+bki
+bPp
+bPU
+bQi
+bUU
+bWJ
+bWP
+cbV
+bzR
+cvB
+bOz
+cwd
+bYZ
+bZc
+cgQ
+bUt
+bUt
+bUt
+bUt
+bZe
+brL
+brL
+bVW
+bVW
+cIN
+cjV
+bdu
+bdu
+bXu
+bqq
+brH
+bsQ
+col
+bul
+cws
+cxg
+czM
+bBs
+bCY
+bHI
+cFf
+bJc
+bJN
+cHO
+bKz
+bKW
+bLt
+cso
+cIl
+bMe
+bKz
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(127,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaU
+adj
+adj
+adF
+adF
+adF
+adF
+adF
+adj
+adj
+aaa
+abz
+acX
+agh
+agB
+aim
+aim
+aim
+aim
+aim
+aqs
+aqu
+aim
+aim
+awc
+axx
+ayN
+aAA
+aBM
+aCq
+aDx
+apy
+arV
+apy
+axg
+ceu
+anq
+bID
+aHu
+aGr
+aOT
+aPS
+aSb
+aTi
+aUd
+aTi
+aWs
+aYb
+ban
+bdd
+aOJ
+aog
+ayK
+bfk
+axV
+axV
+bfj
+axV
+apB
+aSH
+aSt
+aSt
+aTs
+cho
+aSt
+bue
+bzD
+bCE
+bue
+aSt
+aSt
+aSt
+aSt
+cpG
+aSt
+brs
+avv
+ajO
+axI
+avY
+bDU
+bFf
+bGg
+bGD
+bJk
+bLC
+bPK
+bPV
+bQT
+bVq
+cpM
+bfh
+cbY
+cdn
+cpf
+bYU
+cgM
+bYY
+bRx
+cgJ
+bfh
+bfh
+bfh
+bfh
+bfh
+brs
+brs
+bcT
+cIv
+cIO
+cgB
+bTv
+bcT
+bQE
+bqq
+bqq
+bqq
+com
+bqq
+cws
+byD
+czP
+cxf
+czW
+cAc
+cFi
+bMF
+bNF
+cHQ
+bKz
+bKT
+bLr
+bLt
+cIm
+bMf
+bKz
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(128,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaU
+adj
+adj
+adj
+adj
+adj
+adj
+adj
+aaU
+aaa
+acb
+aft
+agz
+adt
+abB
+afE
+afE
+afE
+afE
+aFu
+aeO
+aeY
+aeY
+aeY
+aeY
+aBN
+awN
+awN
+anq
+anT
+anT
+anT
+anT
+anT
+anT
+cex
+bNp
+aFC
+aFF
+aOU
+aQt
+aSf
+aTj
+aTv
+aTv
+aTv
+aYi
+baU
+bdh
+aOJ
+aog
+aog
+axV
+aHV
+aRr
+axV
+aog
+aog
+aSH
+beG
+aaU
+aaU
+aaU
+aaU
+aRv
+aaU
+aaU
+aRv
+aaU
+aaU
+aaU
+aWj
+aSq
+aWj
+aaU
+avv
+ajO
+aze
+azJ
+bDW
+azJ
+aNh
+aOI
+bKx
+bmv
+ajO
+ajO
+aRy
+bVC
+aRy
+bfh
+bfh
+bBR
+cqf
+bYX
+bYS
+cvE
+bYS
+cgJ
+bfh
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+bbh
+cIw
+bjm
+cgB
+bYW
+bcT
+bQE
+bqq
+cox
+cNV
+cpI
+csK
+cKi
+cvR
+bzH
+bts
+bCY
+bHJ
+bIt
+bJf
+bJO
+cKp
+cHS
+cHU
+cIb
+cvv
+cIn
+bMg
+bKz
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(129,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+abz
+acP
+aef
+acS
+abC
+ahY
+ajg
+abI
+acQ
+aHr
+aeO
+aeY
+ahB
+aiY
+aeY
+aCk
+aeY
+aeY
+anq
+aof
+cpq
+asa
+aoL
+anT
+anT
+cey
+bRF
+aFC
+aFF
+aOU
+aQu
+aSf
+aTv
+aTv
+aTv
+aTv
+aYj
+ban
+bdl
+aOJ
+alZ
+apB
+aog
+aog
+aog
+aog
+apB
+alZ
+aSH
+aaa
+aaa
+aaa
+aaa
+aaa
+aWR
+aaa
+aaa
+aWR
+aaa
+aaa
+aaa
+aaU
+aSq
+aaU
+aaa
+avv
+ajO
+aGi
+axI
+aIX
+axI
+aGi
+aPf
+aZP
+bmH
+aYZ
+bht
+bcY
+bVD
+beC
+cgF
+bfh
+bBS
+cqh
+bXk
+cvC
+cvD
+cvF
+cgJ
+aaU
+aaa
+aaa
+aaa
+aWR
+aaa
+aaa
+bbh
+cIx
+bjm
+cgB
+bbh
+bbh
+bQE
+bqq
+brJ
+bsU
+crg
+bqq
+cyN
+bqq
+bzJ
+czv
+bqq
+bHK
+bIu
+bJh
+byQ
+cHR
+bKC
+bKY
+bKY
+bKY
+cIo
+bKz
+bKz
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(130,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aai
+ade
+aev
+act
+acQ
+aiy
+ajk
+aqR
+ats
+aLb
+aeB
+aeY
+ams
+ahC
+akS
+aCo
+aor
+aeY
+anI
+aoL
+anT
+asa
+bEz
+bES
+bES
+bGv
+ccg
+aFC
+ago
+aOT
+aQz
+aSf
+aTw
+aTv
+aTv
+aTv
+aYM
+bbi
+aOT
+aOT
+aOJ
+aOJ
+aOJ
+bmF
+bnT
+aRJ
+aRJ
+aRJ
+chm
+aaU
+aaU
+aaU
+aaU
+aaa
+btT
+bzE
+btZ
+btT
+aaa
+aaa
+aaa
+aaU
+aSq
+aaU
+aaa
+buv
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+ajO
+aQa
+ajO
+bmM
+bcZ
+bVF
+bTS
+cgG
+bfh
+bEo
+cqm
+bZa
+bfh
+bfh
+bfh
+cgJ
+aaU
+aaa
+aaa
+aaa
+ctG
+cIh
+ctJ
+ctG
+cIy
+bjm
+cgB
+bbh
+bpm
+bQE
+bqq
+brK
+bua
+btv
+bqq
+cyO
+byN
+bzK
+czw
+bDa
+coe
+bIv
+bJi
+bDa
+czw
+byQ
+cHV
+cIc
+cIc
+cIp
+bxj
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(131,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+acQ
+aiD
+ajq
+arc
+atJ
+bmp
+bGi
+aeY
+ahF
+apx
+akU
+aCp
+aor
+aeY
+anL
+aoU
+anT
+anT
+anT
+anT
+anT
+cex
+bRF
+aFC
+aFF
+aOU
+aQB
+aSf
+aTv
+aTv
+aUU
+aTv
+aYj
+ban
+bdO
+bfv
+bfv
+bfv
+bkW
+bmJ
+bof
+aQJ
+aQJ
+aQJ
+aQJ
+aQJ
+aQJ
+aRZ
+aaU
+aaa
+bvB
+bzF
+bCR
+btT
+btT
+bvB
+btT
+btT
+cjE
+aaU
+aaa
+bux
+bxl
+azq
+aCU
+aCU
+aCU
+aCU
+aCU
+bbu
+aQj
+ajO
+ajO
+bdi
+bWm
+cjI
+cgH
+cgN
+cgO
+cgN
+cgN
+cgN
+aPg
+aPg
+cgK
+aaU
+aTx
+ctG
+ctG
+ctG
+cIi
+cLR
+ctG
+cIy
+bjm
+cmn
+bWZ
+bXj
+bXv
+bqq
+bqq
+bqq
+bqq
+bqq
+cyP
+byQ
+bzS
+czw
+bDb
+bBu
+crX
+czI
+bBu
+cKq
+cHT
+cPy
+cId
+bLD
+coA
+bxj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(132,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+ajw
+acQ
+acQ
+acQ
+acQ
+acQ
+ahD
+asr
+aeY
+ahG
+apM
+akV
+aqv
+aor
+aeY
+anP
+aqP
+apz
+asK
+apz
+btk
+cev
+anq
+ccq
+aFC
+aFF
+aOU
+aQI
+aSf
+aTv
+aTv
+aTv
+aTv
+aZa
+bbi
+aOT
+bfy
+bgJ
+bjL
+blD
+bmK
+boi
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aSq
+aaU
+aaa
+btT
+bzM
+bCT
+bHc
+bQt
+bUg
+cch
+ccy
+aSq
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cjH
+aaa
+aaU
+bWv
+aaU
+aaa
+aaU
+aZB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+ctJ
+cuS
+cvq
+cIq
+cMU
+cvr
+cIw
+bjm
+cgB
+bbh
+coC
+bpO
+bpE
+bpE
+bpE
+bpE
+bpE
+cyQ
+byQ
+cjr
+czx
+czC
+czG
+bIw
+czJ
+bBu
+bKm
+byQ
+cHX
+cKP
+cOM
+cOM
+cOM
+cOM
+cOM
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(133,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ajw
+ajw
+aki
+alg
+alY
+aoo
+ajw
+bAt
+aeO
+aeY
+aeY
+apZ
+aeY
+aeY
+aeY
+aeY
+anq
+anq
+anq
+anq
+anq
+anq
+anq
+anq
+ccz
+aHv
+aFF
+aOT
+aQP
+aSf
+aTv
+aTv
+aTv
+aTv
+aZc
+bbH
+bdP
+bdP
+bgR
+bdP
+aOJ
+aPN
+bes
+aaU
+aye
+aye
+bQe
+aye
+aaU
+aSq
+aaU
+btT
+btT
+bzP
+bCZ
+bKl
+bQW
+bUp
+cci
+btZ
+aSq
+rTW
+kxw
+kxw
+tpQ
+kxw
+tpQ
+kxw
+kxw
+kxw
+kxw
+kxw
+kxw
+xqa
+aaa
+aaU
+bWv
+aaU
+aaa
+aaU
+aZB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+ctK
+cuT
+cuT
+cuT
+cMV
+cNo
+cIz
+bWO
+cIX
+bZh
+bZh
+bZh
+bZh
+bZh
+bsV
+bze
+bpD
+cyR
+byQ
+crq
+csp
+bPS
+bQc
+bQj
+bQo
+bJP
+bKn
+byQ
+cHY
+cyS
+cOM
+cOQ
+cOV
+cOZ
+cOM
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(134,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+cpB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+apv
+apv
+crP
+ajw
+ajX
+akk
+ali
+amn
+aop
+aqb
+bEI
+bGj
+aff
+ahH
+aqG
+akW
+any
+aos
+apk
+atQ
+atL
+atk
+bBd
+bFN
+atM
+bFR
+aff
+cfe
+aIk
+aIU
+aOX
+aQQ
+aSf
+aTv
+aTv
+aUW
+aTv
+aZc
+aVf
+bdP
+bfF
+bha
+bdP
+abp
+aPN
+bes
+aaU
+aye
+aaU
+aaU
+aaU
+aWj
+aSu
+aRZ
+btT
+bwh
+bAe
+bDD
+bKr
+bRl
+bUL
+btT
+btT
+cjE
+opd
+aaU
+aaU
+cdV
+cdV
+cdV
+cdV
+cdV
+cdV
+cdV
+cdV
+cdV
+cgi
+cgD
+cdV
+chy
+chN
+bWQ
+bWQ
+cdo
+aPg
+aPg
+cet
+bpL
+bBO
+bBO
+bBO
+bBO
+ctG
+ctG
+cvr
+ctG
+ctG
+ctG
+cIy
+bjW
+cKO
+bZh
+bZk
+bZn
+bZq
+bZh
+bIC
+bpD
+cmL
+cyS
+byQ
+byQ
+byQ
+byQ
+byQ
+byQ
+bKk
+byQ
+byQ
+byQ
+cOD
+cIe
+cON
+cOR
+cOW
+cPa
+cOM
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(135,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aYp
+cdc
+crQ
+ajF
+akc
+akm
+alk
+amH
+aoz
+ajw
+agA
+alP
+anA
+aot
+aqK
+avo
+aCs
+aFo
+aot
+aot
+aot
+aot
+bCO
+ahJ
+ahJ
+ahJ
+ahz
+bRF
+aEu
+aJc
+aPa
+aQR
+aSz
+aTz
+aTz
+aVb
+aTz
+aZg
+aVf
+bdW
+bfJ
+bhc
+bdP
+abp
+aPN
+bes
+aaU
+aye
+aaU
+aWj
+aWj
+aWj
+aSv
+aSu
+buk
+bwz
+bAi
+bEe
+bKL
+bRE
+bUY
+ccj
+aSw
+aaW
+opd
+aaa
+aaa
+aaa
+aye
+aaU
+ceR
+cfa
+cfo
+cfp
+cfC
+cdV
+cgl
+cgR
+chr
+chz
+chX
+cdV
+cdV
+ckJ
+cdV
+cdV
+cdV
+bpN
+bCa
+bSo
+bSv
+cfl
+ctX
+cuU
+cwr
+cIr
+cMW
+ctG
+cIA
+cIP
+cIY
+cJf
+cJg
+cNC
+bZo
+bZs
+bXN
+bJp
+bJp
+cyT
+bPs
+bYC
+bPN
+bPN
+bPN
+bPN
+cAu
+cCh
+cCh
+cCh
+cIa
+cIf
+cOO
+cOS
+cOX
+cPb
+cOY
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(136,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+agd
+cdc
+crR
+ajF
+akf
+akh
+ali
+amR
+ajw
+ajw
+bGc
+aeO
+aff
+ahS
+ajQ
+axO
+anX
+aoC
+apl
+ahJ
+cpd
+ahJ
+aqG
+bED
+bET
+bET
+bGw
+chQ
+cAV
+aJc
+aOT
+aQX
+aSE
+aTC
+aUe
+aVf
+aVf
+aSE
+bcd
+bdY
+bfM
+bhg
+bdP
+abp
+aPN
+bey
+aaU
+aye
+aaU
+aaU
+aaU
+aWj
+aWj
+aWj
+btT
+bwB
+bAm
+bEh
+bLo
+bSz
+bVa
+btT
+aaU
+aby
+opd
+aaa
+aaa
+aaa
+aye
+aaU
+ceR
+cff
+cfo
+cfA
+cfH
+cfW
+cgo
+cgS
+chr
+chA
+chY
+ciY
+ckt
+clY
+cnx
+cpK
+cdV
+bBE
+bCa
+bSp
+bSw
+cfl
+cuu
+cuV
+cwE
+cuV
+cMX
+ctG
+bdG
+cIM
+coa
+cwH
+cyq
+cyw
+cJh
+bZh
+bsY
+btx
+bum
+cyU
+czd
+czj
+blp
+blp
+bme
+bxj
+bxj
+bxj
+bxj
+bxj
+bxj
+bxj
+cOM
+cOM
+cOY
+cOY
+cOY
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(137,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aYp
+cdc
+crR
+ajF
+akh
+akh
+alp
+amT
+ajw
+awN
+bGc
+ahI
+aff
+ahW
+ajQ
+ayi
+anX
+aoC
+aqh
+ahJ
+ahJ
+ahJ
+aqG
+bEE
+bFQ
+bFS
+ahz
+aAj
+cAW
+aJC
+aOT
+aRc
+aOT
+aOT
+aOT
+aOU
+aOU
+aOT
+aOT
+bdP
+bdP
+bhl
+bdP
+abp
+aPN
+bes
+aaU
+bQe
+aye
+aye
+aye
+aaU
+aWj
+bnS
+buq
+bwC
+bAr
+bEx
+bMz
+bSD
+bVu
+bvB
+aaU
+aby
+opd
+aaa
+aaa
+aaa
+aye
+aaU
+ceR
+cfa
+cfo
+cfB
+cfH
+cfW
+cgo
+cgU
+chs
+chs
+chZ
+ciZ
+cku
+cmf
+cnK
+cnK
+cdV
+bBO
+bUB
+bSq
+bVf
+cfm
+cuw
+cuV
+cuV
+cuV
+cMY
+ctG
+bdH
+cIM
+coi
+bZh
+bZh
+bZh
+bZh
+bZh
+bsZ
+bsZ
+bsZ
+bxj
+byU
+czk
+blp
+coy
+cdd
+aYp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(138,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aax
+aax
+aax
+aax
+aax
+apv
+crS
+ajw
+ajw
+akx
+ajw
+anc
+ajw
+axe
+bGc
+aeO
+ahz
+aiw
+ajQ
+alL
+anX
+aoC
+aqi
+ahJ
+ahJ
+azK
+bDo
+bFK
+bFK
+bFT
+aff
+aAj
+cAW
+aJQ
+aHO
+aRB
+aIO
+aTG
+aUj
+aVi
+aWD
+aZh
+aTG
+aaU
+aaU
+cuA
+cuy
+bcc
+bcO
+bes
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aTy
+btT
+btT
+bwL
+bwL
+bEY
+bMB
+bSF
+bVA
+btT
+aaU
+aby
+opd
+aaa
+aaa
+aaa
+aye
+aaU
+ceR
+cff
+cfp
+cfC
+cfI
+cdV
+cgp
+chb
+cht
+cht
+cia
+cjh
+ckw
+cmg
+cof
+cof
+cpY
+cwq
+cwV
+cAU
+cfh
+cos
+cuF
+cva
+cyp
+cuV
+cMZ
+cvr
+bdG
+cIM
+cgB
+coF
+bcT
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+bxj
+byU
+czk
+blp
+ctH
+cdd
+csc
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(139,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aar
+aTd
+aWj
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aax
+aaX
+abs
+abs
+abu
+cqV
+csa
+acs
+adu
+adQ
+ajw
+anf
+ajw
+awN
+bGc
+aeO
+ahz
+aiw
+ara
+ays
+anX
+aoC
+arm
+ahJ
+atM
+aAl
+bDO
+bFL
+bFL
+bFU
+ahz
+aAj
+cAW
+aKD
+aLT
+aSo
+aSP
+aTI
+aUl
+aVn
+aWL
+aWL
+bce
+aaa
+aaa
+aaa
+aaU
+brs
+aPR
+cux
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+btZ
+bus
+bwQ
+bBk
+bFa
+bMI
+bSI
+bXp
+btT
+aaU
+abH
+aZp
+kxL
+aZp
+ceq
+cet
+cet
+cet
+cet
+cfr
+cfE
+cfJ
+cdV
+cgu
+chg
+chs
+chB
+cib
+cjs
+cky
+cmE
+cok
+cok
+cdV
+bBO
+bPv
+cBd
+cfi
+cfm
+cuH
+cvb
+cvd
+cvd
+cNa
+cNp
+ber
+cIQ
+cgB
+bqN
+bcT
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+bxj
+byU
+czk
+blp
+cqT
+cdd
+aYp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(140,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aax
+aaZ
+abt
+abt
+abK
+cqV
+abN
+abL
+adQ
+adQ
+ajw
+ajw
+ajw
+awN
+bGc
+bGl
+ahA
+aiQ
+ard
+alI
+anX
+aoC
+aqh
+ahJ
+apP
+aAl
+bFL
+cqi
+bEU
+bFV
+bGx
+chW
+cAX
+cBo
+aMw
+aSp
+aTA
+aTK
+aUm
+aVo
+aWN
+aZk
+bcg
+aaa
+aaa
+aaa
+aaU
+brs
+aQp
+cux
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+bud
+buE
+bwS
+bBv
+bFb
+bMS
+bBv
+bXM
+bvB
+bWq
+acY
+adz
+opd
+aaa
+aaU
+cdt
+ceK
+ceK
+cdV
+cft
+cfF
+cfK
+cgb
+cgw
+chj
+chr
+chD
+cid
+cju
+ckz
+cmG
+coT
+cpL
+cpZ
+bBO
+cxd
+cBd
+cfj
+cfl
+cuI
+cuV
+cyv
+cuV
+cNb
+cNq
+beW
+cIM
+cgB
+bqV
+bcT
+aaU
+aaa
+aaa
+aaU
+aaU
+aaU
+blp
+btK
+czl
+blp
+cqU
+bBZ
+bme
+bme
+bme
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(141,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aax
+aba
+aax
+aax
+aax
+aax
+aax
+acR
+abL
+adQ
+aQO
+aei
+atZ
+aFv
+bGd
+bGm
+aff
+aiR
+arg
+amu
+amu
+api
+ahJ
+ahJ
+ahJ
+aAl
+bFL
+bFL
+bFO
+bFU
+ahz
+aCm
+aEx
+aGJ
+aNm
+cBK
+aJr
+aTG
+aUn
+aVp
+aWT
+aZl
+aTG
+aaU
+aaU
+aaU
+aaU
+abp
+aQq
+bes
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aTy
+btT
+btT
+bwT
+bBB
+bGb
+bMW
+bTF
+bXM
+btT
+btT
+btT
+cjF
+qnM
+cdt
+cdt
+cdt
+ceL
+ceT
+cdV
+cfu
+cdV
+cdV
+cdV
+cdV
+chk
+chu
+cdV
+cdV
+cdV
+ckA
+cmY
+cdV
+cdV
+cdV
+bBO
+bSm
+cBk
+cfk
+cfl
+cuJ
+cvc
+cyz
+cuV
+cNc
+cNr
+byT
+cIR
+coj
+byT
+bzY
+aaU
+aaa
+aaa
+blp
+bme
+bme
+blp
+btL
+czm
+bzq
+bui
+clZ
+buo
+buo
+bme
+bme
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(142,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aax
+aax
+aea
+adQ
+adQ
+aer
+auc
+apv
+agJ
+amp
+aff
+aiS
+art
+amv
+akR
+apj
+atA
+atK
+aqg
+aCO
+bFM
+bFP
+bFM
+bFW
+aff
+azP
+azP
+aGQ
+aNv
+cBL
+bhR
+aTM
+aTM
+aTG
+aTG
+aTG
+aTG
+aaa
+aaa
+aaa
+aaU
+abp
+aQr
+bes
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+bnS
+buq
+bwZ
+bBC
+bGk
+bNf
+bBv
+bXM
+ccn
+ccA
+ccy
+aTl
+opd
+cdG
+cer
+cew
+ceM
+ceV
+asU
+arB
+asw
+atb
+avl
+awW
+aMa
+aOE
+aQc
+clz
+aMa
+aQd
+cks
+crv
+crx
+aeI
+bBO
+bSn
+cBl
+bSn
+cfl
+cuK
+cuV
+cyz
+cuV
+cNd
+cNs
+beY
+cIM
+cgB
+btl
+bBl
+aaU
+aaa
+aaa
+bme
+bnY
+bpT
+bqL
+btL
+czn
+czy
+bui
+bui
+bui
+bui
+bui
+bme
+bme
+bme
+bme
+bme
+bme
+bme
+bOn
+bme
+bOo
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(143,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aax
+afO
+ala
+abL
+aet
+aeK
+afU
+ahe
+aiJ
+ahz
+ahz
+arI
+ahz
+ahz
+aff
+aff
+aff
+aff
+aff
+ahz
+ahz
+ahz
+aff
+aff
+aka
+aka
+aCe
+aNB
+aDh
+aka
+aql
+aql
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abp
+aQr
+beD
+cuy
+cuy
+cuz
+aaa
+aaa
+aaU
+aWj
+aaU
+btT
+bxa
+bBF
+bGy
+bNk
+bUc
+bXM
+cco
+ccE
+btZ
+aTl
+opd
+cdU
+ces
+ces
+ceN
+ceW
+cJv
+mkx
+cJw
+cJN
+asR
+awe
+awX
+azE
+azE
+aOQ
+avC
+aQe
+ckx
+cqP
+crl
+csQ
+cqs
+cqG
+crt
+csx
+ctl
+cuL
+cvd
+cAp
+cvd
+cNe
+cNt
+beZ
+cIS
+coz
+bty
+bBl
+aaU
+aaU
+aaU
+bme
+bog
+bpT
+bqM
+btL
+czm
+bui
+cOw
+bui
+bui
+bui
+bui
+bui
+bui
+bui
+bNW
+bOa
+bOe
+bOi
+cnd
+bOl
+bOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(144,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+adn
+ahZ
+amP
+aea
+adQ
+ayk
+aGZ
+aKn
+bEG
+bEX
+bEX
+asg
+bEX
+bEX
+aXv
+bEM
+bEO
+bEP
+amE
+asp
+auh
+ayG
+aNX
+aEA
+bvi
+bvF
+bvL
+aXn
+cBM
+bDS
+bER
+aql
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aVs
+aVs
+aUq
+bmO
+aUq
+aVs
+aVs
+cuA
+cuz
+aaa
+aaU
+aWj
+aaU
+btT
+btT
+bBH
+btT
+bNl
+bvB
+bXM
+btT
+btT
+btT
+cjF
+qnM
+cdt
+cdt
+cdt
+ceO
+ceX
+aeI
+aQx
+asD
+asR
+asR
+avE
+axt
+axt
+axt
+axt
+avE
+aQe
+asR
+aSK
+aSr
+aeI
+cqt
+bwP
+cBn
+cBH
+ctE
+cuM
+cvg
+cBa
+cJk
+cNf
+cNu
+bSy
+cIT
+coD
+bub
+bIo
+aaU
+cNK
+aaU
+bme
+bom
+bpT
+bqU
+btL
+czo
+bPO
+bPT
+bQd
+bQd
+bQr
+bJo
+bNQ
+bNQ
+bNQ
+bNX
+bOa
+bOe
+bOg
+bui
+cnf
+bme
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(145,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aae
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+adq
+aib
+asy
+aea
+ann
+azG
+aag
+ael
+agQ
+aje
+akM
+anz
+akM
+akM
+apq
+aqZ
+avT
+avT
+aCN
+avT
+avT
+aAb
+avT
+aCN
+avT
+avT
+aHl
+aNY
+cBN
+cbZ
+bEa
+amy
+aaa
+aaa
+aaa
+aaa
+aaa
+aVs
+aVs
+bjO
+bmk
+bmU
+bok
+bpr
+aVs
+aVs
+cuA
+cuy
+cuz
+aWj
+aaU
+aaa
+btT
+bBV
+btT
+bNn
+btT
+bYf
+btT
+aaU
+aVt
+adN
+opd
+aaa
+aaU
+cdt
+ceP
+ceK
+aeI
+arN
+arF
+asS
+auC
+avH
+axM
+axM
+axM
+axM
+aPh
+aQk
+asS
+aSK
+aTW
+aVB
+cqu
+bwR
+cBx
+cBI
+ctG
+ctG
+cvh
+cBm
+cJy
+cNg
+cNs
+cIB
+cIM
+bXX
+bty
+bBl
+aaU
+bIm
+aaU
+blp
+bme
+bme
+brv
+btL
+czp
+bAW
+bBm
+bui
+bui
+bQs
+bNH
+bme
+bme
+bme
+bme
+bOb
+bme
+bOh
+cne
+bOm
+bOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(146,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+adn
+ajh
+amP
+aea
+adQ
+ayk
+aGZ
+aKn
+alR
+bqQ
+aox
+anD
+aox
+aox
+aFp
+aHh
+aJS
+aMy
+axG
+aJS
+aHh
+aHh
+aHh
+aCz
+aHh
+aHh
+cBq
+aRT
+cBO
+cca
+bEa
+amy
+aaU
+aaU
+aaU
+aaU
+aaU
+aVs
+bhq
+bjY
+bka
+bmV
+bka
+bps
+ang
+ang
+ang
+ang
+cuB
+aWj
+aaU
+aaa
+btT
+bBX
+btT
+btZ
+btT
+aaa
+aaU
+aaU
+aTl
+qeq
+rbJ
+guK
+hXk
+hXk
+cJp
+hXk
+hXk
+tjb
+asx
+asS
+auD
+avI
+axQ
+beH
+axQ
+avQ
+avI
+avE
+asS
+aSL
+aTZ
+aWV
+cqv
+bwV
+cBy
+cBJ
+cdy
+cuN
+cvi
+cBB
+cvi
+cuN
+cNv
+bhT
+cIM
+bXX
+bty
+bzr
+byT
+cfc
+bcT
+bmf
+bon
+bpU
+brN
+btL
+czq
+bme
+bBm
+bui
+bui
+ctV
+blp
+bme
+aaU
+aaU
+aaU
+aaU
+bme
+bme
+bme
+bme
+bme
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(147,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aax
+ajm
+aoQ
+ach
+adQ
+aFr
+aKg
+ahO
+aml
+aoy
+aoy
+aoA
+awt
+aoy
+aqL
+anB
+alS
+aMC
+apR
+atP
+aji
+azm
+azm
+aCB
+azm
+aRM
+bar
+aSD
+cBP
+bDV
+bEb
+aUq
+aVs
+aVs
+aVs
+aVs
+aVs
+aUq
+bhv
+bka
+bka
+bnb
+boV
+bpt
+aRF
+cog
+bnt
+ang
+cuC
+cuD
+cuD
+cuy
+cuE
+cuD
+cuy
+cuy
+cuE
+cuy
+cuy
+cuD
+cuG
+eUF
+opd
+aej
+agc
+agT
+cJq
+apm
+aqS
+arP
+cph
+asS
+auN
+avK
+axR
+aAy
+aOk
+aOR
+aPm
+aPm
+bBo
+aTm
+aUb
+bAR
+bnf
+bwR
+cBx
+cCR
+cdz
+bPX
+cdJ
+cdM
+cdJ
+cdO
+bRA
+bbY
+cIM
+bZl
+cwO
+cyr
+cyx
+cyr
+cyr
+cyD
+cyJ
+cyJ
+cyV
+cze
+czr
+bme
+bBm
+bui
+bui
+bJq
+bme
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(148,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aax
+aax
+aea
+adQ
+adQ
+adQ
+aFt
+apv
+aiF
+amr
+aqL
+abX
+aoD
+aoj
+bEq
+aqL
+aji
+aKs
+aNl
+apU
+atP
+aji
+aBT
+buP
+aCD
+bvl
+bvZ
+bas
+aSD
+cBQ
+ccb
+cBV
+aUw
+aVx
+aWU
+aZm
+aWU
+aVx
+bfO
+aVx
+aWU
+bms
+bnd
+boX
+bpH
+ang
+coh
+cfy
+clO
+aRu
+aSv
+aSy
+aSw
+aTk
+aQJ
+aQJ
+aQJ
+aQJ
+aQJ
+aQJ
+aRZ
+aVK
+cxa
+bsz
+sVC
+aNH
+bbQ
+cJA
+aqO
+anE
+anE
+anE
+aQT
+ayb
+axM
+aCZ
+aRG
+aOl
+aOV
+avQ
+cmX
+aRp
+bkJ
+aUf
+aeI
+bnp
+cmO
+bQq
+cmm
+cri
+cdH
+cdK
+cPu
+cdr
+bqw
+cdS
+bUs
+cIU
+coL
+cyk
+cys
+baN
+baN
+baN
+coq
+box
+box
+cyW
+cpy
+bPD
+bAY
+bBw
+bCA
+cql
+bJq
+bNI
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(149,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aax
+aba
+aax
+aax
+aax
+aax
+aax
+adr
+ach
+adQ
+acT
+afR
+apv
+apv
+ajb
+amt
+anH
+akd
+aoG
+bvp
+aDm
+aFP
+aHh
+aKB
+aNu
+aou
+aou
+aji
+aBW
+aBX
+aCF
+buX
+bAh
+bat
+aSD
+cBP
+bDX
+cBW
+aUq
+aVs
+aVs
+aVs
+aVs
+aVs
+aUq
+bhO
+bka
+bka
+bno
+boZ
+bpJ
+apd
+bfI
+clH
+ang
+aRX
+aSw
+aSM
+aaU
+aTl
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aSu
+aYU
+cxb
+opd
+aej
+agC
+aoJ
+cJB
+apm
+aqT
+arQ
+cpi
+asS
+aTQ
+avU
+ayn
+aFU
+aOq
+aOY
+aPO
+aPO
+bCW
+bvY
+asB
+bAR
+bnq
+bEW
+bQF
+cah
+cdA
+bRn
+cdL
+cmv
+cdL
+cdQ
+bVb
+bUD
+cIV
+coN
+cyl
+bzI
+bHn
+bzI
+bzI
+cor
+boy
+boy
+cyX
+btO
+bPE
+bme
+bBm
+ccx
+bui
+bJq
+bme
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(150,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aax
+abb
+abs
+abs
+abu
+cqV
+acg
+ach
+adQ
+adQ
+adS
+adS
+adS
+adV
+ajd
+ajj
+aqL
+azr
+bwl
+bEn
+anJ
+aqL
+awh
+amx
+aNU
+aqj
+aji
+aji
+aFV
+aiv
+aMj
+amA
+bDu
+bat
+aSD
+cBR
+cbZ
+cBX
+amy
+aaU
+aaU
+aaU
+aaU
+aaU
+aVs
+bid
+bkv
+bka
+bnw
+bka
+brA
+ang
+ang
+ang
+ang
+aaU
+aaU
+aaU
+aaU
+aTl
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+rTW
+aTl
+cdp
+wPS
+aaU
+atF
+atF
+cJC
+atF
+atF
+arO
+asC
+asS
+auY
+avV
+ayo
+bCb
+ayo
+avQ
+avV
+aQs
+asS
+bwJ
+aTZ
+aXh
+cqw
+bSx
+bQG
+cbd
+cdB
+biL
+bkD
+cop
+bkD
+biL
+boa
+bhT
+cIW
+cIZ
+cym
+bzU
+bzV
+cuo
+bcT
+bnO
+boz
+bqp
+cyY
+btL
+bPF
+bme
+bBm
+ccx
+bui
+crj
+blp
+bme
+aaU
+aaU
+aaU
+aaU
+bme
+bme
+bme
+bme
+bme
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(151,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aav
+aTd
+aWj
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aax
+abg
+abt
+abt
+abK
+cqV
+csb
+ads
+ajK
+adQ
+adS
+aeG
+adS
+afd
+ajI
+afK
+aqL
+aqL
+aqL
+aqL
+aqL
+aqL
+afK
+amy
+aOD
+aql
+awB
+boO
+aAp
+aCn
+amA
+bvD
+amy
+bas
+aSD
+cBN
+cca
+cBX
+amy
+aaa
+aaa
+aaa
+aaa
+aaa
+aVs
+aVs
+bkw
+bmt
+bnB
+bmt
+bpZ
+aVs
+aVs
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aTl
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+opd
+aTl
+cxc
+aaa
+aaa
+aRD
+ciT
+cJD
+cmu
+atF
+arY
+arF
+asS
+avc
+awa
+clA
+aLF
+axM
+axM
+aPP
+crs
+asS
+cpj
+aUr
+bmT
+cqx
+bwP
+bQH
+cdj
+cdC
+biQ
+cjY
+cot
+blt
+cse
+bob
+cjz
+bjm
+cIM
+cym
+bIp
+aaU
+bIx
+aaU
+blp
+bme
+bme
+cyZ
+btL
+bPG
+bBa
+bBm
+ccx
+bui
+bJR
+bNJ
+bme
+bme
+bme
+bme
+bOb
+bme
+bOi
+bOj
+bOl
+bOp
+cnE
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(152,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aax
+aax
+aax
+aax
+aax
+apv
+crS
+adS
+adS
+aeW
+adS
+apo
+adS
+axL
+agZ
+aeZ
+agm
+aqW
+ahX
+aiU
+afZ
+agl
+apW
+amz
+amz
+aqm
+amz
+amz
+aAq
+bGa
+bGG
+bGG
+cAY
+cBq
+aRT
+cBS
+cBU
+cBY
+aqn
+acK
+acK
+acK
+aqn
+aaa
+aaa
+aVs
+aVs
+aVs
+bnB
+aVs
+aVs
+aVs
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aTl
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+opd
+aTl
+cxc
+aaa
+aaa
+atF
+ciU
+cJE
+cJG
+cJI
+cJK
+cJL
+cJO
+asR
+avE
+bev
+cbJ
+aOx
+aPc
+avE
+aQe
+asR
+crw
+aUt
+bpK
+cqy
+bEW
+bQF
+cdk
+bmQ
+biR
+bjy
+cou
+csd
+byr
+bob
+bhY
+bXW
+cJa
+cyn
+bQR
+aaU
+cNL
+aaU
+bme
+bpi
+bpT
+cza
+btL
+bPH
+bBc
+bBM
+ccx
+bui
+bui
+bJR
+bNR
+bNR
+bNR
+bNY
+bOa
+bOe
+bOg
+bui
+cnf
+bme
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(153,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aYp
+cdc
+crR
+adT
+aeo
+afm
+aiA
+apt
+bve
+afS
+ahK
+aix
+ajM
+akH
+akH
+asP
+akH
+akH
+bhj
+bEJ
+cfS
+bEJ
+cml
+amA
+amA
+amA
+aMl
+bcW
+bvH
+bvL
+aXn
+cBM
+bDY
+bEd
+aqn
+cCd
+aRE
+aSY
+acK
+aaa
+aaa
+aaa
+aaU
+anK
+cAL
+anK
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aTl
+aaU
+aaU
+aaa
+aWR
+aaa
+aaU
+opd
+aTl
+cxc
+atF
+atF
+atF
+cmh
+cmp
+atF
+atF
+asi
+asi
+cJP
+asR
+awe
+clB
+asS
+asS
+aPd
+avC
+aQe
+aRR
+cpj
+aSr
+aeI
+cqz
+cqI
+bQM
+cdl
+cdu
+cdN
+ciK
+ctd
+cwC
+bmw
+bob
+bia
+bXX
+cIM
+bty
+bIp
+aaU
+aaU
+aaU
+bme
+bog
+bpT
+czb
+btL
+bPI
+bUx
+bUx
+ccK
+cOw
+bui
+bui
+bui
+bui
+bui
+bNZ
+bOa
+bOe
+bOh
+cnc
+bOm
+bOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(154,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+agd
+cdc
+crR
+adT
+aeE
+afm
+afm
+apT
+adS
+bEu
+ahN
+afa
+aha
+ahx
+ahx
+asT
+ahx
+ahs
+afK
+aGR
+aAa
+are
+cmo
+avP
+aAW
+aDq
+aNn
+bvh
+aql
+aCe
+aYK
+aDr
+aci
+aqn
+aqn
+aRj
+aND
+aVX
+anK
+anK
+aHA
+aHA
+anK
+anK
+cAM
+bCM
+anK
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aTl
+aWj
+aMI
+cgd
+bwW
+beE
+bwW
+opd
+aTl
+cxc
+atF
+aus
+aus
+aus
+aus
+cmw
+atF
+asv
+asN
+cJQ
+avA
+azh
+aOd
+aOM
+aOC
+aPe
+clC
+aQC
+aRV
+cJl
+cko
+aeI
+bpv
+cqJ
+cdg
+cds
+cdv
+biQ
+bXf
+bkG
+cwP
+cDh
+bob
+bib
+bXX
+cIM
+bty
+bIp
+aaU
+aaa
+aaa
+bme
+bpj
+bpT
+czc
+cze
+czs
+czy
+bui
+bui
+bui
+bui
+bui
+bme
+bme
+bme
+bme
+bme
+bme
+bme
+bOn
+bme
+bOo
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(155,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aYp
+cdc
+crT
+adT
+aeF
+afp
+aiV
+anv
+aec
+axS
+ahN
+afK
+ahb
+ahx
+aia
+atm
+alX
+ahx
+arx
+amF
+afK
+aka
+cmA
+aka
+aka
+aka
+aka
+aka
+aka
+aLU
+aNE
+aRd
+acK
+aHL
+aIN
+aMK
+aOc
+aSA
+aVa
+aWn
+bsR
+bsR
+bCG
+bCK
+cAN
+bCN
+anK
+aaa
+aaa
+aaa
+aaa
+arE
+arE
+arE
+arE
+bxP
+arE
+aMI
+cgX
+chC
+cik
+bwW
+bGh
+bGQ
+bHe
+bHA
+aus
+bcM
+cmi
+cmq
+aus
+atF
+aqU
+asG
+cJR
+aws
+aqU
+aqU
+aMz
+chE
+cie
+cjK
+ckm
+cnh
+ckm
+ckm
+ckm
+ckm
+cqK
+cru
+csz
+cdw
+biQ
+biQ
+biQ
+biQ
+biQ
+boc
+bzV
+bYm
+cJb
+bzV
+bUn
+aaU
+aaa
+aaa
+blp
+bme
+bme
+blp
+btL
+bPH
+bBe
+bui
+cma
+bHt
+bHt
+bme
+bme
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(156,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+adq
+adq
+adq
+aec
+afM
+agx
+aja
+aoM
+aec
+agi
+ahN
+afK
+ahc
+ahx
+ahx
+ajs
+atO
+ayl
+bml
+ary
+afK
+atR
+cmC
+aSU
+aka
+aER
+aFO
+aGF
+aKf
+aMb
+aPl
+aRf
+adR
+arX
+aKj
+aVy
+aRx
+aSF
+aHA
+arH
+aIC
+aIK
+aKk
+aTU
+cAO
+cCA
+anK
+aaU
+aaU
+aaU
+aaU
+arE
+bGJ
+bFe
+atf
+bxS
+bzo
+aMI
+cgY
+bwW
+cil
+bwW
+bwW
+bCj
+anr
+bHO
+aOP
+biu
+cmj
+cmr
+cmx
+atF
+cfv
+asI
+cJS
+clx
+awA
+chl
+aNx
+chF
+cir
+cjL
+ckB
+cno
+cpa
+cpR
+cqa
+ckm
+ckm
+csq
+ckm
+bUN
+biV
+cKg
+cLn
+cLz
+bmz
+biV
+cdP
+bXX
+cIM
+bqE
+bcT
+aaU
+aaa
+aaa
+aaU
+aaU
+aaU
+blp
+cmy
+cmz
+blp
+cqU
+blp
+bme
+bme
+bme
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(157,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aav
+aaU
+aWj
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aec
+aec
+bEp
+bEp
+bEp
+bEp
+bEp
+ahN
+afK
+ahd
+ahx
+ahx
+ajD
+atC
+ahx
+bmr
+bPu
+ciN
+cly
+aCv
+cwZ
+aka
+aEX
+aFQ
+aGI
+aKf
+aMb
+aPx
+aLj
+anh
+azo
+aKp
+aND
+aND
+aWH
+aHx
+asc
+aID
+bvG
+aKl
+bCQ
+cAP
+anK
+anK
+arE
+atf
+aKT
+arE
+arE
+att
+cqr
+arE
+byt
+bzo
+aMI
+cgZ
+cif
+cim
+cmD
+ciS
+bCj
+anr
+bHO
+aus
+blX
+cmk
+cms
+aus
+atF
+ast
+asI
+cJT
+cJZ
+cKa
+cKb
+cKc
+chG
+ciD
+cjU
+ckC
+cnr
+cpk
+cpS
+cqc
+cqA
+cqL
+css
+ckm
+bUO
+cdR
+ciL
+cLr
+cwQ
+bPx
+bod
+beW
+bXX
+cIM
+bqD
+bcT
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+bxw
+bza
+bMQ
+blp
+cnf
+cdd
+aYp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(158,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+abp
+aav
+aTd
+aWj
+abp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aee
+aeP
+aeP
+aqA
+aeP
+agX
+ajS
+aHj
+bvm
+ahP
+ahN
+afK
+afK
+ahT
+ahx
+ahx
+ahx
+ahx
+bvo
+amM
+apW
+ars
+cwN
+azR
+aBG
+aEY
+aFR
+aGU
+aKm
+aMc
+aPx
+aRg
+aGH
+aIf
+aLs
+aRA
+bkT
+aWJ
+aHz
+btb
+aID
+bvR
+bCI
+bDJ
+cAM
+bCP
+boA
+aYC
+brf
+att
+att
+att
+btP
+bwo
+arE
+byu
+arE
+aMI
+cha
+cig
+cck
+bwW
+ciV
+bCj
+anr
+bHO
+aus
+aus
+aus
+aus
+aus
+atF
+asI
+asI
+cJU
+avw
+bRd
+azg
+aNQ
+chI
+ciH
+cjX
+ckF
+cns
+cpo
+cpT
+cqn
+cqC
+cqM
+cst
+ckm
+bUG
+cfn
+con
+coo
+cwR
+bPy
+bVY
+bWn
+bYO
+cJc
+bXb
+bcT
+bpP
+bpP
+bpP
+bpP
+bpP
+bpP
+cro
+bza
+bMQ
+blp
+ctH
+cdd
+csc
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(159,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aav
+aaU
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+adx
+aaU
+aaU
+aaU
+aaV
+ahP
+ahP
+ahP
+bzp
+ahP
+ahN
+aiB
+afK
+ahU
+ait
+ajE
+amC
+ahx
+bvo
+aIm
+apW
+arv
+aub
+azS
+aBG
+aEZ
+aFS
+aHd
+aKr
+aMf
+aPy
+aRi
+aqc
+aqn
+aci
+aci
+aci
+aXQ
+aHy
+bDc
+aIF
+aKi
+beQ
+cnm
+cAQ
+cAS
+buO
+buR
+bwu
+bAd
+aMo
+aMG
+bVt
+bwp
+bvb
+byv
+ceQ
+cgT
+chc
+bmY
+ccI
+bmY
+anm
+asu
+anr
+bHO
+atF
+atF
+atF
+atF
+atF
+atF
+aqU
+asM
+cfL
+aqU
+aqU
+aqU
+aqU
+chK
+chK
+ckm
+ckm
+ckm
+cpA
+cpU
+cqo
+cqD
+cqO
+ckm
+ckm
+bjZ
+blq
+bCz
+bCz
+cgc
+cxi
+cAA
+cAI
+cAZ
+cJd
+cBp
+ccV
+cIt
+cIu
+bMq
+bJl
+bLK
+bYe
+bHL
+bYt
+bYD
+blp
+crU
+cdd
+aYp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(160,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+adx
+aaU
+aaa
+aaa
+aaU
+ahP
+akn
+aJR
+bEg
+ahP
+aif
+ass
+afK
+afK
+afK
+afa
+afa
+anF
+bvq
+afK
+aAa
+aka
+atS
+aka
+aql
+aFa
+aFW
+aHm
+aKf
+aMr
+aPA
+aLj
+aPx
+aTN
+avm
+aVH
+aWX
+aZF
+anK
+aHz
+aIG
+aHA
+boA
+cAF
+bCL
+boA
+anK
+bqb
+avm
+brj
+bsO
+avm
+bVz
+bVK
+bGX
+cbR
+ceS
+bmW
+chv
+bwW
+cin
+aMD
+arp
+bCk
+aqk
+bIT
+qlJ
+qlJ
+bcG
+cmt
+auR
+aYL
+cfw
+bap
+cJW
+bcI
+bbF
+bbN
+bbN
+bbO
+bbL
+bcb
+aaU
+ckm
+cpF
+cpV
+cqp
+cqE
+crb
+ckm
+bgl
+bgl
+bjb
+bjb
+bkI
+cic
+cxj
+biV
+bie
+bZl
+cqQ
+bqD
+cBr
+aRY
+bcE
+aRY
+aRY
+btz
+cOe
+btB
+btB
+btA
+blp
+blp
+blp
+blp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(161,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abe
+aaU
+aaa
+aaa
+aaU
+aio
+akZ
+biO
+bEt
+bEA
+aik
+ajl
+ajP
+alh
+aqN
+ato
+aut
+ayw
+bDB
+bSu
+cjm
+asm
+aqo
+aAo
+bDi
+aFb
+aGf
+aHw
+aKu
+aME
+aPC
+aRk
+aSI
+aSI
+aUJ
+aVU
+aVU
+aZH
+bch
+bea
+bfS
+biX
+bkK
+bmA
+bnE
+bch
+aSI
+bqk
+brg
+bry
+btq
+avm
+aMI
+aMI
+bwW
+bwW
+bwW
+aMI
+chw
+bwW
+ciq
+bwW
+ciV
+bwW
+aaU
+bIY
+bHg
+bMK
+anr
+bcI
+bgw
+bgw
+bgw
+bdk
+cJX
+bcI
+bbJ
+bbF
+bbN
+bbN
+bbN
+bbO
+bbV
+ckm
+cie
+ckm
+cqq
+ckm
+crm
+ckm
+bgn
+bhn
+cuO
+bhn
+bhn
+cic
+cDi
+biV
+bdH
+bWO
+cqR
+bqE
+cBr
+aST
+bcF
+ckc
+bnQ
+btA
+bMQ
+bta
+bta
+bta
+bta
+bta
+aaa
+aaa
+aaa
+bNK
+bNS
+bNU
+aaa
+bNK
+bNS
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(162,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaU
+aio
+alb
+aKe
+bEw
+ahP
+bEB
+bGo
+afA
+ahN
+aiC
+alz
+avt
+azx
+bEv
+bZM
+avt
+avd
+bDp
+bDv
+aiC
+aFd
+aGj
+aHB
+aKz
+aMM
+aPG
+aRn
+aSO
+aUa
+aUN
+aWf
+aWY
+aZL
+bcq
+bcq
+bgb
+aSO
+bkQ
+bmB
+bnF
+bpc
+bqa
+bnF
+brh
+brE
+btt
+btJ
+bmS
+bwq
+bwX
+bwX
+bzL
+bwX
+bBp
+bwW
+ciq
+bwW
+ciV
+bwW
+aaU
+aaa
+aaa
+bJv
+cJx
+cJF
+bPh
+cJJ
+bsX
+cJM
+cJY
+bcI
+bbJ
+bbL
+bbN
+bbN
+bbN
+bcb
+ciI
+bjI
+bkB
+bmP
+bKj
+bbV
+bfG
+bge
+bgB
+bho
+bjc
+bjK
+bkI
+csm
+cxk
+biV
+cvN
+bjm
+bXX
+bqD
+cBs
+aTc
+bdL
+biE
+bpV
+bLZ
+bNt
+bta
+btQ
+bxN
+bDh
+bHM
+aaa
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(163,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaU
+ahP
+alf
+afh
+bEy
+ahP
+aiz
+aiz
+aiz
+ahN
+aiC
+ake
+avt
+aDD
+aqp
+aui
+aAm
+bvw
+bDq
+aul
+bDA
+bDA
+bDA
+bDA
+avm
+aMO
+aLr
+aRs
+aSS
+and
+amY
+amY
+amY
+amY
+amY
+amY
+bvu
+aJd
+aKQ
+aJd
+aKQ
+aJd
+aJd
+bql
+bri
+brW
+btu
+bsO
+aMI
+aMI
+aMI
+bAk
+aMI
+aMI
+bzn
+aMD
+ciq
+bwW
+ciV
+bwW
+aaU
+aaa
+aaa
+bJv
+anr
+bcI
+sdp
+bgw
+bgw
+uwK
+bhm
+bcI
+bbL
+bbN
+bbN
+bbN
+bbN
+bbO
+bcl
+bAa
+bkM
+bja
+bKB
+bcl
+bfG
+bge
+bge
+bge
+bge
+bge
+bge
+cwS
+cxl
+biV
+bdI
+cNx
+bXX
+bqD
+cBr
+bcu
+csS
+biH
+bnQ
+btB
+bNV
+bta
+bzd
+ceh
+bzd
+bHM
+aaa
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(164,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaU
+ahP
+ahP
+ahP
+ahP
+ahP
+aaU
+aaU
+aiz
+ahN
+aiC
+alc
+avu
+aDD
+aqx
+awv
+bvr
+bDn
+bDr
+bDx
+bDC
+bDF
+bDE
+bDK
+avm
+aMT
+aLr
+aRt
+aTe
+amY
+aBq
+aCQ
+aFe
+aCJ
+bFn
+bFn
+aJd
+aJi
+aKU
+cCs
+aLD
+aLR
+aJd
+aZD
+bwE
+bIX
+csB
+bwj
+bmW
+bEQ
+bxb
+aNW
+cCF
+bmW
+bzn
+bwW
+ciq
+bwW
+ciV
+bwW
+aaU
+aaa
+aaa
+bJv
+anr
+bcI
+aXp
+cwx
+bTJ
+bhs
+bmm
+bcI
+aaU
+aaa
+aaa
+aaa
+bbV
+bbV
+bbV
+bhk
+bwi
+blN
+bKX
+ciI
+bfG
+bbV
+bgH
+bhp
+bjd
+bZi
+boG
+cxe
+cxm
+bgf
+cIC
+bjm
+bXX
+bqD
+cBC
+bcv
+bdL
+bkf
+bWY
+btC
+bPm
+bta
+btV
+cfG
+btV
+bta
+aaa
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(165,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aiz
+amw
+aiC
+ald
+avZ
+aGY
+aqQ
+ayc
+bvA
+bZN
+bDs
+aaB
+aEg
+bDG
+bDI
+bDK
+avm
+aMW
+aLr
+aRK
+amY
+amY
+aBs
+ane
+anp
+aCJ
+bFn
+bFn
+aJd
+aJj
+bdq
+bet
+bmu
+aUs
+buQ
+bvk
+bwF
+bVi
+cvJ
+bwn
+bmW
+bws
+aNW
+bxd
+bBK
+bAS
+bCq
+bwW
+ciq
+bwW
+ciV
+bwW
+aaU
+aaa
+aaa
+bJv
+anr
+bcI
+bcI
+cwy
+bcI
+jMO
+bcI
+bcI
+aaU
+aaa
+aaa
+aaa
+bbV
+bfN
+bhk
+bhk
+bwt
+bja
+bLn
+bbV
+bfG
+bbV
+bgI
+bDl
+cuP
+bjM
+ccW
+cgs
+cxn
+bgf
+bBU
+bnN
+crc
+buw
+aRY
+bcD
+bcF
+bkz
+bnQ
+btD
+bPm
+bxH
+bzc
+bBg
+coW
+bxH
+bxH
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(166,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aiz
+amD
+aiC
+afV
+amK
+aHc
+bEH
+azV
+bvC
+cbQ
+bDs
+bDz
+aNe
+bDH
+bDA
+bDA
+avm
+aNs
+aLr
+aRN
+aSe
+aAC
+aAD
+anp
+ane
+aCJ
+bGe
+bFn
+aJd
+aJl
+aKV
+bfz
+bmx
+aLp
+aML
+aZe
+bhF
+bXc
+bhG
+bhH
+bhL
+bio
+biD
+cAq
+bkE
+bmW
+bBq
+bwW
+ciq
+aMD
+ciV
+bwW
+aaU
+aaa
+aaa
+bJv
+anr
+aaU
+aaa
+cwz
+aaa
+bfW
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+bbV
+bgg
+bgK
+bhk
+bwG
+bja
+bLv
+bbV
+bfG
+bbV
+bjf
+bkh
+blu
+bbV
+ccZ
+cgs
+cxo
+bgf
+bgf
+bez
+cxB
+bhf
+aRY
+aRY
+aRY
+aRY
+aRY
+btz
+bPn
+btE
+bzk
+crp
+bBf
+bDf
+bHM
+aaa
+aaa
+aaU
+cnM
+aaU
+aaa
+aaU
+cnM
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(167,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+adx
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+asd
+ahN
+aiC
+alH
+amK
+aDD
+aqp
+aAg
+bCJ
+cjn
+bDt
+bDA
+bDA
+bDA
+bDA
+aHC
+aKW
+aNt
+aLr
+aRN
+amG
+aAD
+aBs
+awP
+anp
+aCJ
+bFn
+bFn
+aJd
+bDe
+aKX
+bet
+bmX
+aLS
+aML
+baY
+bwO
+bEi
+cwt
+czQ
+czX
+cAd
+cAn
+cAr
+bkL
+bmW
+bBr
+bwW
+ciq
+bwW
+ciV
+bwW
+aMD
+bwW
+aaa
+bIY
+bMX
+tpQ
+xqa
+aaa
+cwD
+bfW
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+ciI
+bgv
+bhk
+bhk
+bxe
+bja
+bLA
+bbV
+bfG
+ciJ
+bUk
+bUH
+bVg
+bVn
+cfd
+cgs
+cxp
+ckq
+bgf
+beB
+cxC
+bgq
+cjA
+biy
+bjN
+bkO
+biZ
+bXY
+bPm
+bxH
+bFF
+csU
+bBg
+bDg
+bHM
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(168,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cjj
+cjj
+cjj
+cjj
+cjj
+ahN
+aiC
+aiC
+amL
+aQZ
+aqx
+bvw
+bvw
+bvw
+ant
+aoN
+aJH
+anS
+amc
+aHX
+aLd
+aNE
+aPJ
+aRN
+amG
+ane
+anp
+csy
+aBs
+aCJ
+aCJ
+amY
+bvu
+aJd
+aKQ
+bfB
+brt
+aJd
+bvu
+bAO
+bxc
+bFd
+czN
+czR
+buh
+bwv
+bxh
+byP
+bkN
+bmN
+bng
+bnM
+boh
+bpI
+bqg
+bqu
+bra
+bwW
+bwW
+aaU
+bdR
+cJr
+opd
+aaa
+aaa
+cwF
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+bbV
+bbV
+bbV
+bhk
+bwt
+bBi
+bLO
+bbV
+bTV
+bgf
+bTk
+bUR
+cfO
+cja
+cja
+cgt
+cxq
+cxv
+bgf
+bVj
+cxC
+bgq
+bhX
+biz
+bjP
+cJi
+biZ
+btz
+bPm
+clW
+bPM
+bzd
+bBg
+bDh
+bHM
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(169,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aao
+aaO
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+aaO
+ado
+aaa
+cjj
+cjk
+anb
+ajo
+ajV
+anG
+aro
+avb
+awb
+awI
+amc
+agU
+air
+aZK
+anN
+awD
+aoO
+azT
+bso
+aIb
+aLe
+aNP
+aPL
+aRP
+aKq
+aLM
+aMu
+aNy
+aSd
+aTq
+aVY
+bfH
+aJd
+btm
+bdo
+bet
+bse
+aMd
+aJd
+bdA
+bxg
+bvs
+aMA
+czS
+buW
+bwx
+aMA
+aMA
+aMA
+aWE
+bzn
+bwW
+ciq
+bwW
+ciV
+bwW
+brr
+bCr
+cwv
+bAQ
+bAQ
+cJs
+bPr
+bRo
+bam
+cwG
+bam
+bYl
+bam
+bam
+bam
+bam
+bbX
+bbX
+bcn
+cnv
+bxL
+cpW
+bLP
+buH
+bBz
+bPY
+bUd
+cdx
+cga
+cgq
+cgq
+cjb
+cxr
+cxw
+cxx
+cxz
+cxD
+cxF
+bhX
+biJ
+bjQ
+ccF
+biZ
+btz
+bPm
+bxH
+bSf
+bzd
+bQD
+bxH
+bxH
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(170,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aWj
+aaU
+aaa
+aaa
+aaa
+aao
+aaP
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+aaP
+ado
+aaa
+cjj
+agG
+aiu
+ajv
+akb
+anZ
+arG
+avf
+awf
+awU
+amc
+awV
+aoO
+aqq
+aqq
+avh
+azX
+aCV
+cra
+aIp
+aLh
+aOf
+aPQ
+aRS
+amY
+aAF
+aMv
+aDI
+aBs
+aAD
+aBs
+aGB
+bsS
+bvT
+bdp
+cAJ
+cAR
+buZ
+aJd
+bhe
+bxp
+bvx
+aMA
+czT
+bva
+bwy
+bxi
+cCE
+cAw
+aWF
+bBD
+bmS
+ciM
+bmS
+ciX
+bmY
+brP
+brX
+bsh
+bsu
+bsx
+cJt
+sVC
+bRp
+sVC
+bsT
+sVC
+bZp
+sVC
+sVC
+sVC
+frb
+bvM
+bvW
+bvX
+bwd
+bxU
+bBT
+bLQ
+bLT
+bQh
+bLT
+bLT
+cdF
+bVl
+bZd
+cfX
+ciP
+cjB
+boj
+bcl
+bfc
+bgs
+cxG
+bif
+cnA
+csg
+btW
+biZ
+bUW
+bRr
+bxH
+bzj
+bzW
+bBx
+bxH
+aaU
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(171,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+ahv
+aWj
+aaU
+aaa
+aaa
+aaa
+aao
+aaP
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+aaP
+ado
+aaU
+cjj
+amO
+afo
+cjl
+cjj
+bGq
+bEf
+avm
+awb
+awI
+amN
+anM
+aoO
+aoO
+aoO
+aoO
+aoO
+aFI
+amc
+aIt
+aLj
+aOg
+and
+aoE
+amY
+aAG
+ane
+aEi
+aAD
+aBs
+aAD
+aMV
+aNq
+aOi
+bdp
+bfK
+bsW
+cCB
+aJd
+bhi
+byM
+blP
+aMA
+czU
+czY
+cAe
+cAo
+cAs
+cAx
+bhU
+biN
+biY
+bne
+cAz
+bqf
+bqH
+brY
+bsi
+bsv
+bsy
+bsy
+bsD
+bsI
+bRv
+bsD
+bww
+bsD
+caf
+bsD
+bsD
+bsD
+bAA
+bBL
+bBL
+bCm
+bwg
+bzC
+boC
+bLR
+bTx
+bUb
+bUh
+bUm
+bUZ
+bVm
+cbM
+cfY
+cJz
+cjC
+bhr
+ckv
+bdV
+bgt
+cxC
+bhX
+biJ
+bjQ
+cxT
+biZ
+btz
+bPm
+bxH
+bxH
+bxH
+bxH
+bxH
+aaU
+aaa
+aaa
+bNK
+bYQ
+bNU
+aaa
+bNK
+bYQ
+bNU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(172,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aav
+abM
+acj
+aaU
+aaa
+aaa
+aaa
+aao
+aaP
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+aaP
+ado
+aaa
+cjj
+cjj
+cjp
+cjp
+cjp
+aoK
+aoK
+aoK
+awb
+awI
+amN
+aii
+aoO
+aqr
+aSR
+awE
+aoO
+brx
+amc
+aIw
+aLj
+aOj
+amY
+aoZ
+anp
+ane
+anp
+aDI
+aBs
+aAD
+aBs
+aHe
+aJd
+bmI
+aZi
+bfL
+btM
+bvf
+aJd
+bhw
+byO
+bBb
+aMA
+btc
+czZ
+cAf
+bVH
+bwA
+bAj
+aMB
+bzn
+bwW
+cgY
+bwW
+cil
+bmW
+bCt
+aMI
+aMI
+aaa
+aaa
+aaa
+bfW
+bJv
+aaa
+cwI
+aaa
+cbG
+aaU
+aaa
+aaa
+aaa
+aaa
+bbV
+bhu
+bhr
+bbT
+bdZ
+brR
+bbT
+bUf
+bbT
+bbT
+bbT
+bUP
+bbT
+bbT
+cJV
+bbT
+bbT
+bbT
+brQ
+bgt
+cxH
+cxN
+cxP
+cxQ
+cxU
+cxW
+cxX
+bPm
+clX
+bZu
+cmM
+bYn
+bZt
+bHN
+bHN
+bHN
+bNL
+cnM
+aaU
+aaU
+aaU
+cnM
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(173,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aav
+abR
+acj
+aaU
+aaa
+aaa
+aaa
+aao
+aaP
+ado
+aaa
+aaa
+aaU
+adx
+aaU
+aaa
+aaa
+aao
+aaP
+ado
+aaa
+aaa
+aaU
+aoK
+asA
+atu
+aue
+auO
+arM
+awb
+axa
+amc
+anO
+arn
+aqt
+atX
+ayV
+aJJ
+brC
+bsq
+aIy
+aLo
+aOm
+amY
+aqd
+ane
+aBS
+aBV
+aEk
+aBV
+aBS
+aAD
+aHf
+aJd
+aJd
+bco
+aJd
+aJd
+aJd
+bvu
+bdA
+bxp
+bvs
+aMA
+aNc
+bvQ
+cAg
+bxr
+byY
+cvP
+aMB
+bzn
+bjz
+cgZ
+bmS
+bJS
+bmW
+bmW
+aMI
+aaU
+aaU
+aaU
+aaU
+bfW
+opd
+aaU
+cwJ
+aaU
+cbG
+aaU
+aaU
+aaU
+bbT
+bbT
+bbT
+bbT
+bbT
+bbT
+bkm
+brV
+bgh
+bfU
+bFD
+bgO
+bhA
+bUQ
+cvj
+cDg
+cKd
+ben
+bor
+bcV
+bfe
+bgt
+cxI
+ctv
+biM
+bjS
+bkS
+cpJ
+btF
+cxY
+bZt
+bZv
+bYn
+bYn
+bZy
+bHN
+bHz
+ckn
+cnL
+cnN
+bOk
+bOk
+bOk
+cnP
+cnR
+bOk
+bOk
+bOq
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(174,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaD
+abM
+acm
+aaU
+aaU
+aaU
+aaU
+aao
+aaP
+ado
+aaa
+aaa
+aaU
+adx
+aaU
+aaa
+aaa
+aao
+aaP
+ado
+aaU
+aoK
+aoK
+aoK
+asE
+atw
+atw
+atw
+arM
+awg
+axb
+amc
+amc
+amc
+amc
+amc
+azF
+aJY
+brD
+bsr
+aIB
+aLj
+aOy
+amY
+apw
+anp
+aBS
+ayy
+aEj
+ayy
+aBS
+aBs
+aHi
+aJk
+aJd
+bdm
+aLA
+aJd
+aMk
+aMk
+bdA
+bxp
+bvI
+aMB
+aMA
+aMA
+cAh
+aMA
+bzf
+bAp
+aMB
+bzn
+bxG
+bxF
+bxG
+bXs
+cii
+cjg
+cji
+aaa
+aaa
+aaa
+aaa
+bgi
+fui
+aaa
+cwK
+aaa
+cbG
+aaa
+aaa
+aaa
+cmH
+crh
+bVx
+bVw
+bVy
+bVw
+cwc
+buz
+bAu
+bCx
+bPZ
+bUl
+bVc
+cte
+cvk
+cDm
+cvk
+ctp
+ctq
+bkX
+ctr
+bZw
+cxJ
+bez
+biZ
+biZ
+biZ
+biZ
+btz
+cxY
+bZt
+bZt
+bZx
+bZt
+bZt
+bHN
+bHP
+bHN
+bNL
+aaU
+aaU
+aaU
+aaU
+cnQ
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(175,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaY
+abV
+acq
+acJ
+adk
+adG
+aaU
+aaU
+aaT
+aaU
+aaU
+aaU
+aaU
+aaT
+aaU
+aaU
+aaU
+aaU
+aaT
+aaU
+aaU
+aoS
+aqe
+aqe
+asQ
+atx
+auf
+auU
+avp
+awi
+axd
+ayv
+azD
+ayv
+aBD
+aCx
+aDw
+aEl
+aFg
+aGk
+aIW
+aLq
+aOG
+amY
+apa
+ane
+aBS
+ayy
+bvE
+ayy
+aBS
+aAD
+aHJ
+amY
+aJd
+bds
+bfQ
+bug
+buL
+buL
+bhC
+byS
+aMn
+aMD
+bEj
+bvU
+cAi
+aMA
+bzg
+aMA
+aMB
+bzn
+bwW
+bxF
+aMD
+cih
+bAK
+bjz
+aMI
+aZG
+aaa
+aaa
+aaa
+bgi
+fui
+aaa
+cwI
+aaa
+cbG
+aaa
+aaa
+aTx
+bbT
+bbT
+bbT
+bbU
+bcV
+crd
+bej
+bej
+bfs
+bfY
+bej
+bla
+bVh
+ctf
+bkc
+bcV
+bcV
+bnh
+bnh
+bcV
+bcA
+bgZ
+cxK
+ctw
+bjl
+bGC
+bpQ
+bpQ
+cOa
+bYg
+cya
+cya
+cya
+cya
+cye
+bHN
+bIy
+bHN
+bJQ
+bJQ
+aaa
+aaa
+bNK
+bYR
+bNU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(176,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+cpB
+aaa
+aaa
+aaa
+aaU
+abr
+abM
+abr
+abM
+adl
+abM
+aZG
+aaU
+abc
+aeP
+aeP
+aeP
+aeP
+ajc
+aeP
+aeP
+aeP
+aeP
+avr
+aaU
+aTx
+aoK
+aoK
+arK
+asZ
+aty
+auj
+auX
+avq
+awj
+axn
+ayx
+azH
+aAr
+aAr
+aCI
+aDy
+aEn
+aFs
+aAr
+aIY
+aLr
+amG
+amG
+apL
+anp
+aBS
+aBu
+aEj
+aBu
+aBS
+aBs
+aGB
+aJf
+aJd
+bdw
+bfT
+aJd
+aMk
+aMk
+bdA
+bzQ
+ccl
+czO
+czV
+czV
+cAj
+bxs
+bzl
+bkg
+bPq
+bzn
+bwW
+byW
+bCB
+ciX
+cij
+cip
+cpE
+aaa
+aaa
+aaa
+aaa
+bgi
+fui
+aaa
+cwK
+aaa
+cbG
+aaa
+aaa
+aaa
+cpp
+cgj
+cgk
+cgj
+bcj
+cgj
+ben
+bej
+cqF
+bfZ
+bej
+bAB
+bVk
+ctg
+cjd
+ctm
+blQ
+bbw
+bci
+bci
+bfP
+cqj
+cxL
+bir
+biZ
+cjt
+bXE
+bLZ
+bLZ
+bYh
+bYn
+bYn
+bYE
+cni
+cyf
+cgy
+bIz
+cmc
+ceJ
+bJQ
+aaa
+aaa
+bNK
+bYR
+bNU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(177,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abD
+abW
+acr
+acW
+adw
+adH
+aaU
+aaU
+abe
+aaU
+aaU
+aaU
+aaU
+abe
+aaU
+aaU
+aaU
+aaU
+abe
+aaU
+aaU
+aoT
+aqy
+arL
+asZ
+atD
+auk
+atD
+avs
+awl
+axq
+ayB
+avb
+aAs
+aBJ
+awp
+awx
+aEr
+aFx
+aGl
+aIZ
+aLr
+amG
+ane
+anp
+ane
+azt
+aBv
+aEj
+aFh
+aKN
+aAD
+aGN
+aJg
+amY
+aOt
+bfV
+amY
+aMs
+aMs
+bhD
+aOA
+bvN
+aMs
+bmo
+cAa
+cAk
+bxy
+bzi
+cAy
+bTU
+bzn
+aMD
+bzh
+bwW
+ciV
+aMI
+aMI
+aMI
+bLw
+bMM
+bMM
+bMM
+ifC
+bJv
+aaU
+cwJ
+aaU
+cbG
+aaU
+aaU
+aaU
+bbT
+bbT
+bbT
+bbT
+bbT
+bdT
+beX
+beU
+beU
+beU
+beU
+bLu
+bVr
+cth
+cje
+ctn
+bcV
+bby
+bck
+bdM
+bdM
+bhb
+bhM
+bis
+bjn
+bjn
+bXF
+bjn
+bjn
+bjn
+bjn
+bjn
+bjn
+bjn
+cyg
+bGF
+bIA
+bIB
+bNO
+bHN
+aaa
+aaa
+bNK
+bYR
+bNU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+abp
+aaa
+aTd
+aaa
+abp
+aaa
+aaa
+aaa
+cpB
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(178,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abE
+abM
+acx
+aaU
+aaU
+aaU
+aaU
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaU
+aoK
+aoK
+aoK
+atd
+atE
+aum
+ava
+avs
+awp
+axD
+ayE
+awp
+awp
+awp
+awp
+aDA
+aEt
+aFA
+aGm
+aIZ
+aLr
+amG
+anp
+aBS
+aBS
+aBS
+ayy
+aEj
+ayy
+aBS
+aBS
+aLG
+aJh
+aLN
+aOu
+cCt
+beA
+aMt
+aNw
+bhE
+btg
+bvO
+bwb
+aMs
+cAb
+cAl
+bxz
+bgP
+bzO
+caD
+bzn
+bjz
+ciG
+bAK
+ciV
+aMI
+aaa
+bJj
+bLS
+kxw
+kxw
+kxw
+bPA
+wPS
+aaa
+cwI
+aaa
+cbI
+mIT
+cJr
+aaa
+aaU
+aaU
+aaU
+aaU
+bbT
+bbT
+bbT
+bfE
+bih
+bkb
+bkj
+bkY
+bVs
+cti
+cje
+cto
+bcV
+bcV
+bcm
+bdV
+bdM
+cqk
+bhP
+biv
+ciR
+bjT
+bXG
+clV
+bjT
+cjf
+btH
+btX
+ckE
+bjn
+cyf
+bHN
+cnS
+bKZ
+bNP
+bHN
+aaa
+aaa
+bNK
+bYR
+bNU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(179,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aav
+abR
+acj
+aaU
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaU
+aaa
+aoK
+ate
+atG
+auq
+atG
+avx
+awp
+axE
+ayH
+azM
+aAt
+awp
+aFl
+aDC
+axU
+aFB
+awx
+aIZ
+aLr
+amG
+ane
+azt
+azu
+aAH
+aBv
+aEk
+ayz
+azu
+azu
+aKN
+aJm
+amY
+aQy
+bgo
+amY
+amY
+amY
+bfX
+btr
+bvP
+bwc
+bmo
+bwk
+bwH
+bxG
+bzm
+bAx
+bBh
+bBG
+bAK
+ciO
+bAK
+ciV
+bAS
+aaa
+bJv
+bMp
+cwA
+cwA
+cwA
+bgM
+cwA
+cwA
+cwL
+cww
+cbL
+cww
+bdR
+mIT
+mIT
+mIT
+mIT
+cJr
+aaa
+aaU
+bbT
+bgk
+bbT
+bkd
+bbT
+bUS
+bVG
+cgn
+cje
+blb
+blR
+bni
+bcA
+bdM
+bdM
+cNA
+bhP
+biv
+bjB
+bjV
+cnB
+csh
+ciE
+bjn
+btI
+buc
+cme
+bjn
+cyf
+bHN
+bHN
+bHN
+bHN
+bHN
+aaa
+aaa
+bNK
+bOd
+bNU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(180,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aav
+abM
+acz
+aaU
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaa
+aoK
+atg
+atG
+aur
+atG
+avz
+awx
+axU
+ayL
+azO
+aAu
+awp
+aCP
+aDG
+cPr
+aFD
+awp
+aJa
+aLr
+amG
+anp
+aBS
+ayy
+ayy
+aBS
+bAZ
+aFn
+aFY
+aFY
+aFn
+aJo
+aLP
+aMJ
+bgp
+buT
+cCC
+buN
+bDj
+bur
+bvS
+bwe
+aMs
+bmW
+bwI
+aMI
+ceG
+bAK
+aMI
+aMI
+aMI
+cjc
+aMI
+cnt
+aMI
+aaa
+bJv
+bMp
+cww
+bMY
+bMY
+bPB
+xoj
+cwB
+cwM
+cww
+cbN
+cww
+aaU
+aaa
+aaa
+aaa
+aaa
+anr
+aaa
+aaU
+bbT
+bEk
+bfD
+bVd
+bkX
+bUT
+bXw
+chd
+cki
+ctt
+blS
+bnn
+bcA
+bdM
+bdM
+bdM
+bhP
+biv
+bjF
+cqB
+bXI
+bnX
+bjn
+bjn
+bjn
+bjn
+bjn
+bjn
+cyh
+boI
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(181,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aRv
+aaa
+aaU
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaa
+aoK
+ath
+atG
+auu
+atG
+avB
+awx
+axU
+ayP
+azU
+aAE
+awp
+aCR
+aDH
+aEz
+aFH
+aGw
+aJb
+aLt
+amY
+anY
+azt
+azu
+azu
+aBv
+aEk
+ayz
+azu
+azu
+aKN
+aAD
+aMe
+bdB
+bgr
+buU
+byo
+apV
+bgj
+buu
+bvV
+aMs
+aMs
+aaU
+bCU
+aMI
+ceG
+bAK
+bAS
+aaa
+aaU
+aaa
+aRv
+aaa
+aaU
+aaa
+bJv
+bMp
+cww
+bMZ
+bMZ
+bPC
+uAY
+cwB
+bUV
+cww
+cge
+cww
+aaU
+cak
+cam
+cak
+aaa
+anr
+aaa
+aaU
+bff
+bgQ
+bff
+bgQ
+bff
+bfC
+bYM
+bjo
+bkk
+ctx
+blV
+bny
+bdK
+bma
+bfR
+bhd
+bhQ
+bpl
+bjn
+bjn
+bjn
+bjn
+bjn
+bRt
+bxO
+bzs
+bzZ
+bBy
+cyi
+boI
+boK
+boK
+boK
+boK
+boK
+boK
+boI
+aaU
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(182,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aaa
+arM
+ati
+arM
+atG
+atG
+avD
+awx
+axY
+ayZ
+azW
+aAT
+aBO
+aCS
+aDJ
+aEB
+aFJ
+awp
+aJs
+aLz
+amY
+anp
+aBS
+aBS
+aBS
+ayy
+aEI
+ayy
+aNa
+aSC
+aSC
+aTB
+aUx
+bdX
+bhV
+buY
+bMm
+amY
+aMs
+buI
+aMs
+aMs
+aaU
+aaU
+bCV
+aMI
+ceH
+aMI
+aMI
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+bJv
+bMp
+cww
+bNa
+bNa
+bPJ
+bRC
+cfx
+bUX
+bVE
+cbT
+cww
+bhI
+bhI
+can
+bhI
+aaa
+anr
+aaa
+aaU
+bfC
+bfb
+cmW
+bic
+cbk
+bfC
+bYN
+bgT
+bgT
+ctA
+bgV
+bgV
+bgT
+bgV
+boM
+boS
+ccv
+boS
+boI
+bqZ
+ctu
+bMH
+btN
+buy
+bRw
+bRz
+cmJ
+bRG
+cyj
+cmb
+bHQ
+bHQ
+bHQ
+bHQ
+bHQ
+bLa
+boK
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(183,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aao
+acv
+ado
+aaa
+aaa
+aao
+abj
+ado
+aaa
+aaa
+aao
+acv
+ado
+aaa
+aaa
+aaa
+arM
+atl
+arM
+arM
+arM
+avs
+awp
+ayg
+aza
+azY
+aBc
+awp
+aCT
+aDK
+aEG
+aFK
+awp
+aJP
+aLC
+amY
+aoa
+ayA
+azv
+aBp
+aCy
+aEM
+aFq
+aNb
+aGA
+aBs
+aAD
+aMF
+bdn
+bdn
+bdn
+bdn
+aCJ
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aVT
+aaa
+bAL
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+bJv
+bMp
+cww
+bNb
+bNb
+bPL
+cwB
+cwB
+cwB
+bVX
+eKM
+cww
+bhI
+bhI
+cao
+bhI
+bhI
+anr
+aaa
+aaU
+bfC
+bgS
+bGL
+bip
+ctz
+bfC
+cbO
+cgE
+bkl
+ctB
+blW
+cxs
+bos
+bgV
+boN
+boT
+bpd
+bpp
+bqy
+cxR
+cxV
+cxV
+cxV
+cxZ
+cxV
+cyb
+cyc
+cyd
+bFg
+bHR
+bHR
+bHR
+bJU
+bHR
+bHR
+bLb
+boK
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(184,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaT
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+arM
+atn
+arM
+aaU
+aaU
+aaU
+awp
+awp
+awp
+awp
+awp
+awp
+aCY
+aDQ
+aEH
+aFL
+awp
+aKb
+aKb
+amY
+amY
+amY
+azw
+amY
+aHK
+aMR
+aMU
+aQV
+amY
+aCJ
+aCJ
+aCJ
+aCJ
+aCJ
+aCJ
+aCJ
+aCJ
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+bJv
+bMp
+cww
+bjE
+bNq
+bQK
+qgO
+chO
+cpN
+bWG
+cJo
+jiZ
+bhI
+cLY
+cap
+cMt
+cau
+anr
+aaa
+aaU
+bfC
+bgU
+cng
+bCH
+bRu
+bUK
+ccu
+che
+ckr
+ctC
+bVo
+cxt
+bVZ
+bgV
+boI
+boU
+cty
+bpf
+bpf
+cxS
+bpY
+btd
+btd
+bDy
+bxR
+btS
+boI
+bBA
+bFh
+boI
+boK
+boK
+boK
+bKo
+bKD
+boK
+boI
+aaU
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(185,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+adx
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaU
+apC
+aqC
+axr
+aAM
+aqC
+apC
+aaU
+aaa
+aaa
+aaU
+amY
+azZ
+amY
+aKI
+aKM
+aBS
+aBS
+aCJ
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+bJv
+bMp
+cww
+bkH
+blz
+bNd
+bNE
+cww
+cpO
+bWG
+cJo
+cMH
+bhI
+cLZ
+caq
+cLZ
+bhI
+anr
+aaa
+aaU
+bfC
+bhB
+bAv
+bPW
+cBz
+bUM
+ccX
+chf
+ckO
+ckO
+ckO
+cxu
+chf
+cxy
+cxA
+cxE
+cxM
+cxO
+cND
+bpf
+brS
+bte
+cdT
+ceZ
+bte
+bzu
+boI
+cJj
+bzt
+boK
+aaU
+aaa
+aaa
+aaa
+cgW
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(186,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abe
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaa
+aaa
+aaU
+apC
+aug
+axs
+aAN
+bsc
+apC
+aaU
+aaa
+aaa
+aaU
+amY
+aAw
+amY
+aCJ
+amY
+aCJ
+aCJ
+aCJ
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+bJv
+bMp
+cww
+cww
+cww
+cww
+cww
+cww
+cww
+cIs
+tyI
+cMJ
+cLX
+cMa
+cMj
+cMu
+cMG
+anr
+aaU
+aaU
+bff
+bfC
+bff
+bfC
+bff
+bfC
+bij
+bhK
+bkn
+cnw
+bkn
+bhK
+bov
+bgV
+boI
+boW
+bpf
+bpu
+bpf
+cty
+brS
+boI
+btS
+ccT
+boI
+bzu
+boI
+bBI
+bFi
+boK
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(187,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+adx
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+apC
+aun
+axs
+aAN
+bsd
+apC
+aaU
+aaU
+aaU
+aaU
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+rTW
+tpQ
+wPS
+bMt
+pgu
+pgu
+pgu
+gGG
+vsO
+chS
+cpQ
+cfM
+cbU
+jXo
+cLm
+cMb
+cas
+cMb
+cMH
+anr
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+bgT
+bhZ
+bhK
+bkn
+bkn
+bkn
+bhK
+bow
+bgT
+boP
+boY
+bpk
+bpf
+bpY
+brd
+brT
+boI
+btS
+ccU
+boI
+bzv
+boI
+boI
+boI
+boI
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(188,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+ady
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+ahu
+ahu
+ahu
+apC
+apC
+auo
+axy
+aBd
+aJI
+apC
+apC
+ahu
+ahu
+ahu
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+aXx
+aXx
+aXx
+aXx
+bfW
+tuF
+lRy
+fti
+cfP
+mEa
+cLV
+chn
+eCy
+chL
+cMv
+cMI
+anr
+aaa
+aaa
+aaU
+aaa
+aaU
+aaU
+aaU
+bgV
+bhZ
+bhK
+bkp
+bhK
+blZ
+bhK
+boB
+bgV
+boI
+boI
+ckK
+ckL
+ckM
+boI
+boI
+boI
+cre
+cow
+boI
+bzw
+boI
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(189,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+ahu
+amU
+aov
+apE
+aqB
+aup
+axs
+aBn
+bbR
+aqB
+apE
+aov
+amU
+ahu
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bca
+bca
+cat
+cKX
+bQN
+nLV
+cLd
+fti
+cfT
+cgg
+cgx
+chp
+chx
+chM
+gDY
+jiZ
+hlV
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+bgT
+bil
+bjq
+bkq
+bld
+biw
+bld
+boB
+bgV
+aaU
+boI
+boK
+boK
+boK
+boI
+aaU
+cNW
+cNX
+cOf
+cNX
+cOm
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(190,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+ahu
+amV
+amV
+apF
+aqC
+adI
+axH
+aBB
+bsg
+aqC
+bsB
+amV
+amV
+ahu
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bRK
+bca
+bZI
+bZR
+bfW
+qHL
+eTZ
+vcb
+uVD
+mqB
+dpO
+tZC
+qWY
+rUl
+cMw
+cfs
+cMP
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+bgT
+bgT
+bjr
+bkr
+ble
+bgT
+bnC
+boD
+bgT
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cNX
+cOf
+cNX
+cOm
+aaU
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+blj
+aaU
+aaU
+aaU
+aaU
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(191,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+all
+amV
+amV
+apI
+bsw
+auw
+axJ
+aBE
+auy
+bsw
+bsm
+amV
+amV
+bsJ
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bca
+bca
+cKQ
+cKY
+bQO
+ony
+xcO
+hKC
+cVO
+sRD
+cMe
+cai
+rdF
+cMk
+ceU
+cMJ
+cxc
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+bgT
+bks
+blg
+bgT
+cgm
+boE
+bgT
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(192,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+alm
+amV
+amV
+apI
+bsA
+auy
+azs
+aBE
+auy
+bsA
+bsm
+amV
+amV
+bsK
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaU
+aXx
+aXx
+aXx
+aXx
+aXx
+bfW
+cww
+bUa
+cMr
+sRD
+cMo
+cgz
+cai
+fkx
+cMl
+cMx
+cMJ
+cxc
+aXx
+aXx
+aXx
+aXx
+aXx
+aaa
+aaU
+aaa
+aaa
+bgT
+bkt
+blh
+bgT
+blh
+boF
+bgT
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(193,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+aln
+amV
+amV
+apJ
+aqC
+auz
+azs
+aBE
+bsj
+aqC
+bsC
+amV
+amV
+aln
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bSb
+bSb
+cKR
+cKX
+bQN
+cLb
+cLe
+cMo
+hMZ
+nAF
+lcD
+cai
+fkx
+mNN
+cLo
+nBM
+cfD
+cKX
+cLt
+bkZ
+bkZ
+aXx
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+cqX
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(194,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+aln
+amV
+amV
+apK
+aqB
+aqB
+azI
+brn
+aqB
+aqB
+bsE
+amV
+amV
+aln
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bSi
+bWp
+bZL
+bZR
+bfW
+cwA
+cLf
+cMo
+iAW
+fIw
+wWH
+ntC
+nEX
+hDz
+cLp
+oMB
+mxW
+bZR
+cay
+caK
+caM
+aXx
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(195,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+alm
+amV
+amV
+amV
+aqI
+aqB
+aGO
+auy
+aqB
+aqI
+amV
+amV
+amV
+bsK
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bSb
+bSb
+cKS
+cKY
+bQO
+cLc
+eIh
+car
+tXV
+tZj
+jml
+cVq
+cMc
+cMm
+cMy
+cML
+cLa
+cKY
+cLu
+bkZ
+bkZ
+aXx
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(196,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+alJ
+amV
+aow
+amV
+amV
+auA
+auy
+auy
+bsk
+amV
+amV
+amV
+amV
+alJ
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaU
+aXx
+aXx
+aXx
+aXx
+aXx
+bfW
+cww
+bhJ
+cMo
+iAW
+cJu
+iAW
+cJH
+cMd
+cMn
+cMz
+cMJ
+aaU
+aXx
+aXx
+aXx
+aXx
+aXx
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(197,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ahu
+ahu
+amV
+amV
+amV
+aqI
+ave
+auy
+bXH
+bsm
+aqI
+amV
+amV
+amV
+ahu
+ahu
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bTH
+bTH
+cKT
+cKX
+bQN
+cLb
+cLh
+cMo
+iAW
+cJu
+hlo
+cJH
+cMe
+cMo
+cLq
+nBM
+cKZ
+cKX
+cLv
+blL
+blL
+aXx
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(198,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+ahu
+amW
+aoI
+amV
+amV
+ave
+aIR
+auy
+bsm
+amV
+amV
+aoI
+bsH
+ahu
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bTI
+bXe
+bZO
+bZR
+fuE
+bWK
+cLi
+xKr
+nvn
+cJu
+iAW
+cJH
+cMe
+cMo
+cMA
+cMN
+aaU
+bZR
+caF
+caL
+caN
+aXx
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(199,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+ahu
+ahu
+ahu
+apX
+aqI
+avk
+aJq
+brp
+bsn
+aqI
+bsF
+ahu
+ahu
+ahu
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bTH
+bTH
+cKU
+cKY
+cLa
+cLc
+fgS
+car
+iAW
+jon
+xjk
+cai
+cMg
+cMq
+cMB
+cML
+cMQ
+cKY
+cLw
+blL
+blL
+aXx
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(200,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+ahu
+ahu
+apC
+apC
+ahu
+ahu
+apC
+apC
+ahu
+ahu
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaU
+aXx
+aXx
+aXx
+aXx
+aXx
+rTW
+wbu
+cLg
+kOG
+dVR
+xCy
+sHB
+xkC
+cMe
+cMr
+cMC
+cML
+cMR
+aXx
+aXx
+aXx
+aXx
+aXx
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+blj
+abp
+blj
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(201,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+amJ
+aaU
+aaU
+aaU
+aaU
+amJ
+aaU
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bTK
+bTK
+cKV
+cKX
+bQS
+cLb
+cLj
+cMo
+qvB
+cgh
+cgA
+chq
+cMh
+cMq
+cMD
+cMM
+cMS
+cMT
+cLx
+cpX
+blM
+aXx
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaU
+aaU
+aaa
+aaa
+aaU
+cNX
+cOf
+cOh
+cOm
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(202,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bTL
+bXR
+bZP
+bZR
+opd
+cwA
+cal
+cLl
+cLs
+cLs
+cLs
+cLs
+cLs
+cMs
+cME
+cMN
+aaU
+bZR
+caJ
+bpq
+caS
+aXx
+aaa
+aaU
+aaa
+bal
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+cNy
+cNy
+cNz
+cNz
+cNy
+cNX
+cOf
+cOi
+cOm
+cOr
+cOl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(203,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaa
+aXx
+bTK
+bTK
+cKW
+cKY
+bQV
+cLc
+cLk
+ctk
+prx
+vxU
+cLW
+ccG
+cMi
+iQY
+cMF
+cMO
+cMS
+cMT
+cLy
+blM
+blM
+aXx
+aaa
+aaU
+aaU
+bal
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNy
+cNz
+cNz
+cNy
+cNE
+cNM
+cNO
+cNy
+cNX
+cOf
+cOj
+cOn
+cOj
+cOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(204,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+opd
+aaU
+aXx
+aXx
+aXx
+aXx
+aXx
+opd
+cww
+cww
+cww
+cfV
+cww
+cww
+cww
+cww
+cww
+cww
+cww
+aaU
+aXx
+aXx
+aXx
+aXx
+aXx
+aaa
+bal
+aaa
+bal
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNz
+cNB
+cNB
+cNB
+cNF
+cNN
+cNR
+cNY
+cOb
+cOg
+cOj
+cOj
+cOj
+cOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(205,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+bGh
+bHg
+bHg
+bHg
+tpQ
+bHg
+bHg
+wPS
+aaU
+aWj
+cww
+cJm
+cww
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+bal
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNz
+cNB
+cNB
+cNB
+cNG
+cNN
+cNS
+cNy
+cNX
+cNX
+cOj
+cOj
+cOs
+cOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(206,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aWR
+aaa
+aaU
+aaa
+bal
+bal
+aaU
+bal
+bal
+bal
+aaU
+aWj
+cww
+cJn
+cww
+aaU
+bal
+bal
+bal
+bal
+aaU
+bal
+bal
+bal
+aaU
+aaU
+bal
+bal
+bal
+aaa
+bal
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNz
+cNB
+cNB
+cNB
+cNG
+cNN
+cNT
+cNy
+cNX
+cNX
+cOj
+cOj
+cOt
+cOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(207,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aWR
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cbS
+abM
+ccH
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aWj
+aWj
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+bal
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNz
+cNB
+cNB
+cNB
+cNG
+cNO
+cNO
+cNZ
+cNX
+cNX
+cOj
+cOj
+cOu
+cOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aWR
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(208,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abF
+abM
+acA
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cbS
+abR
+ccJ
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+bal
+bal
+bal
+aaU
+bal
+bal
+bal
+aaU
+bal
+bal
+bal
+aaU
+bal
+bal
+bal
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNy
+cNz
+cNz
+cNy
+cNH
+cNP
+cNU
+cNy
+cOc
+cNX
+cOk
+cOo
+cOv
+cOp
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+cPl
+abM
+cPq
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(209,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abJ
+abR
+acA
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+cbW
+abM
+aaD
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+abp
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNy
+cNy
+cNz
+cNz
+cNy
+cNX
+cNX
+cOl
+cOp
+cOp
+cOl
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+cPm
+abR
+cPq
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(210,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abJ
+abR
+acB
+adc
+adc
+adL
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+bGK
+bGK
+bUe
+ccc
+abR
+aaY
+cdb
+bGK
+cdq
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaU
+aWj
+aWj
+aaU
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cPd
+cPd
+cPd
+cPn
+abM
+cPq
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(211,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+abJ
+abM
+abR
+abM
+abR
+abM
+aZG
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aTd
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aTd
+aaU
+aaU
+aaU
+aTx
+abM
+abR
+abM
+adl
+ccr
+ccO
+abM
+abR
+abM
+aZG
+aaU
+aaU
+aaU
+aTd
+aaU
+aaU
+aTd
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+cNQ
+cNI
+aWj
+aWj
+aWj
+aWj
+aaU
+aTd
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aTd
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aTx
+abM
+abR
+abM
+abR
+abM
+cPq
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(212,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+abp
+abJ
+abZ
+abZ
+abZ
+abZ
+abZ
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+bGP
+bNo
+bNo
+ccf
+ccs
+ccP
+cdi
+bNo
+bNo
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cNI
+cNI
+cNI
+aWj
+aWj
+aWj
+aWj
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cPe
+cPh
+cPh
+cPh
+cPh
+cPh
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(213,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abM
+abM
+abM
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+abp
+aaU
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaU
+abM
+cNI
+aWj
+abp
+abp
+aWj
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+aaU
+abp
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(214,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaU
+aaa
+aWj
+brs
+brs
+aWj
+aaa
+aaU
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(215,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+cfq
+cfq
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(216,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(217,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+cpB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cpB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cpB
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(218,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+cpB
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(219,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(220,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(221,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+cpC
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+cpC
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(222,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(223,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(224,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(225,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(226,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(227,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(228,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(229,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aWj
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(230,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(231,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(232,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(233,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(234,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(235,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(236,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(237,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(238,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(239,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(240,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(241,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(242,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(243,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(244,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(245,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(246,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(247,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(248,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(249,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(250,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(251,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(252,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(253,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(254,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
+(255,1,1) = {"
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+ckl
+"}
diff --git a/_maps/map_files/CogStation/FOLDER.txt b/_maps/map_files/CogStation/FOLDER.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/_maps/map_files/CogStation/job_changes.dm b/_maps/map_files/CogStation/job_changes.dm
new file mode 100644
index 0000000000..8b1e3e9172
--- /dev/null
+++ b/_maps/map_files/CogStation/job_changes.dm
@@ -0,0 +1,29 @@
+#define JOB_MODIFICATION_MAP_NAME "CogStation"
+
+//Medical
+/datum/job/scientist/New()
+ ..()
+ MAP_JOB_CHECK
+ access += ACCESS_CHEMISTRY
+ minimal_access += ACCESS_CHEMISTRY
+
+//Science
+
+/datum/job/roboticist/New()
+ ..()
+ MAP_JOB_CHECK
+ access += list(ACCESS_MEDICAL, ACCESS_MORGUE)
+ minimal_access += list(ACCESS_MEDICAL, ACCESS_MORGUE)
+
+//Civilian
+/datum/job/clown/New()
+ ..()
+ MAP_JOB_CHECK
+ access += ACCESS_MAINT_TUNNELS
+ minimal_access += ACCESS_MAINT_TUNNELS
+
+/datum/job/mime/New()
+ ..()
+ MAP_JOB_CHECK
+ access += ACCESS_MAINT_TUNNELS
+ minimal_access += ACCESS_MAINT_TUNNELS
\ No newline at end of file
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 54b5a9c221..61ed3edba7 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -463,10 +463,24 @@
"aaS" = (
/turf/closed/wall/mineral/plastitanium,
/area/construction/mining/aux_base)
-"abe" = (
-/obj/effect/turf_decal/delivery,
-/obj/effect/turf_decal/stripes/end{
- dir = 1
+"aaT" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aaU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"aaV" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
@@ -494,15 +508,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
-"abq" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/hallway/secondary/entry)
"abs" = (
/obj/docking_port/stationary{
dwidth = 1;
@@ -12043,7 +12048,7 @@
"aAm" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/vomit/old,
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/newscaster{
@@ -12054,7 +12059,7 @@
/area/crew_quarters/toilet/auxiliary)
"aAn" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/newscaster{
@@ -12066,7 +12071,7 @@
/area/crew_quarters/toilet/auxiliary)
"aAo" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/newscaster{
@@ -19676,7 +19681,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aNx" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/prison{
dir = 4
},
/obj/machinery/light/small{
@@ -26177,7 +26182,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar/atrium)
"aWX" = (
-/obj/structure/piano{
+/obj/structure/musician/piano{
icon_state = "piano"
},
/obj/machinery/airalarm{
@@ -59853,6 +59858,7 @@
/area/crew_quarters/heads/captain)
"bXh" = (
/obj/structure/toilet{
+ contents = newlist(/obj/item/toy/snappop/phoenix);
dir = 4
},
/obj/machinery/light{
@@ -82136,7 +82142,7 @@
"cIa" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/vomit/old,
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/newscaster{
@@ -82147,7 +82153,7 @@
/area/crew_quarters/toilet/restrooms)
"cIb" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/newscaster{
@@ -82159,7 +82165,7 @@
/area/crew_quarters/toilet/restrooms)
"cIc" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/newscaster{
@@ -89648,7 +89654,7 @@
},
/area/medical/storage)
"cUP" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/effect/decal/cleanable/dirt,
@@ -115308,7 +115314,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/structure/piano,
+/obj/structure/musician/piano,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/crew_quarters/theatre/abandoned)
@@ -116751,7 +116757,7 @@
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"dPN" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
@@ -126823,15 +126829,6 @@
},
/turf/open/floor/plasteel,
/area/science/research/abandoned)
-"mvx" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/hallway/secondary/entry)
"mxm" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/circuit/green,
@@ -126841,17 +126838,6 @@
/obj/item/assembly/signaler,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
-"mLI" = (
-/obj/machinery/door/airlock/external{
- name = "External Docking Port"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/hallway/secondary/entry)
"mPj" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
@@ -126914,28 +126900,10 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
-"nQR" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/computer/shuttle/mining/common,
-/turf/open/floor/plasteel,
-/area/hallway/secondary/entry)
"nSh" = (
/obj/machinery/atmospherics/pipe/simple/general/hidden,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
-"nSS" = (
-/obj/machinery/door/airlock/external{
- name = "External Docking Port"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/hallway/secondary/entry)
"oHk" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -127597,17 +127565,6 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
-"xdp" = (
-/obj/docking_port/stationary{
- dwidth = 3;
- height = 5;
- id = "commonmining_home";
- name = "SS13: Common Mining Dock";
- roundstart_template = /datum/map_template/shuttle/mining_common/meta;
- width = 7
- },
-/turf/open/space/basic,
-/area/space)
"xdZ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -159669,7 +159626,7 @@ aaa
aaa
aaa
aaa
-rqh
+aaa
rqh
aad
aad
@@ -159925,8 +159882,8 @@ aaa
aaa
aaa
aaa
-aaO
-aaO
+aaa
+aaa
aaO
aaO
abf
@@ -160181,11 +160138,11 @@ oZp
aaa
aaa
aaa
-xdp
-mLI
-mvx
-nSS
-abe
+aaa
+aaa
+aaa
+aaO
+aaT
abp
abC
abC
@@ -160439,11 +160396,11 @@ aaa
aaa
aaa
aaa
+aaa
+aaa
aaO
-aaO
-aaO
-nQR
-abq
+aaU
+aaV
abD
abD
abZ
@@ -160697,7 +160654,7 @@ aaa
aaa
aaa
aaa
-rqh
+aaa
aaO
aaO
abf
@@ -160954,7 +160911,7 @@ aaa
aaa
aaa
aaa
-rqh
+aaa
rqh
aad
aad
diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm
index 446fe3e519..3eaad62714 100644
--- a/_maps/map_files/KiloStation/KiloStation.dmm
+++ b/_maps/map_files/KiloStation/KiloStation.dmm
@@ -19002,7 +19002,7 @@
"aEK" = (
/obj/structure/sign/poster/contraband/random,
/turf/closed/wall/rust,
-/area/hallway/secondary/entry)
+/area/security/vacantoffice)
"aEL" = (
/obj/machinery/door/airlock/maintenance{
req_access_txt = "12"
@@ -21544,6 +21544,9 @@
pixel_x = -26
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"aIZ" = (
@@ -56558,7 +56561,7 @@
pixel_x = -12;
pixel_y = 2
},
-/obj/structure/toilet{
+/obj/structure/toilet/secret/prison{
pixel_y = 16
},
/obj/effect/turf_decal/tile/neutral{
@@ -56908,7 +56911,7 @@
/area/hallway/primary/central)
"bKT" = (
/obj/effect/turf_decal/box,
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/structure/mirror{
@@ -56941,7 +56944,7 @@
/area/crew_quarters/toilet/restrooms)
"bKU" = (
/obj/effect/turf_decal/box,
-/obj/structure/toilet{
+//obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/structure/mirror{
@@ -59908,7 +59911,7 @@
pixel_x = -12;
pixel_y = 2
},
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 16
},
/obj/effect/turf_decal/tile/neutral{
@@ -62405,7 +62408,7 @@
name = "EMERGENCY STORAGE"
},
/turf/closed/wall,
-/area/hallway/secondary/entry)
+/area/security/vacantoffice)
"bSM" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/external{
@@ -62669,6 +62672,9 @@
pixel_x = -23
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bTf" = (
@@ -62869,17 +62875,23 @@
/turf/closed/wall/rust,
/area/hallway/secondary/exit/departure_lounge)
"bTy" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "2-4"
- },
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
+/turf/open/floor/plasteel,
+/area/hallway/secondary/exit/departure_lounge)
"bTz" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral,
@@ -62934,6 +62946,9 @@
/obj/effect/turf_decal/tile/neutral,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bTE" = (
@@ -62988,7 +63003,7 @@
pixel_x = -12;
pixel_y = 2
},
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 16
},
/obj/effect/turf_decal/tile/neutral{
@@ -63096,6 +63111,9 @@
c_tag = "Arrivals Dock";
name = "shuttle camera"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bTO" = (
@@ -63168,17 +63186,17 @@
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/exit/departure_lounge)
"bTS" = (
-/obj/docking_port/stationary{
- dir = 8;
- dwidth = 3;
- height = 5;
- id = "commonmining_home";
- name = "SS13: Common Mining Dock";
- roundstart_template = /datum/map_template/shuttle/mining_common/meta;
- width = 7
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
-/turf/open/floor/plating,
-/area/hallway/secondary/entry)
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"bTT" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -63287,8 +63305,11 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 6
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
@@ -63398,12 +63419,8 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"bUl" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/turf/open/floor/plating,
-/area/hallway/secondary/entry)
+/turf/closed/wall,
+/area/security/vacantoffice)
"bUm" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -63464,9 +63481,8 @@
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/exit/departure_lounge)
"bUt" = (
-/obj/structure/sign/warning/electricshock,
/turf/closed/wall/rust,
-/area/hallway/secondary/entry)
+/area/security/vacantoffice)
"bUu" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -64674,11 +64690,21 @@
},
/area/maintenance/starboard/aft)
"bWn" = (
-/obj/machinery/door/airlock/external{
- name = "Common Mining Dock"
+/obj/machinery/door/airlock/maintenance{
+ name = "Vacant Office"
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/firedoor,
/turf/open/floor/plasteel,
-/area/hallway/secondary/entry)
+/area/security/vacantoffice)
"bWo" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -64718,6 +64744,15 @@
/area/security/warden)
"bWq" = (
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bWr" = (
@@ -64799,17 +64834,8 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bWx" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/machinery/computer/shuttle/mining/common{
- dir = 4
- },
-/obj/structure/window/reinforced{
- dir = 1
- },
-/turf/open/floor/plasteel/dark,
-/area/hallway/secondary/entry)
+/turf/closed/wall,
+/area/security/vacantoffice)
"bWy" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -65052,15 +65078,18 @@
dir = 4;
pixel_x = -23
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 6
- },
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bWV" = (
@@ -65105,6 +65134,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bWY" = (
@@ -65133,6 +65165,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9
},
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bXa" = (
@@ -65289,6 +65324,9 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bXo" = (
@@ -65367,6 +65405,9 @@
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bXv" = (
@@ -65786,6 +65827,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bXY" = (
@@ -66680,6 +66724,9 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bZk" = (
@@ -67429,6 +67476,9 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"cal" = (
@@ -67587,7 +67637,7 @@
"cav" = (
/obj/structure/sign/poster/contraband/random,
/turf/closed/wall,
-/area/hallway/secondary/entry)
+/area/security/vacantoffice)
"caw" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -67848,6 +67898,10 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"caP" = (
@@ -67855,6 +67909,9 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"caQ" = (
@@ -70240,9 +70297,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "2-4"
- },
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
@@ -74728,6 +74782,9 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/entry)
"cmk" = (
@@ -81480,8 +81537,18 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/port)
"cyG" = (
-/turf/open/floor/plating,
-/area/hallway/secondary/entry)
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/security/vacant";
+ name = "Vacant Office APC";
+ pixel_y = 24
+ },
+/obj/structure/table/wood,
+/obj/item/flashlight/lamp/green,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"cyI" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/sink/kitchen{
@@ -85332,6 +85399,9 @@
"cJp" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"cJq" = (
@@ -87185,9 +87255,22 @@
"cZm" = (
/turf/closed/wall/rust,
/area/security/prison)
+"dbY" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
+ dir = 1
+ },
+/obj/structure/chair/stool,
+/turf/open/floor/wood{
+ icon_state = "wood-broken"
+ },
+/area/security/vacantoffice)
"dis" = (
/turf/closed/wall/r_wall/rust,
/area/bridge)
+"dlg" = (
+/obj/machinery/light,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"dxq" = (
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/tile/neutral{
@@ -87242,6 +87325,14 @@
icon_state = "panelscorched"
},
/area/maintenance/starboard/fore)
+"eaJ" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/machinery/airalarm/directional/west,
+/obj/item/twohanded/required/kirbyplants/dead,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"elZ" = (
/obj/machinery/status_display/evac,
/turf/closed/wall/rust,
@@ -87338,6 +87429,11 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"fkk" = (
+/turf/open/floor/wood{
+ icon_state = "wood-broken6"
+ },
+/area/security/vacantoffice)
"fyr" = (
/obj/machinery/light{
dir = 4
@@ -87362,6 +87458,11 @@
dir = 8
},
/area/hallway/primary/fore)
+"gmF" = (
+/turf/open/floor/wood{
+ icon_state = "wood-broken"
+ },
+/area/security/vacantoffice)
"gnA" = (
/obj/machinery/airalarm{
dir = 1;
@@ -87428,9 +87529,20 @@
/obj/structure/sign/departments/evac,
/turf/closed/wall/rust,
/area/hallway/secondary/exit/departure_lounge)
+"gKu" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"gMU" = (
/turf/closed/wall/r_wall/rust,
/area/ai_monitored/turret_protected/ai_upload)
+"gPA" = (
+/turf/open/floor/wood{
+ icon_state = "wood-broken3"
+ },
+/area/security/vacantoffice)
"hgW" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/chair/stool,
@@ -87452,6 +87564,12 @@
"hAb" = (
/turf/closed/wall/r_wall/rust,
/area/security/courtroom)
+"hDh" = (
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/structure/closet/cardboard,
+/obj/effect/spawner/bundle/costume/maid,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"hNk" = (
/turf/closed/wall/r_wall/rust,
/area/security/prison)
@@ -87660,17 +87778,12 @@
/turf/closed/mineral/random/labormineral,
/area/space/nearstation)
"jQY" = (
-/obj/structure/cable{
- icon_state = "1-2"
+/obj/structure/table/wood,
+/obj/item/paper_bin,
+/turf/open/floor/wood{
+ icon_state = "wood-broken4"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/disposalpipe/segment,
-/obj/item/clothing/under/costume/maid,
-/turf/open/floor/plating{
- icon_state = "panelscorched"
- },
-/area/maintenance/starboard/aft)
+/area/security/vacantoffice)
"jRw" = (
/obj/structure/sign/poster/official/high_class_martini,
/turf/closed/wall/r_wall,
@@ -87753,6 +87866,18 @@
},
/turf/open/floor/wood,
/area/maintenance/port/fore)
+"jUX" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 6
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"jUZ" = (
/obj/item/poster/random_contraband,
/obj/item/poster/random_contraband,
@@ -87773,6 +87898,10 @@
"khA" = (
/turf/closed/wall/rust,
/area/construction/mining/aux_base)
+"koc" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"krJ" = (
/turf/closed/wall/rust,
/area/hallway/secondary/exit/departure_lounge)
@@ -87794,6 +87923,12 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"kzw" = (
+/obj/structure/chair/office/dark{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"kIJ" = (
/turf/open/floor/wood{
icon_state = "wood-broken7"
@@ -87803,6 +87938,11 @@
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
/area/maintenance/port/fore)
+"kXo" = (
+/obj/structure/table/wood/poker,
+/obj/item/toy/cards/deck,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"leX" = (
/obj/structure/chair/stool,
/turf/open/floor/wood{
@@ -87883,6 +88023,17 @@
},
/turf/open/floor/plasteel/dark,
/area/science/research)
+"mKp" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -24
+ },
+/obj/structure/table/wood,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"mLN" = (
/obj/effect/decal/cleanable/dirt,
/turf/closed/mineral/random/labormineral,
@@ -87953,6 +88104,19 @@
},
/turf/open/space/basic,
/area/hallway/secondary/entry)
+"oUc" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/table/wood,
+/obj/item/folder/paperwork,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
+"ppP" = (
+/turf/open/floor/wood{
+ icon_state = "wood-broken7"
+ },
+/area/security/vacantoffice)
"pCe" = (
/obj/effect/decal/cleanable/glass,
/turf/open/floor/plating/asteroid/airless,
@@ -88190,12 +88354,11 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"uqy" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/under/rank/civilian/janitor/maid,
-/turf/open/floor/plating{
- icon_state = "platingdmg1"
+/obj/machinery/light{
+ dir = 1
},
-/area/maintenance/starboard/aft)
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"uxQ" = (
/obj/effect/decal/cleanable/ash,
/turf/closed/mineral/random/labormineral,
@@ -88203,9 +88366,20 @@
"uzR" = (
/turf/closed/wall/rust,
/area/storage/primary)
+"uGi" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
+"uRM" = (
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"uWo" = (
/turf/closed/wall/rust,
/area/security/checkpoint/medical)
+"vle" = (
+/obj/structure/festivus,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"vmu" = (
/obj/structure/table/wood,
/obj/effect/turf_decal/tile/neutral{
@@ -88231,6 +88405,10 @@
/mob/living/simple_animal/pet/bumbles,
/turf/open/floor/plasteel,
/area/hydroponics)
+"wiK" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
"wmX" = (
/turf/closed/wall/rust,
/area/quartermaster/qm)
@@ -88328,6 +88506,10 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/security/prison)
+"ykB" = (
+/obj/structure/chair/stool,
+/turf/open/floor/wood,
+/area/security/vacantoffice)
(1,1,1) = {"
aaa
@@ -125762,7 +125944,7 @@ bOl
bSJ
bSI
ukP
-uqy
+bGr
bEg
bAT
bOC
@@ -126016,10 +126198,10 @@ bNw
bTP
bUu
bWh
-bTy
+cax
cxB
ceN
-jQY
+chZ
cxB
cjE
bXb
@@ -126270,15 +126452,15 @@ bOA
bOH
bSH
bNw
-bSr
+bWx
aEK
-bSd
-bUl
-bSd
-bUl
-bSr
bUt
-bSd
+bWx
+bUt
+bWx
+bWx
+bUt
+bUt
bXj
ckS
bUu
@@ -126527,15 +126709,15 @@ bNM
tYn
aVM
bNx
-bSr
+bWx
cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-bSr
+mKp
+oUc
+eaJ
+uRM
+uRM
+vle
+bWx
bXz
ccB
cgb
@@ -126785,14 +126967,14 @@ bZW
bWw
bTq
bSL
-cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-bSr
+jQY
+kzw
+gmF
+gKu
+uRM
+uRM
+uRM
+bWx
bEg
bEg
bEg
@@ -127041,15 +127223,15 @@ cad
bhY
car
bTr
-bSr
-cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-bSr
+bWx
+uqy
+wiK
+uGi
+jUX
+koc
+dbY
+dlg
+bWx
bYf
ceU
cgI
@@ -127299,14 +127481,14 @@ bQQ
bSN
bTs
cav
-cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-cyG
-bSr
+uRM
+fkk
+ppP
+bTS
+ykB
+kXo
+ykB
+bWx
bPJ
bUN
hxn
@@ -127555,15 +127737,15 @@ bTk
bXL
bXx
bPe
-bSd
-cyG
-cyG
-cyG
+bUt
+hDh
+uRM
+uRM
bTS
-cyG
-cyG
-cyG
-bSr
+uRM
+ykB
+gPA
+bWx
bPJ
bQa
hxn
@@ -127815,12 +127997,12 @@ bTv
krJ
krJ
krJ
-bPe
+bOc
bWn
bWx
-bSr
+bWx
bSL
-bSr
+bWx
bSr
cgx
hxn
@@ -129096,7 +129278,7 @@ bMO
bOR
cak
aIY
-cmD
+bTy
bTe
bXu
bXn
diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm
index 30aeb69362..6d1469d483 100644
--- a/_maps/map_files/LambdaStation/lambda.dmm
+++ b/_maps/map_files/LambdaStation/lambda.dmm
@@ -133,8 +133,10 @@
/area/space/nearstation)
"aaA" = (
/turf/closed/mineral{
+ baseturfs = /turf/open/floor/plating/asteroid;
initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
- name = "asteroid"
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
},
/area/asteroid/nearstation)
"aaB" = (
@@ -814,7 +816,12 @@
/turf/open/floor/plasteel/dark,
/area/security/prison)
"aco" = (
-/turf/closed/mineral/random/low_chance,
+/turf/closed/mineral/random/low_chance{
+ baseturfs = /turf/open/floor/plating/asteroid;
+ initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
+ },
/area/asteroid/nearstation)
"acp" = (
/turf/closed/wall/r_wall,
@@ -1024,7 +1031,6 @@
"acK" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = 30;
- pixel_y = 0
},
/turf/open/floor/plating,
/area/science/mixing)
@@ -1062,7 +1068,6 @@
desc = "In Space, no one can hear you scream, especially if the microphone has been disabled.";
name = "Prison Intercom";
pixel_x = 32;
- pixel_y = 0;
prison_radio = 1
},
/turf/open/floor/plasteel/dark,
@@ -1631,7 +1636,6 @@
"aeh" = (
/obj/structure/table,
/obj/machinery/microwave{
- pixel_x = 0;
pixel_y = 6
},
/turf/open/floor/plasteel,
@@ -1992,7 +1996,6 @@
},
/obj/machinery/status_display/ai{
pixel_x = -32;
- pixel_y = 0
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
@@ -3030,7 +3033,7 @@
/turf/open/floor/plasteel,
/area/security/prison)
"agR" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/prison{
dir = 8
},
/turf/open/floor/plasteel/freezer,
@@ -3136,7 +3139,6 @@
/obj/item/assembly/flash/handheld,
/obj/item/reagent_containers/spray/pepper,
/obj/item/radio/intercom{
- pixel_x = 0;
pixel_y = 28
},
/obj/machinery/light/small{
@@ -3431,7 +3433,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -3482,7 +3483,6 @@
/obj/item/radio/intercom{
desc = "In Space, no one can hear you scream, especially if the microphone has been disabled.";
name = "Prison Intercom";
- pixel_x = 0;
pixel_y = -32;
prison_radio = 1
},
@@ -4489,7 +4489,6 @@
department = "Robotics";
departmentType = 2;
name = "Robotics RC";
- pixel_x = 0;
pixel_y = 31;
receive_ore_updates = 1
},
@@ -4500,7 +4499,6 @@
/obj/machinery/mecha_part_fabricator,
/obj/item/radio/intercom{
dir = 2;
- pixel_x = 0;
pixel_y = 28
},
/turf/open/floor/plasteel,
@@ -4750,7 +4748,6 @@
icon_state = "sink_alt";
name = "old sink";
pixel_x = 15;
- pixel_y = 0
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
@@ -5333,7 +5330,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -6014,7 +6010,6 @@
/obj/item/radio/intercom{
dir = 2;
pixel_x = -29;
- pixel_y = 0
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
@@ -6480,7 +6475,6 @@
},
/obj/item/grenade/barrier{
pixel_x = 6;
- pixel_y = 0
},
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -7562,7 +7556,6 @@
idDoor = "xeno_airlock_exterior";
idSelf = "xeno_airlock_control";
name = "Access Button";
- pixel_x = 0;
pixel_y = 25
},
/obj/machinery/door/firedoor,
@@ -8294,7 +8287,6 @@
dir = 4;
name = "Xenobiology APC";
pixel_x = 24;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/purple/filled/line{
icon_state = "trimline_fill";
@@ -9273,7 +9265,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -9489,7 +9480,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel/dark,
@@ -9593,6 +9583,41 @@
/turf/open/floor/plasteel,
/area/security/prison)
"asd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/mineral{
+ baseturfs = /turf/open/floor/plating/asteroid;
+ initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
+ },
+/area/asteroid/nearstation)
+"ase" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/warden)
+"asf" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
dir = 4
},
@@ -9609,9 +9634,12 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/security/warden)
-"ase" = (
+"asg" = (
/obj/machinery/door/airlock/security{
name = "Armory";
req_access_txt = "3"
@@ -9639,9 +9667,25 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel/dark,
/area/security/armory)
-"asf" = (
+"ash" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/armory)
+"asi" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -9662,59 +9706,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/security/armory)
-"asg" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
+/obj/structure/cable{
+ icon_state = "4-8"
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
- dir = 10
- },
-/turf/open/floor/plasteel/dark,
-/area/security/armory)
-"ash" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/turf/open/floor/plasteel/dark,
-/area/security/armory)
-"asi" = (
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/machinery/holopad,
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel/dark,
/area/security/armory)
"asj" = (
@@ -11032,7 +11026,6 @@
"aut" = (
/obj/item/radio/intercom{
name = "Station Intercom";
- pixel_x = 0;
pixel_y = 26
},
/turf/open/floor/plasteel,
@@ -11104,49 +11097,47 @@
/turf/open/floor/plasteel/dark,
/area/security/armory)
"auA" = (
-/obj/effect/turf_decal/tile/red{
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/machinery/power/apc{
- areastring = "/area/security/armory";
- dir = 2;
- name = "Armoury APC";
- pixel_y = -26
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
},
-/obj/structure/cable{
- icon_state = "0-4"
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
},
-/obj/effect/turf_decal/tile/red,
-/obj/machinery/flasher/portable,
-/turf/open/floor/plasteel/dark,
-/area/security/armory)
-"auB" = (
-/obj/structure/rack,
-/obj/item/storage/box/rubbershot{
- pixel_x = -3;
- pixel_y = 3
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
},
-/obj/item/storage/box/rubbershot{
- pixel_x = -3;
- pixel_y = 3
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
},
-/obj/item/storage/box/rubbershot,
-/obj/item/storage/box/rubbershot,
-/obj/item/storage/box/rubbershot{
- pixel_x = 3;
- pixel_y = -3
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
+ dir = 9
},
-/obj/item/storage/box/rubbershot{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/armory)
+"auB" = (
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
},
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/turf_decal/tile/red,
/turf/open/floor/plasteel/dark,
/area/security/armory)
"auC" = (
@@ -11336,7 +11327,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel/white,
@@ -11554,7 +11544,6 @@
dir = 4;
name = "Research Firing Range APC";
pixel_x = 28;
- pixel_y = 0
},
/obj/item/target,
/obj/item/target,
@@ -11806,7 +11795,6 @@
},
/obj/machinery/status_display/ai{
pixel_x = 32;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/neutral/filled/line{
icon_state = "trimline_fill";
@@ -11841,10 +11829,10 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
- icon_state = "scrub_map_on-3";
- dir = 8
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/obj/structure/cable{
+ icon_state = "2-8"
},
/turf/open/floor/plasteel/dark,
/area/security/armory)
@@ -12286,7 +12274,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -12770,7 +12757,6 @@
/obj/item/reagent_containers/syringe,
/obj/machinery/newscaster{
pixel_x = -32;
- pixel_y = 0
},
/turf/open/floor/plasteel/freezer,
/area/security/prison)
@@ -12896,7 +12882,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -12945,7 +12930,6 @@
/obj/machinery/requests_console{
department = "Security";
name = "Security RC";
- pixel_x = 0;
pixel_y = -32
},
/turf/open/floor/plasteel,
@@ -13192,7 +13176,6 @@
/obj/structure/bed,
/obj/machinery/flasher{
id = "insaneflash";
- pixel_x = 0;
pixel_y = -26
},
/turf/open/floor/plasteel/freezer,
@@ -13653,26 +13636,26 @@
/turf/closed/wall,
/area/crew_quarters/heads/hos)
"ayk" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
+/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/structure/cable{
- icon_state = "2-8"
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
},
-/turf/open/floor/plasteel,
-/area/security/warden)
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
+ icon_state = "scrub_map_on-3";
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/armory)
"ayl" = (
/obj/structure/table/wood,
/obj/effect/turf_decal/tile/red{
@@ -13687,7 +13670,6 @@
areastring = "/area/crew_quarters/heads/hos";
dir = 1;
name = "Head of Security's Office APC";
- pixel_x = 0;
pixel_y = 25
},
/obj/structure/cable{
@@ -13703,7 +13685,6 @@
},
/obj/machinery/recharger,
/obj/structure/reagent_dispensers/peppertank{
- pixel_x = 0;
pixel_y = 30
},
/turf/open/floor/plasteel/dark,
@@ -13770,10 +13751,8 @@
id = "hosspace";
name = "Space Shutters Control";
pixel_x = 25;
- pixel_y = 0
},
/obj/machinery/status_display/evac{
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/plasteel/dark,
@@ -15650,7 +15629,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
@@ -15723,7 +15701,6 @@
/area/crew_quarters/heads/hor)
"aBO" = (
/obj/item/storage/secure/safe{
- pixel_x = 0;
pixel_y = -32
},
/obj/structure/table,
@@ -16459,7 +16436,6 @@
/obj/machinery/iv_drip,
/obj/structure/sign/poster/official/cleanliness{
pixel_x = 32;
- pixel_y = 0
},
/turf/open/floor/plasteel/white,
/area/security/brig)
@@ -16617,7 +16593,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/obj/machinery/status_display/evac{
pixel_x = 32;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/purple/filled/line{
icon_state = "trimline_fill";
@@ -16882,7 +16857,6 @@
},
/obj/machinery/status_display/evac{
pixel_x = 32;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/neutral/filled/line{
icon_state = "trimline_fill";
@@ -17999,7 +17973,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel/white,
@@ -18135,7 +18108,6 @@
},
/obj/machinery/status_display/evac{
pixel_x = 32;
- pixel_y = 0
},
/turf/open/floor/plasteel/grimy,
/area/hallway/primary/fore)
@@ -20085,7 +20057,6 @@
/obj/machinery/requests_console{
department = "Law office";
pixel_x = 31;
- pixel_y = 0
},
/turf/open/floor/plasteel/grimy,
/area/lawoffice)
@@ -21252,7 +21223,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -21539,11 +21509,11 @@
name = "Brig Blast door"
},
/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/stripes/red/corner{
icon_state = "warninglinecorner_red";
- dir = 4
+ dir = 8
},
-/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/security/brig)
"aLI" = (
@@ -21565,11 +21535,11 @@
name = "Brig Blast door"
},
/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/stripes/red/corner{
icon_state = "warninglinecorner_red";
- dir = 1
+ dir = 4
},
-/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/security/brig)
"aLK" = (
@@ -22094,7 +22064,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/machinery/light_switch{
pixel_x = -28;
- pixel_y = 0
},
/turf/open/floor/plasteel/grimy,
/area/lawoffice)
@@ -22568,7 +22537,6 @@
/obj/structure/filingcabinet/chestdrawer,
/obj/structure/sign/poster/official/enlist{
pixel_x = 32;
- pixel_y = 0
},
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/neutral{
@@ -22692,7 +22660,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -22718,7 +22685,6 @@
dir = 8;
name = "Quartermaster's Office APC";
pixel_x = -25;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/yellow/filled/line{
icon_state = "trimline_fill";
@@ -23294,7 +23260,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -24474,7 +24439,6 @@
},
/obj/structure/sign/nanotrasen{
pixel_x = 32;
- pixel_y = 0
},
/turf/open/floor/plasteel,
/area/security/brig)
@@ -24719,10 +24683,8 @@
/obj/machinery/computer/med_data/laptop,
/obj/machinery/computer/security/telescreen/entertainment{
pixel_x = -32;
- pixel_y = 0
},
/obj/structure/extinguisher_cabinet{
- pixel_x = 0;
pixel_y = 29
},
/obj/machinery/light/small{
@@ -25320,7 +25282,6 @@
/obj/structure/dresser,
/obj/item/radio/intercom{
dir = 2;
- pixel_x = 0;
pixel_y = 28
},
/turf/open/floor/carpet/blue,
@@ -26514,7 +26475,6 @@
dir = 8;
name = "Captain's Office APC";
pixel_x = -25;
- pixel_y = 0
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 4
@@ -26861,9 +26821,12 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
+/obj/machinery/computer/bounty{
+ icon_state = "computer";
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aVy" = (
@@ -27269,15 +27232,14 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"aWq" = (
-/obj/structure/sink{
- dir = 8;
- pixel_x = -12;
- pixel_y = 2
- },
/obj/effect/turf_decal/trimline/green/filled/line{
icon_state = "trimline_fill";
dir = 8
},
+/obj/machinery/light{
+ dir = 8;
+ light_color = "#e8eaff"
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"aWr" = (
@@ -27490,7 +27452,7 @@
req_access_txt = "19"
},
/obj/machinery/door/poddoor/preopen{
- id = "bridgedoors";
+ id = "bridgemaintenance";
name = "Bridge Access Blast door"
},
/obj/effect/turf_decal/delivery,
@@ -27813,7 +27775,6 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 1;
name = "Hydroponics APC";
- pixel_x = 0;
pixel_y = 23
},
/obj/effect/turf_decal/trimline/green/filled/line{
@@ -28204,7 +28165,9 @@
"aYd" = (
/obj/structure/table/reinforced,
/obj/machinery/door/window/eastright,
-/obj/machinery/door/window/brigdoor/westright,
+/obj/machinery/door/window/brigdoor/westright{
+ req_access_txt = "57"
+ },
/obj/machinery/door/poddoor/shutters/preopen{
id = "hop";
name = "Privacy Shutters"
@@ -28314,23 +28277,6 @@
/area/crew_quarters/bar/atrium)
"aYk" = (
/obj/effect/turf_decal/tile/bar,
-/obj/effect/turf_decal/tile/bar{
- dir = 1
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
- dir = 4
- },
-/obj/machinery/airalarm/directional/south,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/crew_quarters/bar/atrium)
-"aYl" = (
-/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
@@ -28347,8 +28293,22 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
dir = 4
},
+/obj/machinery/airalarm/directional/south,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
+"aYl" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/trimline/green/filled/line{
+ icon_state = "trimline_fill";
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
"aYm" = (
/obj/structure/chair{
dir = 8
@@ -28398,12 +28358,14 @@
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"aYp" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/effect/turf_decal/trimline/green/filled/line{
icon_state = "trimline_fill";
- dir = 1
+ dir = 8
+ },
+/obj/structure/sink{
+ dir = 8;
+ pixel_x = -12;
+ pixel_y = 2
},
/turf/open/floor/plasteel,
/area/hydroponics)
@@ -28441,10 +28403,6 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"aYv" = (
-/obj/machinery/light{
- dir = 4;
- light_color = "#e8eaff"
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 9
},
@@ -28455,6 +28413,10 @@
icon_state = "trimline_fill";
dir = 4
},
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 12
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"aYw" = (
@@ -28503,7 +28465,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -29159,7 +29120,6 @@
frequency = 1423;
listening = 0;
name = "Interrogation Intercom";
- pixel_x = 0;
pixel_y = -24
},
/obj/effect/turf_decal/tile/neutral{
@@ -29300,7 +29260,6 @@
},
/obj/machinery/newscaster{
pixel_x = 32;
- pixel_y = 0
},
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
@@ -29403,19 +29362,27 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/machinery/button{
+/obj/machinery/button/door{
id = "bridgespace";
name = "Bridge External Shutters";
pixel_x = -25;
- pixel_y = 35
+ pixel_y = 35;
+ req_access_txt = "19"
},
-/obj/machinery/button{
- id = "bridgespace";
- name = "Bridge Access Shutters";
+/obj/machinery/button/door{
+ id = "bridgedoors";
+ name = "Bridge Access Blastdoors";
pixel_x = -25;
pixel_y = 26;
req_access_txt = "19"
},
+/obj/machinery/button/door{
+ id = "bridgemaintenance";
+ name = "Bridge Maintenance Blastdoor";
+ pixel_x = -35;
+ pixel_y = 30;
+ req_access_txt = "19"
+ },
/turf/open/floor/plasteel/dark,
/area/bridge)
"bag" = (
@@ -29820,7 +29787,9 @@
name = "Cargo Desk";
req_access_txt = "50"
},
-/obj/machinery/door/window/brigdoor/eastright,
+/obj/machinery/door/window/brigdoor/eastright{
+ req_access_txt = "31"
+ },
/obj/structure/table/reinforced,
/turf/open/floor/plating,
/area/hallway/primary/central)
@@ -30369,7 +30338,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/bar/atrium)
"bbF" = (
-/obj/structure/piano,
+/obj/structure/musician/piano,
/obj/structure/window/reinforced{
dir = 8
},
@@ -31336,6 +31305,7 @@
/area/security/vacantoffice/b)
"bdG" = (
/obj/machinery/airalarm/directional/north,
+/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/grimy,
/area/security/vacantoffice/b)
"bdH" = (
@@ -31389,7 +31359,6 @@
"bdK" = (
/obj/machinery/requests_console{
department = "EVA";
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/plasteel,
@@ -31895,7 +31864,6 @@
dir = 8;
name = "Council Chambers APC";
pixel_x = -25;
- pixel_y = 0
},
/turf/open/floor/carpet,
/area/bridge/meeting_room)
@@ -32271,7 +32239,6 @@
dir = 8;
name = "Cargo Security APC";
pixel_x = -25;
- pixel_y = 0
},
/obj/machinery/camera{
c_tag = "Security Post - Cargo";
@@ -33377,7 +33344,6 @@
/area/crew_quarters/cafeteria)
"bhD" = (
/obj/machinery/newscaster{
- pixel_x = 0;
pixel_y = 30
},
/turf/open/floor/plasteel,
@@ -33576,14 +33542,20 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"bhX" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/effect/turf_decal/tile/red{
+ dir = 8
},
-/turf/closed/mineral{
- initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
- name = "asteroid"
+/obj/machinery/power/apc{
+ areastring = "/area/security/armory";
+ dir = 2;
+ name = "Armoury APC";
+ pixel_y = -26
},
-/area/asteroid/nearstation)
+/obj/effect/turf_decal/tile/red,
+/obj/machinery/flasher/portable,
+/obj/structure/cable,
+/turf/open/floor/plasteel/dark,
+/area/security/armory)
"bhY" = (
/obj/effect/landmark/event_spawn,
/obj/structure/disposalpipe/segment,
@@ -33754,8 +33726,22 @@
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/cafeteria)
"bip" = (
-/turf/closed/wall,
-/area/maintenance/central)
+/obj/structure/table,
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/machinery/recharger,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"biq" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -33842,14 +33828,31 @@
/turf/closed/wall,
/area/maintenance/department/cargo)
"biA" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
- dir = 4
+/obj/structure/rack,
+/obj/item/storage/box/rubbershot{
+ pixel_x = -3;
+ pixel_y = 3
},
-/turf/closed/mineral{
- initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
- name = "asteroid"
+/obj/item/storage/box/rubbershot{
+ pixel_x = -3;
+ pixel_y = 3
},
-/area/asteroid/nearstation)
+/obj/item/storage/box/rubbershot,
+/obj/item/storage/box/rubbershot,
+/obj/item/storage/box/rubbershot{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/storage/box/rubbershot{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/red,
+/turf/open/floor/plasteel/dark,
+/area/security/armory)
"biB" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -36398,7 +36401,6 @@
dir = 8;
name = "Gateway APC";
pixel_x = -25;
- pixel_y = 0
},
/obj/effect/turf_decal/stripes/end{
dir = 8
@@ -36928,7 +36930,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/structure/cable,
/obj/machinery/power/apc{
- areastring = "/area/vacant_room/office";
+ areastring = "/area/secuirty/vacantoffice/b";
dir = 4;
name = "Vacant Office APC";
pixel_x = 27
@@ -37438,7 +37440,6 @@
dir = 1
},
/obj/item/radio/intercom{
- pixel_x = 0;
pixel_y = -29
},
/turf/open/floor/plasteel,
@@ -37962,22 +37963,17 @@
/turf/open/floor/plating,
/area/hallway/secondary/exit/departure_lounge)
"bpP" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/red{
- dir = 8
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 2;
+ name = "Fuel Pipe to Incinerator"
},
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/recharger,
-/obj/structure/cable{
+/obj/structure/cable/yellow{
icon_state = "1-8"
},
+/obj/machinery/airalarm/directional/east,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit/departure_lounge)
+/area/maintenance/disposal/incinerator)
"bpQ" = (
/obj/effect/turf_decal/tile/red{
dir = 4
@@ -38110,7 +38106,6 @@
departmentType = 0;
name = "Genetics Requests Console";
pixel_x = -32;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/blue/filled/line{
icon_state = "trimline_fill";
@@ -38250,13 +38245,18 @@
/turf/open/floor/plasteel/freezer,
/area/medical/abandoned)
"bqt" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/effect/turf_decal/trimline/green/filled/line{
+ icon_state = "trimline_fill";
+ dir = 8
},
-/obj/machinery/airalarm/directional/south,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/radio/intercom{
+ dir = 8;
+ pixel_x = -28
+ },
+/obj/structure/table,
+/obj/machinery/smartfridge/disks,
/turf/open/floor/plasteel,
-/area/crew_quarters/cafeteria)
+/area/hydroponics)
"bqu" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -39317,7 +39317,6 @@
},
/obj/structure/chair,
/obj/item/radio/intercom{
- pixel_x = 0;
pixel_y = 26
},
/turf/open/floor/plasteel,
@@ -40717,7 +40716,6 @@
departmentType = 2;
name = "Science Requests Console";
pixel_x = -32;
- pixel_y = 0;
receive_ore_updates = 1
},
/obj/machinery/camera/autoname{
@@ -41407,7 +41405,6 @@
/obj/structure/table/wood,
/obj/machinery/newscaster{
pixel_x = 32;
- pixel_y = 0
},
/obj/item/folder,
/obj/item/folder,
@@ -41439,9 +41436,6 @@
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"bwe" = (
-/obj/machinery/door/airlock/medical{
- name = "Medical Storage"
- },
/obj/machinery/door/firedoor,
/obj/structure/cable{
icon_state = "1-2"
@@ -41458,6 +41452,10 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medbay Storage";
+ req_access_txt = "5"
+ },
/turf/open/floor/plasteel/white,
/area/medical/storage)
"bwf" = (
@@ -43735,7 +43733,6 @@
dir = 8;
name = "Cloning Lab APC";
pixel_x = -25;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/blue/filled/line{
icon_state = "trimline_fill";
@@ -44590,7 +44587,6 @@
dir = 4
},
/obj/machinery/computer/security/telescreen/entertainment{
- pixel_x = 0;
pixel_y = 30
},
/turf/open/floor/plasteel/cult{
@@ -44828,11 +44824,18 @@
/turf/closed/wall,
/area/medical/medbay/front_office)
"bCr" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/obj/effect/turf_decal/trimline/green/filled/line{
icon_state = "trimline_fill";
dir = 4
},
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#e8eaff"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
+ icon_state = "scrub_map_on-3";
+ dir = 1
+ },
/turf/open/floor/plasteel/white,
/area/medical/virology)
"bCs" = (
@@ -44874,7 +44877,6 @@
id = "cmoshutter";
name = "CMO Office Shutters";
pixel_x = -25;
- pixel_y = 0;
req_access_txt = "40"
},
/turf/open/floor/plasteel/white,
@@ -45198,7 +45200,7 @@
},
/obj/effect/turf_decal/trimline/green/filled/line{
icon_state = "trimline_fill";
- dir = 8
+ dir = 10
},
/turf/open/floor/plasteel/white,
/area/medical/virology)
@@ -46317,8 +46319,12 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/engineering)
"bEP" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/green/filled/line{
+ icon_state = "trimline_fill";
+ dir = 8
},
/turf/open/floor/plasteel/white,
/area/medical/virology)
@@ -46399,13 +46405,6 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
-/obj/machinery/light{
- dir = 8
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- icon_state = "trimline_fill";
- dir = 8
- },
/turf/open/floor/plasteel/white,
/area/medical/virology)
"bEY" = (
@@ -46766,9 +46765,8 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/engineering)
"bFF" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel/white,
-/area/medical/virology)
+/turf/open/floor/plating/asteroid,
+/area/space)
"bFG" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 4
@@ -46867,20 +46865,29 @@
/turf/open/floor/plating/asteroid,
/area/hydroponics/garden/abandoned)
"bFS" = (
-/obj/machinery/light{
- dir = 4;
- light_color = "#e8eaff"
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/obj/effect/turf_decal/trimline/green/filled/line{
- icon_state = "trimline_fill";
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
},
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
- icon_state = "scrub_map_on-3";
+/obj/effect/turf_decal/tile/blue{
dir = 1
},
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/machinery/door/airlock/medical{
+ name = "Medbay Break Room";
+ req_access_txt = "5"
+ },
/turf/open/floor/plasteel/white,
-/area/medical/virology)
+/area/medical)
"bFT" = (
/obj/item/seeds/berry,
/turf/open/floor/plating,
@@ -46933,7 +46940,6 @@
department = "Security";
departmentType = 5;
pixel_x = -30;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/red/filled/line{
icon_state = "trimline_fill";
@@ -47010,7 +47016,6 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 1;
name = "Central Hall APC";
- pixel_x = 0;
pixel_y = 25
},
/obj/structure/cable{
@@ -47091,12 +47096,23 @@
/area/medical/medbay/central)
"bGn" = (
/obj/structure/table,
-/obj/effect/turf_decal/trimline/green/filled/line{
+/obj/item/circular_saw{
+ pixel_y = 2
+ },
+/obj/item/scalpel{
+ pixel_y = 15
+ },
+/obj/effect/turf_decal/trimline/blue/filled/line{
icon_state = "trimline_fill";
- dir = 4
+ dir = 9
+ },
+/obj/item/radio/intercom{
+ frequency = 1485;
+ name = "Station Intercom (Medbay)";
+ pixel_x = -30
},
/turf/open/floor/plasteel/white,
-/area/medical/virology)
+/area/medical/surgery)
"bGo" = (
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
@@ -47829,7 +47845,6 @@
icon_state = "sink_alt";
name = "old sink";
pixel_x = 15;
- pixel_y = 0
},
/turf/open/floor/wood,
/area/maintenance/bar)
@@ -48899,26 +48914,21 @@
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"bJE" = (
-/obj/machinery/door/airlock/medical{
- name = "Medical Break Room";
- req_one_access_txt = "47"
- },
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
+ dir = 5
+ },
/obj/structure/disposalpipe/segment,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ icon_state = "trimline_fill";
+ dir = 9
},
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 4
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = -24
},
/turf/open/floor/plasteel/white,
/area/medical)
@@ -49046,19 +49056,14 @@
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"bJN" = (
-/obj/structure/table,
-/obj/item/circular_saw{
- pixel_y = 2
- },
-/obj/item/scalpel{
- pixel_y = 15
- },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
+/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/trimline/blue/filled/line{
icon_state = "trimline_fill";
- dir = 9
+ dir = 8
},
/turf/open/floor/plasteel/white,
-/area/medical/surgery)
+/area/medical)
"bJO" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -49312,20 +49317,17 @@
/turf/open/floor/plating,
/area/maintenance/port)
"bKk" = (
+/obj/machinery/power/apc{
+ areastring = "/area/security/vacantoffice/a";
+ dir = 8;
+ name = "Vacant Office APC";
+ pixel_x = -25
+ },
/obj/structure/cable{
- icon_state = "1-4"
+ icon_state = "0-2"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
- dir = 5
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/trimline/blue/filled/line{
- icon_state = "trimline_fill";
- dir = 9
- },
-/turf/open/floor/plasteel/white,
-/area/medical)
+/turf/open/floor/wood,
+/area/security/vacantoffice/a)
"bKl" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -49665,18 +49667,12 @@
/turf/open/floor/plating,
/area/hydroponics/garden/abandoned)
"bKT" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = -24
+/obj/item/poster/random_contraband,
+/turf/open/floor/plating,
+/turf/open/floor/plating{
+ icon_state = "platingdmg2"
},
-/obj/effect/turf_decal/trimline/blue/filled/line{
- icon_state = "trimline_fill";
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/medical)
+/area/maintenance/aft)
"bKU" = (
/obj/effect/landmark/start/medical_doctor,
/turf/open/floor/plasteel/white,
@@ -49983,7 +49979,6 @@
/obj/machinery/light/small,
/obj/machinery/vending/wallmed{
pixel_x = -28;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/blue/filled/line{
icon_state = "trimline_fill";
@@ -50693,7 +50688,6 @@
areastring = "/area/ai_monitored/turret_protected/aisat_interior";
dir = 1;
name = "MiniSat Antechamber APC";
- pixel_x = 0;
pixel_y = 29
},
/obj/effect/turf_decal/tile/blue{
@@ -52868,7 +52862,6 @@
dir = 2;
name = "MiniSat Foyer APC";
pixel_x = -29;
- pixel_y = 0
},
/obj/effect/turf_decal/tile/blue{
dir = 8
@@ -52936,7 +52929,6 @@
dir = 8;
name = "MiniSat Exterior APC";
pixel_x = -24;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/blue/filled/line{
icon_state = "trimline_fill";
@@ -53390,23 +53382,25 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bQO" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
+/obj/structure/chair/comfy/black{
dir = 8
},
-/obj/effect/turf_decal/tile/neutral,
-/turf/open/floor/plasteel/dark/telecomms,
-/area/ai_monitored/turret_protected/aisat/foyer)
+/obj/machinery/button/door{
+ id = "bridgedoors";
+ name = "Bridge Access Blastdoors";
+ pixel_x = 26;
+ pixel_y = 32;
+ req_access_txt = "19"
+ },
+/obj/machinery/button/door{
+ id = "bridgespace";
+ name = "Bridge External Shutters";
+ pixel_x = 36;
+ pixel_y = 32;
+ req_access_txt = "19"
+ },
+/turf/open/floor/carpet,
+/area/bridge)
"bQP" = (
/obj/machinery/light{
dir = 8;
@@ -53596,7 +53590,6 @@
/obj/machinery/requests_console{
department = "Tool Storage";
departmentType = 0;
- pixel_x = 0;
pixel_y = 30
},
/obj/item/folder/yellow,
@@ -53757,7 +53750,6 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/machinery/newscaster{
- pixel_x = 0;
pixel_y = 32
},
/obj/effect/turf_decal/loading_area{
@@ -54779,10 +54771,14 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bTy" = (
-/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
+ dir = 4
+ },
/turf/closed/mineral{
+ baseturfs = /turf/open/floor/plating/asteroid;
initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
- name = "asteroid"
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
},
/area/asteroid/nearstation)
"bTz" = (
@@ -55102,7 +55098,6 @@
dir = 8;
name = "Tool Storage APC";
pixel_x = -25;
- pixel_y = 0
},
/obj/effect/turf_decal/tile/brown{
dir = 1
@@ -55550,7 +55545,6 @@
dir = 4;
name = "Fore Maintenance APC";
pixel_x = 24;
- pixel_y = 0
},
/turf/open/floor/plating,
/area/maintenance/fore)
@@ -55857,7 +55851,6 @@
},
/obj/structure/sign/directions/evac{
dir = 4;
- pixel_x = 0;
pixel_y = 24
},
/turf/open/floor/plasteel,
@@ -55985,7 +55978,6 @@
/obj/machinery/announcement_system,
/obj/machinery/status_display/ai{
pixel_x = 31;
- pixel_y = 0
},
/turf/open/floor/carpet,
/area/tcommsat/computer)
@@ -57037,7 +57029,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -57319,7 +57310,6 @@
},
/obj/machinery/status_display/evac{
pixel_x = 31;
- pixel_y = 0
},
/turf/open/floor/carpet,
/area/tcommsat/computer)
@@ -57473,7 +57463,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -57505,7 +57494,6 @@
id = "atmos";
name = "Atmospherics Lockdown";
pixel_x = -38;
- pixel_y = 0;
req_access_txt = "24"
},
/turf/open/floor/plasteel,
@@ -57775,7 +57763,6 @@
freerange = 1;
name = "Station Intercom (Telecomms)";
pixel_x = 30;
- pixel_y = 0
},
/turf/open/floor/carpet,
/area/tcommsat/computer)
@@ -58585,7 +58572,6 @@
dir = 4;
name = "Chief Engineer's APC";
pixel_x = 26;
- pixel_y = 0
},
/obj/structure/cable{
icon_state = "0-2";
@@ -58710,7 +58696,6 @@
dir = 8;
name = "Locker Room APC";
pixel_x = -28;
- pixel_y = 0
},
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
@@ -59321,7 +59306,6 @@
dir = 4;
name = "Dormitories APC";
pixel_x = 24;
- pixel_y = 0
},
/obj/structure/cable{
icon_state = "0-8"
@@ -59820,11 +59804,14 @@
/turf/closed/wall/r_wall,
/area/engine/break_room)
"cce" = (
+/obj/structure/lattice,
/turf/closed/mineral{
+ baseturfs = /turf/open/floor/plating/asteroid;
initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
- name = "asteroid"
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
},
-/area/maintenance/department/cargo)
+/area/asteroid/nearstation)
"ccf" = (
/turf/closed/wall/r_wall,
/area/maintenance/starboard/aft)
@@ -60001,7 +59988,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"ccw" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/machinery/light/small{
@@ -60258,7 +60245,6 @@
dir = 4;
name = "Chief Medical Officer's Quarters APC";
pixel_x = 24;
- pixel_y = 0
},
/obj/structure/cable{
icon_state = "0-8"
@@ -60537,7 +60523,7 @@
/turf/open/floor/plating,
/area/maintenance/fore)
"cdE" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/effect/landmark/blobstart,
@@ -60571,7 +60557,7 @@
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/toilet)
"cdH" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/light/small{
@@ -60583,7 +60569,6 @@
name = "Lock Control";
normaldoorcontrol = 1;
pixel_x = 25;
- pixel_y = 0;
specialfunctions = 4
},
/obj/machinery/newscaster{
@@ -61003,7 +60988,6 @@
/area/maintenance/department/crew_quarters/dorms)
"ceK" = (
/obj/structure/sign/warning/radiation/rad_area{
- pixel_x = 0;
pixel_y = -32
},
/turf/open/floor/plating,
@@ -61051,7 +61035,6 @@
/obj/structure/bed,
/obj/machinery/status_display/ai{
pixel_x = -32;
- pixel_y = 0
},
/turf/open/floor/carpet/blue,
/area/crew_quarters/heads/cmo/private)
@@ -61524,7 +61507,6 @@
areastring = "/area/chapel/main";
dir = 1;
name = "Chapel APC";
- pixel_x = 0;
pixel_y = 24
},
/obj/structure/cable{
@@ -62486,7 +62468,6 @@
"cig" = (
/obj/structure/sign/warning/radiation/rad_area{
pixel_x = -32;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/yellow/filled/line{
icon_state = "trimline_fill";
@@ -62847,7 +62828,7 @@
},
/area/maintenance/aft)
"ciL" = (
-/obj/structure/piano,
+/obj/structure/musician/piano,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -63236,7 +63217,6 @@
/area/maintenance/aft)
"cjC" = (
/obj/structure/mirror{
- pixel_x = 0;
pixel_y = -28
},
/obj/item/lipstick/black,
@@ -63575,7 +63555,6 @@
/obj/machinery/vending/coffee,
/obj/machinery/newscaster{
pixel_x = 30;
- pixel_y = 0
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
@@ -63872,7 +63851,6 @@
},
/obj/machinery/newscaster{
pixel_x = -32;
- pixel_y = 0
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
@@ -64015,7 +63993,6 @@
dir = 1;
name = "SMES room APC";
pixel_x = -26;
- pixel_y = 0
},
/obj/structure/cable{
icon_state = "0-2";
@@ -64341,7 +64318,6 @@
broadcasting = 1;
frequency = 1481;
name = "Confessional Intercom";
- pixel_x = 0;
pixel_y = -30
},
/obj/machinery/light/small{
@@ -64362,7 +64338,6 @@
broadcasting = 1;
frequency = 1481;
name = "Confessional Intercom";
- pixel_x = 0;
pixel_y = 30
},
/obj/machinery/light/small{
@@ -64533,14 +64508,13 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"cmq" = (
-/obj/machinery/atmospherics/pipe/simple/cyan/visible{
- dir = 10
- },
/turf/closed/mineral{
+ baseturfs = /turf/open/floor/plating/asteroid;
initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
- name = "asteroid"
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
},
-/area/asteroid/nearstation)
+/area/maintenance/department/cargo)
"cmr" = (
/obj/machinery/atmospherics/pipe/simple/purple/visible{
dir = 5
@@ -64819,24 +64793,9 @@
/turf/open/floor/plating,
/area/chapel/main)
"cmT" = (
-/obj/structure/chair/comfy/black{
- dir = 8
- },
-/obj/machinery/button{
- id = "bridgespace";
- name = "Bridge External Shutters";
- pixel_x = 36;
- pixel_y = 30
- },
-/obj/machinery/button{
- id = "bridgespace";
- name = "Bridge Access Shutters";
- pixel_x = 26;
- pixel_y = 30;
- req_access_txt = "19"
- },
-/turf/open/floor/carpet,
-/area/bridge)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
"cmU" = (
/obj/structure/flora/ausbushes/ppflowers,
/turf/open/floor/grass,
@@ -64890,7 +64849,6 @@
dir = 1;
name = "Atmospherics APC";
pixel_x = -27;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/neutral/filled/line{
icon_state = "trimline_fill";
@@ -65489,17 +65447,14 @@
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"coh" = (
-/obj/machinery/power/apc{
- areastring = "/area/vacant_room/office/a";
- dir = 8;
- name = "Vacant Office APC";
- pixel_x = -25
- },
/obj/structure/cable{
- icon_state = "0-2"
+ icon_state = "0-4"
},
-/turf/open/floor/wood,
-/area/security/vacantoffice/a)
+/turf/open/floor/plating,
+/turf/open/floor/plating{
+ icon_state = "platingdmg2"
+ },
+/area/maintenance/department/electrical)
"coi" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/dark/visible{
@@ -66985,13 +66940,14 @@
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"crd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/simple/dark/visible{
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/power/apc/auto_name/north,
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
+/turf/open/floor/plating,
+/turf/open/floor/plating{
+ icon_state = "platingdmg2"
+ },
+/area/maintenance/aft)
"cre" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
@@ -67020,17 +66976,6 @@
},
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
-"crh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 2;
- name = "Fuel Pipe to Incinerator"
- },
-/obj/structure/cable/yellow{
- icon_state = "1-8"
- },
-/turf/open/floor/plasteel,
-/area/maintenance/disposal/incinerator)
"cri" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -68564,7 +68509,6 @@
areastring = "/area/hydroponics/garden";
dir = 2;
name = "Garden APC";
- pixel_x = 0;
pixel_y = -26
},
/obj/structure/cable{
@@ -68773,10 +68717,6 @@
/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
-"cuO" = (
-/obj/machinery/atmospherics/pipe/simple/supply/visible,
-/turf/closed/wall/r_wall,
-/area/maintenance/disposal/incinerator)
"cuP" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -69010,7 +68950,8 @@
/turf/open/floor/plating,
/area/engine/atmos)
"cvr" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ icon_state = "pipe11-2";
dir = 5
},
/turf/closed/wall/r_wall,
@@ -69033,7 +68974,7 @@
/turf/open/space,
/area/engine/atmos)
"cvu" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/closed/wall/r_wall,
@@ -69275,7 +69216,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/obj/machinery/camera/autoname{
@@ -69326,7 +69266,6 @@
dir = 4;
name = "Auxillary Base Construction APC";
pixel_x = 24;
- pixel_y = 0
},
/obj/structure/cable{
icon_state = "0-2"
@@ -70259,14 +70198,9 @@
},
/turf/open/floor/plating,
/area/hallway/primary/fore)
-"cyf" = (
-/obj/machinery/the_singularitygen/tesla,
-/turf/open/floor/plating,
-/area/engine/engineering)
"cyg" = (
-/obj/effect/turf_decal/box,
-/obj/machinery/the_singularitygen,
-/turf/open/floor/plasteel,
+/obj/machinery/the_singularitygen/tesla,
+/turf/open/floor/plating/airless,
/area/engine/engineering)
"cyh" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
@@ -70333,7 +70267,6 @@
},
/obj/item/radio/intercom{
pixel_x = -26;
- pixel_y = 0
},
/obj/item/stack/cable_coil/white{
pixel_x = 3;
@@ -71924,22 +71857,6 @@
/obj/structure/grille,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"cAV" = (
-/obj/structure/sink{
- dir = 8;
- pixel_x = -12;
- pixel_y = 2
- },
-/obj/effect/turf_decal/trimline/green/filled/line{
- icon_state = "trimline_fill";
- dir = 8
- },
-/obj/item/radio/intercom{
- dir = 8;
- pixel_x = -28
- },
-/turf/open/floor/plasteel,
-/area/hydroponics)
"cAW" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
@@ -72099,7 +72016,6 @@
},
/obj/item/radio/intercom{
pixel_x = 26;
- pixel_y = 0
},
/turf/open/floor/plasteel/dark/corner,
/area/engine/atmos)
@@ -72243,7 +72159,6 @@
dir = 4;
name = "Starboard Hallway APC";
pixel_x = 24;
- pixel_y = 0
},
/obj/structure/cable{
icon_state = "0-8"
@@ -72696,7 +72611,6 @@
name = "Auxillary Base Monitor";
network = list("auxbase");
pixel_x = 25;
- pixel_y = 0
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/structure/cable{
@@ -73558,7 +73472,6 @@
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
/obj/item/radio/intercom{
- pixel_x = 0;
pixel_y = 23
},
/turf/open/floor/plasteel/dark,
@@ -74001,7 +73914,6 @@
light_color = "#cee5d2"
},
/obj/machinery/status_display/evac{
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/plasteel/white,
@@ -74571,7 +74483,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/obj/structure/fireaxecabinet{
pixel_x = -31;
- pixel_y = 0
},
/obj/effect/turf_decal/trimline/neutral/filled/line{
icon_state = "trimline_fill";
@@ -75429,7 +75340,6 @@
id = "aux_base_shutters";
name = "Public Shutters Control";
pixel_x = 24;
- pixel_y = 0;
req_one_access_txt = "32;47;48"
},
/obj/machinery/camera{
@@ -76487,7 +76397,6 @@
/obj/machinery/flasher{
id = "brigflashdoor";
pixel_x = -26;
- pixel_y = 0
},
/turf/open/floor/plasteel,
/area/security/brig)
@@ -77106,7 +77015,6 @@
/obj/effect/turf_decal/tile/red,
/obj/item/storage/secure/safe/HoS{
pixel_x = 36;
- pixel_y = 0
},
/obj/machinery/status_display/ai{
pixel_y = -32
@@ -78598,7 +78506,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel,
@@ -78632,7 +78539,6 @@
freerange = 1;
name = "Station Intercom (Telecomms)";
pixel_x = 30;
- pixel_y = 0
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
@@ -78643,7 +78549,6 @@
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom";
- pixel_x = 0;
pixel_y = -28
},
/turf/open/floor/plasteel/dark,
@@ -79436,11 +79341,16 @@
/turf/open/floor/engine,
/area/engine/engineering)
"cNv" = (
-/turf/closed/mineral{
- initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
- name = "asteroid"
+/obj/machinery/atmospherics/pipe/simple/cyan/visible{
+ dir = 10
},
-/area/maintenance/department/crew_quarters/dorms)
+/turf/closed/mineral{
+ baseturfs = /turf/open/floor/plating/asteroid;
+ initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
+ },
+/area/asteroid/nearstation)
"cNw" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -79486,7 +79396,6 @@
id = "ewradiation";
name = "Shutters Control";
pixel_x = 33;
- pixel_y = 0;
req_access_txt = "11"
},
/turf/open/floor/plasteel,
@@ -81797,7 +81706,6 @@
/obj/structure/bed/dogbed/ian,
/obj/item/radio/intercom{
dir = 2;
- pixel_x = 0;
pixel_y = 28
},
/turf/open/floor/wood,
@@ -83777,7 +83685,6 @@
dir = 1
},
/obj/structure/sign/warning/securearea{
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/plasteel,
@@ -83795,7 +83702,6 @@
areastring = "/area/engine/storage";
dir = 2;
name = "Engineering Storage APC";
- pixel_x = 0;
pixel_y = -26
},
/obj/structure/cable,
@@ -84016,7 +83922,7 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"cXf" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/light/small{
@@ -84182,7 +84088,6 @@
dir = 4;
name = "Electrical Maintenance APC";
pixel_x = 24;
- pixel_y = 0
},
/obj/structure/cable{
icon_state = "0-8"
@@ -84364,7 +84269,6 @@
"cXO" = (
/obj/machinery/status_display/ai{
pixel_x = -32;
- pixel_y = 0
},
/obj/machinery/power/apc/highcap/ten_k{
areastring = "/area/crew_quarters/heads/chief/private";
@@ -84400,18 +84304,6 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/qm/private)
-"cXS" = (
-/obj/item/coin/twoheaded{
- name = "quarter"
- },
-/turf/closed/wall,
-/area/quartermaster/sorting)
-"cXT" = (
-/obj/item/coin/twoheaded{
- name = "quarter"
- },
-/turf/closed/wall,
-/area/janitor)
"cXU" = (
/obj/structure/cable/yellow{
icon_state = "2-8"
@@ -84468,7 +84360,6 @@
/obj/machinery/camera/autoname,
/obj/item/radio/intercom{
name = "Station Intercom";
- pixel_x = 0;
pixel_y = 26
},
/turf/open/floor/plasteel/cafeteria,
@@ -84492,7 +84383,6 @@
},
/obj/item/radio/intercom{
name = "Station Intercom";
- pixel_x = 0;
pixel_y = 26
},
/turf/open/floor/plasteel/cafeteria,
@@ -84583,30 +84473,18 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"cYi" = (
-/obj/item/poster/random_contraband,
-/turf/open/floor/plating,
-/turf/open/floor/plating{
- icon_state = "platingdmg2"
+/turf/closed/mineral{
+ baseturfs = /turf/open/floor/plating/asteroid;
+ initial_gas_mix = "o2=22;n2=82;TEMP=293.15";
+ name = "asteroid";
+ turf_type = /turf/open/floor/plating/asteroid
},
-/area/maintenance/aft)
+/area/maintenance/department/crew_quarters/dorms)
"cYj" = (
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/turf/open/floor/plating,
-/turf/open/floor/plating{
- icon_state = "platingdmg2"
- },
-/area/maintenance/department/electrical)
-"cYk" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/turf/open/floor/plating,
-/turf/open/floor/plating{
- icon_state = "platingdmg2"
- },
-/area/maintenance/aft)
+/obj/effect/turf_decal/box,
+/obj/machinery/the_singularitygen,
+/turf/open/floor/plasteel/airless,
+/area/engine/engineering)
"cYl" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
@@ -95221,7 +95099,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aaA
@@ -95478,7 +95356,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aaA
@@ -95735,7 +95613,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aaA
@@ -95992,7 +95870,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aco
@@ -96249,7 +96127,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aco
@@ -96506,7 +96384,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aco
@@ -96763,7 +96641,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aco
@@ -96781,7 +96659,7 @@ aaA
aco
aco
aaA
-biA
+bTy
aaR
aaR
aaR
@@ -97020,7 +96898,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aaA
@@ -97038,7 +96916,7 @@ aaA
aaA
aaA
aaA
-biA
+bTy
aaA
aaR
aaR
@@ -97277,7 +97155,7 @@ aaA
abY
aeG
abY
-bhX
+asd
aaA
aaA
aaA
@@ -97295,7 +97173,7 @@ aaA
aaA
aaA
aaA
-biA
+bTy
aaA
aaA
aaR
@@ -100208,7 +100086,7 @@ bNs
bOm
bPF
bQn
-bQO
+bQn
bRC
bSj
bTa
@@ -110692,7 +110570,7 @@ aab
aab
bba
bcg
-cmT
+bQO
bcg
bba
aab
@@ -117713,7 +117591,7 @@ cjy
cfQ
cCG
cqg
-coh
+bKk
clM
cWn
cnw
@@ -119979,7 +119857,7 @@ bwR
bAY
bwR
bCT
-bwR
+bsN
bsN
aaA
bDK
@@ -120236,13 +120114,13 @@ bAy
bWT
bAy
bDa
-bwi
bsN
aaA
aaA
aaA
aaA
aaA
+aaA
bDK
bDK
bDK
@@ -120492,7 +120370,6 @@ bAl
bAz
bBx
bCr
-bFS
bwr
bsN
aaA
@@ -120502,6 +120379,7 @@ aaA
aaA
aaA
aaA
+aaA
bFH
cUu
bJs
@@ -120750,7 +120628,6 @@ bAA
bBy
bwR
bwR
-bwR
bsN
bsN
bsN
@@ -120759,6 +120636,7 @@ aaA
aaA
aaA
aaA
+aaA
bFH
bIt
cPz
@@ -121008,14 +120886,14 @@ bBz
bFc
bwR
bDP
-bEX
-btT
+bEP
bGr
bsN
bsN
bsN
bsN
aaA
+aaA
bFH
cTt
bJs
@@ -121265,14 +121143,14 @@ bBd
bwo
bwR
bDX
-bEP
-bum
+bEX
bGs
bsN
bHy
cbi
bsN
aaA
+aaA
bFH
bFI
bJs
@@ -121523,13 +121401,13 @@ bwq
cEF
bDY
bEQ
-bFF
bGP
bGN
bHA
bIs
bsN
aaA
+aaA
bFH
cOB
bLQ
@@ -121780,13 +121658,13 @@ bXr
bwR
bXU
bER
-bER
bHd
bsN
bsN
bsN
bsN
aaA
+aaA
bFH
bFI
bJr
@@ -122037,12 +121915,12 @@ bwr
bsN
bEa
bEY
-bGn
bHB
bsN
aaA
aaA
aaA
+aaA
bFH
bFH
bFH
@@ -122296,7 +122174,7 @@ bsN
bsN
bsN
bsN
-bsN
+aaA
aaA
aaA
bFH
@@ -124406,7 +124284,7 @@ bYa
bYa
bYa
bYa
-cYi
+bKT
bYa
bYa
ceG
@@ -124836,7 +124714,7 @@ bgr
bjL
bgr
bgr
-bqt
+bqu
bgp
bnu
bAs
@@ -125079,7 +124957,7 @@ aTX
aSK
aSK
aSK
-aYk
+aYj
aRH
bax
bbI
@@ -125336,7 +125214,7 @@ aZV
aVh
aWe
aZW
-aYl
+aYk
aRN
aRN
aRN
@@ -126723,11 +126601,11 @@ cmd
aaA
cSc
cVT
-cYj
+coh
cXu
cXz
ceG
-cYk
+crd
cTU
cyo
aab
@@ -126879,10 +126757,10 @@ aRO
cJN
aSY
aWq
-aVs
+aYp
aYw
cMT
-cAV
+bqt
aVs
bcK
bgp
@@ -128724,7 +128602,7 @@ bwC
bGZ
bJe
bIy
-bJN
+bGn
bKR
bLr
bLD
@@ -129155,7 +129033,7 @@ amV
aoi
atL
aqL
-ayk
+ase
aza
auv
avq
@@ -129270,7 +129148,7 @@ bSa
ccX
cUQ
bRA
-cNv
+cYi
cfv
chd
cqp
@@ -129412,7 +129290,7 @@ alC
aqA
atV
aqL
-asd
+asf
aCp
auw
avr
@@ -129669,7 +129547,7 @@ amg
aok
apC
amg
-ase
+asg
aET
aPK
amg
@@ -129926,7 +129804,7 @@ amW
aol
apD
aGS
-asf
+asi
atv
aux
amg
@@ -129962,7 +129840,7 @@ cAS
aUm
aWm
aRO
-aYp
+aYl
aZn
aSX
aSX
@@ -130183,7 +130061,7 @@ amX
aom
apE
aqO
-asg
+auA
atw
auy
amg
@@ -130265,9 +130143,9 @@ bBI
bHL
bIA
bJB
+bFS
bJE
-bKk
-bKT
+bJN
bLt
bMb
bKA
@@ -130440,7 +130318,7 @@ amY
aon
apF
aqP
-ash
+auB
atx
auz
amg
@@ -130697,9 +130575,9 @@ amZ
apq
apG
aqQ
-asi
avI
-auA
+ayk
+bhX
amg
aAu
aAu
@@ -130956,7 +130834,7 @@ apF
aqR
ash
atz
-auB
+biA
amg
aaA
aaA
@@ -131241,7 +131119,7 @@ aHM
bgo
aQj
boh
-aRO
+aRZ
aTa
aUo
aZO
@@ -131776,7 +131654,7 @@ bit
bit
bla
bit
-cXT
+bit
bvp
bns
bmq
@@ -131863,9 +131741,9 @@ cwT
cwp
cwS
cwT
-ctE
-cyf
-ctE
+cwS
+cyg
+cwS
cwT
cwS
cWG
@@ -132120,9 +131998,9 @@ cwT
cwp
cwS
cwU
-ctE
-cyg
-ctE
+cwS
+cYj
+cwS
cwU
cwS
cWG
@@ -132377,9 +132255,9 @@ cwT
cwp
cwS
cwT
-ctE
-ctE
-ctE
+cwS
+cwS
+cwS
cwT
cwS
cWG
@@ -132796,8 +132674,8 @@ bbV
cIT
cIZ
bbV
-bip
-bip
+aRZ
+aRZ
bit
bjl
bkb
@@ -132831,7 +132709,7 @@ bCE
bDx
cBs
aaR
-aaR
+bFF
aaR
aaR
bpe
@@ -135368,8 +135246,8 @@ ber
ber
bgH
bda
-cce
-cce
+cmq
+cmq
aQz
bjo
aYM
@@ -135625,8 +135503,8 @@ bem
bfA
bgJ
bda
-cce
-cce
+cmq
+cmq
aQz
cnu
aRj
@@ -135690,7 +135568,7 @@ aaA
aaA
aaA
aaA
-cmq
+cNv
cds
cfA
cdX
@@ -135882,8 +135760,8 @@ bfT
bfA
bhS
bda
-cce
-cce
+cmq
+cmq
aQz
aQz
aQz
@@ -136139,8 +136017,8 @@ beo
bgG
bhT
bda
-cce
-cce
+cmq
+cmq
aQz
cSX
cTb
@@ -136395,9 +136273,9 @@ bcY
cXY
bfC
bhT
-cXS
-cce
-cce
+bda
+cmq
+cmq
aQz
cSY
cTc
@@ -136653,8 +136531,8 @@ beq
bfD
bgK
bda
-cce
-cce
+cmq
+cmq
aQz
cSZ
cTd
@@ -137681,7 +137559,7 @@ aQz
aaA
aaA
aaA
-bhX
+asd
aaA
aaA
aQz
@@ -139993,7 +139871,7 @@ aaA
aaA
aaA
aaA
-bTy
+cce
aaA
aaa
aaa
@@ -140006,7 +139884,7 @@ bnL
bot
boK
bpl
-bpP
+bip
bqH
brn
brG
@@ -142645,7 +142523,7 @@ aaA
aaA
aaA
cnp
-crd
+cog
cpi
cqc
cre
@@ -143419,7 +143297,7 @@ cnp
cnp
cpl
cqf
-crh
+bpP
cSf
csV
ctS
@@ -143680,7 +143558,7 @@ cnp
csf
csW
ctT
-cuO
+cmT
cvz
aab
aab
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index db9a620ad6..e6eddb2777 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -1028,7 +1028,7 @@
/obj/machinery/light/small{
dir = 4
},
-/obj/structure/toilet{
+/obj/structure/toilet/secret/prison{
dir = 4
},
/turf/open/floor/plasteel/freezer,
@@ -2291,6 +2291,10 @@
},
/turf/open/floor/plating,
/area/crew_quarters/fitness/recreation)
+"aeD" = (
+/obj/machinery/door/airlock/external,
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"aeE" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -3112,6 +3116,9 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"afQ" = (
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"afR" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -3180,6 +3187,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
+"afZ" = (
+/obj/structure/girder,
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"aga" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -3658,6 +3669,10 @@
},
/turf/open/floor/plasteel/dark,
/area/security/prison)
+"agQ" = (
+/obj/item/electronics/airlock,
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"agR" = (
/obj/machinery/airalarm{
dir = 4;
@@ -4264,6 +4279,11 @@
icon_state = "platingdmg1"
},
/area/maintenance/fore)
+"ahT" = (
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/hallway/primary/port)
"ahU" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/table,
@@ -4780,6 +4800,14 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
+"aiT" = (
+/obj/effect/decal/cleanable/oil{
+ icon_state = "floor5"
+ },
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
+/area/hallway/primary/port)
"aiU" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/turf_decal/tile/neutral{
@@ -4800,6 +4828,11 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
+"aiW" = (
+/turf/open/floor/plating{
+ icon_state = "platingdmg1"
+ },
+/area/hallway/primary/port)
"aiX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
@@ -4901,6 +4934,14 @@
/obj/item/restraints/handcuffs/cable/pink,
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"ajk" = (
+/obj/structure/shuttle/engine/propulsion/right{
+ dir = 4
+ },
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/hallway/primary/port)
"ajl" = (
/obj/item/soap/deluxe,
/obj/item/storage/secure/safe{
@@ -4992,6 +5033,10 @@
},
/turf/open/floor/plasteel/dark,
/area/security/warden)
+"ajs" = (
+/obj/item/stack/sheet/metal/ten,
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"ajt" = (
/obj/structure/closet{
name = "Evidence Closet 5"
@@ -5012,6 +5057,10 @@
},
/turf/open/floor/plasteel/dark,
/area/security/warden)
+"aju" = (
+/obj/item/stack/sheet/mineral/wood/twenty,
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"ajv" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -6872,6 +6921,11 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/maintenance/fore)
+"amv" = (
+/obj/item/stack/sheet/metal/ten,
+/obj/item/wrench,
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"amw" = (
/obj/structure/window/reinforced,
/obj/machinery/door/window/eastright{
@@ -6908,6 +6962,10 @@
/obj/structure/window/reinforced,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
+"amB" = (
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/floor/plating,
+/area/hallway/primary/port)
"amC" = (
/obj/structure/chair{
dir = 4
@@ -15438,7 +15496,7 @@
},
/area/maintenance/fore)
"aDP" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/obj/machinery/light/small{
@@ -16832,7 +16890,7 @@
/turf/open/floor/plating,
/area/maintenance/fore)
"aGz" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/obj/machinery/light/small{
@@ -18115,7 +18173,7 @@
/turf/open/floor/plating,
/area/maintenance/fore)
"aJa" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/obj/machinery/light/small{
@@ -18142,7 +18200,7 @@
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/toilet/restrooms)
"aJc" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/machinery/light/small{
@@ -32222,7 +32280,7 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/captain/private)
"bkL" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 13
},
/obj/machinery/light,
@@ -33789,16 +33847,6 @@
},
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/entry)
-"bnM" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/hallway/primary/port)
-"bnP" = (
-/obj/machinery/door/airlock/external{
- name = "Common Mining Dock"
- },
-/turf/open/floor/plating,
-/area/hallway/primary/port)
"bnR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -34933,25 +34981,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
-"bqf" = (
-/turf/open/floor/plating,
-/area/hallway/primary/port)
-"bqg" = (
-/obj/docking_port/stationary{
- dir = 2;
- dwidth = 3;
- height = 5;
- id = "commonmining_home";
- name = "SS13: Common Mining Dock";
- roundstart_template = /datum/map_template/shuttle/mining_common/meta;
- width = 7
- },
-/turf/open/floor/plating,
-/area/hallway/primary/port)
-"bqi" = (
-/obj/structure/sign/warning/docking,
-/turf/closed/wall,
-/area/hallway/primary/port)
"bqj" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment,
@@ -40332,7 +40361,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/toilet/auxiliary)
"bBp" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/obj/machinery/light/small{
@@ -41803,7 +41832,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/toilet/auxiliary)
"bEv" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/obj/machinery/light/small{
@@ -43508,7 +43537,7 @@
/turf/open/floor/plating,
/area/crew_quarters/toilet/auxiliary)
"bHQ" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/obj/machinery/light/small{
@@ -44116,20 +44145,20 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "N2O to Pure"
- },
/obj/machinery/atmospherics/pipe/simple/green/visible,
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel/cafeteria,
/area/engine/atmos)
"bIZ" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible{
- dir = 4
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "N2O to Pure"
},
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
@@ -47280,10 +47309,6 @@
/area/engine/atmos)
"bPw" = (
/obj/machinery/atmospherics/pipe/simple/green/visible,
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "Plasma to Pure"
- },
/obj/structure/window/reinforced{
dir = 4
},
@@ -47301,6 +47326,9 @@
/obj/effect/turf_decal/tile/purple{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engine/atmos)
"bPx" = (
@@ -49746,10 +49774,6 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bUH" = (
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 8;
- name = "CO2 to Pure"
- },
/obj/machinery/atmospherics/pipe/simple/green/visible,
/obj/structure/window/reinforced{
dir = 4
@@ -49768,6 +49792,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/yellow/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"bUI" = (
@@ -53170,13 +53197,10 @@
name = "Inner Pipe Access";
req_access_txt = "24"
},
-/obj/machinery/atmospherics/components/binary/pump{
- dir = 1;
- name = "O2 to Pure"
- },
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"cbl" = (
@@ -79550,7 +79574,7 @@
/turf/closed/wall,
/area/crew_quarters/bar)
"dhU" = (
-/obj/structure/piano,
+/obj/structure/musician/piano,
/obj/structure/window/reinforced{
dir = 8
},
@@ -81712,19 +81736,14 @@
/obj/machinery/door/firedoor,
/turf/open/floor/plating,
/area/crew_quarters/cryopod)
-"eQf" = (
-/obj/machinery/computer/shuttle/mining/common{
- dir = 1
+"eJq" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "CO2 to Pure"
},
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/hallway/primary/port)
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
"eZe" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -82112,6 +82131,13 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"kJW" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 1;
+ name = "O2 to Pure"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
"kOt" = (
/obj/item/multitool,
/obj/item/screwdriver,
@@ -82335,6 +82361,14 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
+"njd" = (
+/obj/machinery/atmospherics/pipe/simple/cyan/visible,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ name = "Plasma to Pure"
+ },
+/turf/open/floor/plasteel/dark,
+/area/engine/atmos)
"nnK" = (
/obj/item/stack/sheet/glass/fifty,
/obj/item/paper_bin,
@@ -97318,9 +97352,9 @@ bjX
blU
baE
baE
-bnM
-bnM
-bnM
+baE
+baE
+baE
baE
baE
jPu
@@ -97573,13 +97607,13 @@ bgw
bix
bjY
blV
-bqi
-bqf
-bqf
-bqf
-bqf
-bqf
-bqi
+baE
+afQ
+afQ
+afQ
+afZ
+afQ
+baE
djW
bNd
alK
@@ -97830,13 +97864,13 @@ bgx
biy
bjZ
blW
-bnM
-bqf
-bqf
-bqf
-bqf
-bqf
-bnM
+baE
+afZ
+afQ
+ajs
+afQ
+afQ
+baE
bBf
kQP
bzx
@@ -98087,13 +98121,13 @@ bgy
biz
bka
blX
-bnM
-bqf
-bqf
-bqf
-bqf
-bqf
-bnM
+baE
+afQ
+afQ
+afQ
+afQ
+afQ
+baE
bBf
bCL
bEq
@@ -98344,13 +98378,13 @@ bgz
biA
bnR
blY
-bnP
-bqg
-bqf
-bqf
-bqf
-bqf
-bnM
+aeD
+agQ
+afQ
+afQ
+afQ
+afQ
+baE
rNX
jBe
bzx
@@ -98601,13 +98635,13 @@ bgA
biz
bkb
blZ
-eQf
-bqf
-bqf
-bqf
-bqf
-bqf
-bnM
+baE
+ahT
+afQ
+afQ
+aju
+afQ
+baE
bBh
xmb
iSt
@@ -98858,13 +98892,13 @@ bpt
bcW
bkc
bma
-bnM
-bqf
-bqf
-bqf
-bqf
-bqf
-bnM
+baE
+ahT
+aiW
+afQ
+amv
+afQ
+baE
bBf
bCM
bzx
@@ -99115,13 +99149,13 @@ bbK
bcW
dhP
bqd
-bqi
-bqf
-bqf
-bqf
-bqf
-bqf
-bqi
+baE
+aiT
+ajk
+afQ
+amB
+afQ
+baE
djW
bsx
xfI
@@ -99374,9 +99408,9 @@ bkd
bmb
baE
baE
-bnM
baE
-bnM
+baE
+baE
baE
baE
bBf
@@ -126382,7 +126416,7 @@ dDm
bIS
bZK
cbk
-ccP
+kJW
ceh
cfx
bAR
@@ -127657,11 +127691,11 @@ bIZ
bKG
bMl
dhj
-bIZ
+njd
bKG
bMl
bKG
-bIZ
+eJq
bKG
bMl
bYB
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index 2ca3c3deee..8a951881f9 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -11768,7 +11768,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/theatre)
"atY" = (
-/obj/structure/piano{
+/obj/structure/musician/piano{
icon_state = "piano"
},
/obj/machinery/light{
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index fc5f6e9778..bdbce36c9c 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -2285,7 +2285,7 @@
/turf/open/floor/plasteel,
/area/security/prison)
"ahb" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/prison{
dir = 8
},
/turf/open/floor/plasteel/freezer,
@@ -9106,7 +9106,7 @@
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/heads/captain)
"avK" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/turf/open/floor/plasteel/freezer,
@@ -14667,7 +14667,7 @@
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/toilet/restrooms)
"aIl" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 8
},
/obj/machinery/light/small{
@@ -16490,7 +16490,7 @@
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/cafeteria/lunchroom)
"aNc" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/obj/effect/landmark/start/assistant,
@@ -21324,7 +21324,7 @@
"aYm" = (
/obj/structure/closet/crate/wooden/toy,
/obj/item/lipstick/random,
-/obj/item/clothing/gloves/color/rainbow/clown,
+/obj/item/clothing/gloves/color/rainbow,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -43015,7 +43015,7 @@
/area/maintenance/department/engine)
"bUb" = (
/obj/structure/grille/broken,
-/obj/structure/piano,
+/obj/structure/musician/piano,
/turf/open/floor/plating,
/area/maintenance/department/engine)
"bUc" = (
@@ -47393,7 +47393,7 @@
/turf/open/floor/plasteel/grimy,
/area/chapel/main/monastery)
"cgO" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/obj/machinery/light/small{
@@ -47734,7 +47734,7 @@
/turf/open/floor/plasteel/grimy,
/area/chapel/main/monastery)
"ciq" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
pixel_y = 8
},
/turf/open/floor/plasteel/showroomfloor,
@@ -55939,7 +55939,7 @@
/turf/open/floor/carpet,
/area/chapel/office)
"kgR" = (
-/obj/structure/toilet{
+/obj/structure/toilet/secret/low_loot{
dir = 4
},
/turf/open/floor/plating,
@@ -58271,7 +58271,7 @@
/turf/open/floor/plating,
/area/chapel/office)
"plA" = (
-/obj/structure/piano,
+/obj/structure/musician/piano,
/turf/open/floor/plasteel/dark,
/area/maintenance/department/crew_quarters/dorms)
"pmB" = (
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index f9c3653b35..c9b81cefd9 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -10005,6 +10005,12 @@
/obj/structure/chair/stool,
/turf/open/floor/plasteel,
/area/syndicate_mothership)
+"wZ" = (
+/obj/structure/bed,
+/obj/item/bedsheet/syndie,
+/obj/effect/landmark/holding_facility,
+/turf/open/indestructible/hotelwood,
+/area/centcom/holding)
"xa" = (
/obj/machinery/door/window/northright{
dir = 4;
@@ -12452,6 +12458,13 @@
},
/turf/open/floor/plasteel/dark,
/area/centcom/evac)
+"CQ" = (
+/obj/effect/landmark/holding_facility,
+/mob/living/simple_animal/bot/medbot{
+ name = "Syndicate Hospitality Drone"
+ },
+/turf/open/indestructible/hotelwood,
+/area/centcom/holding)
"CR" = (
/obj/machinery/computer/security{
dir = 8
@@ -14407,7 +14420,7 @@
/obj/machinery/light{
dir = 8
},
-/obj/structure/piano,
+/obj/structure/musician/piano,
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"Hk" = (
@@ -17251,10 +17264,21 @@
/obj/structure/window/reinforced/fulltile,
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
+"Ql" = (
+/obj/machinery/light,
+/obj/effect/landmark/holding_facility,
+/turf/open/indestructible/hotelwood,
+/area/centcom/holding)
"Qm" = (
/obj/singularity/wizard/mapped,
/turf/open/indestructible/binary,
/area/fabric_of_reality)
+"Qn" = (
+/obj/machinery/vr_sleeper/hugbox{
+ dir = 8
+ },
+/turf/open/indestructible/hotelwood,
+/area/centcom/holding)
"Qo" = (
/turf/open/floor/mineral/plastitanium/red,
/area/centcom/evac)
@@ -17794,7 +17818,7 @@
/area/syndicate_mothership)
"Tn" = (
/obj/structure/table/wood/fancy,
-/obj/item/candle/infinite{
+/obj/item/candle/infinite/hugbox{
pixel_y = 6
},
/turf/open/indestructible/hotelwood,
@@ -17820,7 +17844,6 @@
dir = 4
},
/obj/structure/window/reinforced/tinted{
- icon_state = "twindow";
dir = 1
},
/turf/open/floor/plasteel/white,
@@ -17897,7 +17920,6 @@
dir = 8
},
/obj/structure/window/reinforced/tinted{
- icon_state = "twindow";
dir = 1
},
/obj/machinery/washing_machine,
@@ -17939,10 +17961,13 @@
/obj/vehicle/ridden/janicart,
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
-"Ud" = (
-/obj/effect/landmark/holding_facility,
+"Uc" = (
+/obj/machinery/vending/sustenance,
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
+"Ud" = (
+/turf/closed/indestructible/wood,
+/area/centcom/holding)
"Ug" = (
/obj/machinery/door/poddoor/shuttledock{
checkdir = 1;
@@ -17962,6 +17987,11 @@
},
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
+"Ui" = (
+/obj/structure/table,
+/obj/item/clothing/mask/luchador/tecnicos,
+/turf/open/floor/holofloor/wood,
+/area/holodeck/rec_center/wrestlingarena)
"Uj" = (
/obj/machinery/door/airlock/centcom{
name = "Restroom";
@@ -18204,6 +18234,11 @@
/obj/structure/window/reinforced/tinted,
/turf/open/floor/plasteel/freezer,
/area/syndicate_mothership)
+"Vk" = (
+/obj/structure/table,
+/obj/item/storage/belt/champion/wrestling/holodeck,
+/turf/open/floor/holofloor/wood,
+/area/holodeck/rec_center/wrestlingarena)
"Vt" = (
/obj/item/paper/fluff/stations/centcom/disk_memo,
/obj/structure/noticeboard{
@@ -18368,6 +18403,11 @@
},
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
+"Wx" = (
+/obj/structure/table,
+/obj/item/clothing/mask/luchador,
+/turf/open/floor/holofloor/wood,
+/area/holodeck/rec_center/wrestlingarena)
"Wz" = (
/obj/structure/table,
/obj/item/storage/backpack/duffelbag/med/surgery,
@@ -18741,6 +18781,11 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/centcom/holding)
+"Yv" = (
+/obj/structure/table,
+/obj/item/clothing/mask/luchador/rudos,
+/turf/open/floor/holofloor/wood,
+/area/holodeck/rec_center/wrestlingarena)
"Yw" = (
/turf/closed/indestructible/fakedoor{
name = "External Access"
@@ -18750,6 +18795,9 @@
/obj/machinery/door/airlock/titanium,
/turf/open/floor/mineral/titanium,
/area/centcom/evac)
+"YC" = (
+/turf/open/floor/holofloor/wood,
+/area/holodeck/rec_center/wrestlingarena)
"YJ" = (
/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/reagent_containers/food/drinks/shaker,
@@ -18822,6 +18870,14 @@
},
/turf/open/floor/plasteel,
/area/centcom/supplypod)
+"Zl" = (
+/obj/structure/table,
+/obj/item/clothing/gloves/boxing,
+/obj/item/clothing/gloves/boxing/blue,
+/obj/item/clothing/gloves/boxing/green,
+/obj/item/clothing/gloves/boxing/yellow,
+/turf/open/floor/holofloor/wood,
+/area/holodeck/rec_center/wrestlingarena)
"Zr" = (
/obj/machinery/light,
/turf/open/floor/plasteel/dark,
@@ -18844,6 +18900,10 @@
/obj/effect/landmark/start/nukeop_leader,
/turf/open/floor/wood,
/area/syndicate_mothership)
+"ZB" = (
+/obj/effect/landmark/holding_facility,
+/turf/open/indestructible/hotelwood,
+/area/centcom/holding)
"ZE" = (
/obj/structure/sink{
dir = 4;
@@ -43829,11 +43889,11 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
+Ud
+Ud
+Ud
+Ud
+Ud
aa
aa
aa
@@ -44086,11 +44146,11 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
+Ud
+Uc
+ZB
+ZB
+Ud
aa
aa
aa
@@ -44343,11 +44403,11 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
+Ud
+ZB
+CQ
+Ql
+Ud
aa
aa
aa
@@ -44600,11 +44660,11 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
+Ud
+wZ
+ZB
+Qn
+Ud
aa
aa
aa
@@ -44857,11 +44917,11 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
+Ud
+Ud
+Ud
+Ud
+Ud
aa
aa
aa
@@ -46174,8 +46234,8 @@ Sd
HH
Nd
WM
-Ud
-Ud
+Sd
+Sd
NT
Nj
Po
@@ -46431,8 +46491,8 @@ Sd
XM
NT
Sd
-Ud
-Ud
+Sd
+Sd
NT
YU
zT
@@ -46688,8 +46748,8 @@ Sd
Tn
NT
Sd
-Ud
-Ud
+Sd
+Sd
NT
YU
zT
@@ -46945,8 +47005,8 @@ Sd
GY
NT
Sd
-Ud
-Ud
+Sd
+Sd
NT
YU
zT
@@ -47202,8 +47262,8 @@ Qk
Vu
Nd
Gs
-Ud
-Ud
+Sd
+Sd
NT
Mt
PA
@@ -71951,18 +72011,18 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+ab
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ab
aa
aa
aa
@@ -72208,18 +72268,18 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+bj
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+fx
aa
aa
aa
@@ -72465,18 +72525,18 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+bj
+Vk
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+Vk
+fx
aa
aa
aa
@@ -72722,18 +72782,18 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+bj
+Vk
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+Vk
+fx
aa
aa
aa
@@ -72979,18 +73039,18 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+bj
+Vk
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+YC
+Vk
+fx
aa
aa
aa
@@ -73236,18 +73296,18 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+bj
+YC
+YC
+Wx
+YC
+Yv
+Ui
+YC
+Zl
+YC
+YC
+fx
aa
aa
aa
@@ -73494,16 +73554,16 @@ ae
ae
ae
ab
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
ab
aa
aa
diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm
index 7c14d9ebd0..7bc7de9bf1 100644
--- a/_maps/shuttles/emergency_bar.dmm
+++ b/_maps/shuttles/emergency_bar.dmm
@@ -197,7 +197,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aF" = (
-/obj/structure/piano{
+/obj/structure/musician/piano{
icon_state = "piano"
},
/turf/open/floor/plasteel/grimy,
diff --git a/_maps/shuttles/mining_common_meta.dmm b/_maps/shuttles/mining_common_meta.dmm
deleted file mode 100644
index f04f8e1a3b..0000000000
--- a/_maps/shuttles/mining_common_meta.dmm
+++ /dev/null
@@ -1,124 +0,0 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"a" = (
-/turf/closed/wall/mineral/titanium,
-/area/shuttle/mining)
-"b" = (
-/obj/effect/spawner/structure/window/shuttle,
-/turf/open/floor/plating,
-/area/shuttle/mining)
-"c" = (
-/obj/structure/table,
-/turf/open/floor/mineral/titanium/blue,
-/area/shuttle/mining)
-"d" = (
-/obj/machinery/computer/shuttle/mining/common,
-/turf/open/floor/mineral/titanium/blue,
-/area/shuttle/mining)
-"e" = (
-/turf/open/floor/mineral/titanium,
-/area/shuttle/mining)
-"f" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 1
- },
-/turf/open/floor/mineral/titanium/blue,
-/area/shuttle/mining)
-"g" = (
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/mineral/titanium,
-/area/shuttle/mining)
-"h" = (
-/obj/machinery/door/airlock/titanium{
- name = "Lavaland Shuttle Airlock"
- },
-/obj/docking_port/mobile{
- dir = 8;
- dwidth = 3;
- height = 5;
- id = "mining_common";
- name = "lavaland shuttle";
- port_direction = 4;
- width = 7
- },
-/turf/open/floor/plating,
-/area/shuttle/mining)
-"i" = (
-/obj/structure/closet/crate,
-/turf/open/floor/mineral/titanium/blue,
-/area/shuttle/mining)
-"j" = (
-/obj/structure/shuttle/engine/heater,
-/obj/structure/window/reinforced{
- dir = 1;
- layer = 2.9
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/shuttle/mining)
-"k" = (
-/obj/structure/ore_box,
-/turf/open/floor/mineral/titanium/blue,
-/area/shuttle/mining)
-"l" = (
-/obj/structure/shuttle/engine/propulsion/burst,
-/turf/open/floor/plating/airless,
-/area/shuttle/mining)
-"Q" = (
-/obj/structure/chair/comfy/shuttle{
- dir = 1
- },
-/turf/open/floor/mineral/titanium,
-/area/shuttle/mining)
-
-(1,1,1) = {"
-a
-a
-b
-a
-b
-a
-a
-"}
-(2,1,1) = {"
-a
-c
-e
-g
-f
-i
-a
-"}
-(3,1,1) = {"
-b
-d
-Q
-e
-f
-j
-l
-"}
-(4,1,1) = {"
-a
-c
-e
-e
-f
-k
-a
-"}
-(5,1,1) = {"
-a
-a
-b
-h
-b
-a
-a
-"}
diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index 174b44c6fc..578255d086 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -25,6 +25,7 @@
#define GENITAL_CAN_AROUSE (1<<8)
#define GENITAL_UNDIES_HIDDEN (1<<9)
#define UPDATE_OWNER_APPEARANCE (1<<10)
+#define GENITAL_CAN_TAUR (1<<11)
#define DEF_VAGINA_SHAPE "Human"
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index be0a4d0f59..14c78f90d0 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -114,12 +114,17 @@
//slowdown when in softcrit
#define SOFTCRIT_ADD_SLOWDOWN 6
-//Attack types for checking shields/hit reactions
-#define MELEE_ATTACK 1
-#define UNARMED_ATTACK 2
-#define PROJECTILE_ATTACK 3
-#define THROWN_PROJECTILE_ATTACK 4
-#define LEAP_ATTACK 5
+/// Attack types for check_block()/run_block(). Flags, combinable.
+/// Attack was melee, whether or not armed.
+#define ATTACK_TYPE_MELEE (1<<0)
+/// Attack was with a gun or something that should count as a gun (but not if a gun shouldn't count for a gun, crazy right?)
+#define ATTACK_TYPE_PROJECTILE (1<<1)
+/// Attack was unarmed.. this usually means hand to hand combat.
+#define ATTACK_TYPE_UNARMED (1<<2)
+/// Attack was a thrown atom hitting the victim.
+#define ATTACK_TYPE_THROWN (1<<3)
+/// Attack was a bodyslam/leap/tackle. See: Xenomorph leap tackles.
+#define ATTACK_TYPE_TACKLE (1<<4)
//attack visual effects
#define ATTACK_EFFECT_PUNCH "punch"
@@ -252,4 +257,53 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define BULLET_ACT_FORCE_PIERCE "PIERCE" //It pierces through the object regardless of the bullet being piercing by default.
#define BULLET_ACT_TURF "TURF" //It hit us but it should hit something on the same turf too. Usually used for turfs.
+/// Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS.
+/// Attack was not blocked
+#define BLOCK_NONE NONE
+/// Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION!
+#define BLOCK_SUCCESS (1<<1)
+/// The below are for "metadata" on "how" the attack was blocked.
+
+/// Attack was and should be redirected according to list argument REDIRECT_METHOD (NOTE: the SHOULD here is important, as it says "the thing blocking isn't handling the reflecting for you so do it yourself"!)
+#define BLOCK_SHOULD_REDIRECT (1<<2)
+/// Attack was redirected (whether by us or by SHOULD_REDIRECT flagging for automatic handling)
+#define BLOCK_REDIRECTED (1<<3)
+/// Attack was blocked by something like a shield.
+#define BLOCK_PHYSICAL_EXTERNAL (1<<4)
+/// Attack was blocked by something worn on you.
+#define BLOCK_PHYSICAL_INTERNAL (1<<5)
+/// Attack outright missed because the target dodged. Should usually be combined with redirection passthrough or something (see martial arts)
+#define BLOCK_TARGET_DODGED (1<<7)
+/// Meta-flag for run_block/do_run_block : By default, BLOCK_SUCCESS tells do_run_block() to assume the attack is completely blocked and not continue the block chain. If this is present, it will continue to check other items in the chain rather than stopping.
+#define BLOCK_CONTINUE_CHAIN (1<<8)
+
+/// For keys in associative list/block_return as we don't want to saturate our (somewhat) limited flags.
+#define BLOCK_RETURN_REDIRECT_METHOD "REDIRECT_METHOD"
+ /// Pass through victim
+ #define REDIRECT_METHOD_PASSTHROUGH "passthrough"
+ /// Deflect at randomish angle
+ #define REDIRECT_METHOD_DEFLECT "deflect"
+ /// reverse 180 angle, basically (as opposed to "realistic" wall reflections)
+ #define REDIRECT_METHOD_REFLECT "reflect"
+ /// "do not taser the bad man with the desword" - actually aims at the firer/attacker rather than just reversing
+ #define REDIRECT_METHOD_RETURN_TO_SENDER "no_you"
+
+/// These keys are generally only applied to the list if real_attack is FALSE. Used incase we want to make "smarter" mob AI in the future or something.
+/// Tells the caller how likely from 0 (none) to 100 (always) we are to reflect energy projectiles
+#define BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE "reflect_projectile_chance"
+/// Tells the caller how likely we are to block attacks from 0 to 100 in general
+#define BLOCK_RETURN_NORMAL_BLOCK_CHANCE "normal_block_chance"
+/// Tells the caller about how many hits we can soak on average before our blocking fails.
+#define BLOCK_RETURN_BLOCK_CAPACITY "block_capacity"
+
+/// Default if the above isn't set in the list.
+#define DEFAULT_REDIRECT_METHOD_PROJECTILE REDIRECT_METHOD_DEFLECT
+
+/// Block priorities
+#define BLOCK_PRIORITY_HELD_ITEM 100
+#define BLOCK_PRIORITY_CLOTHING 50
+#define BLOCK_PRIORITY_WEAR_SUIT 75
+#define BLOCK_PRIORITY_UNIFORM 25
+
+#define BLOCK_PRIORITY_DEFAULT BLOCK_PRIORITY_HELD_ITEM
diff --git a/code/__DEFINES/dcs/flags.dm b/code/__DEFINES/dcs/flags.dm
index 128c9f1938..3210341cc3 100644
--- a/code/__DEFINES/dcs/flags.dm
+++ b/code/__DEFINES/dcs/flags.dm
@@ -39,3 +39,17 @@
//Ouch my toes!
#define CALTROP_BYPASS_SHOES 1
#define CALTROP_IGNORE_WALKERS 2
+
+#define SPELL_SKIP_ALL_REQS (1<<0)
+#define SPELL_SKIP_CENTCOM (1<<1)
+#define SPELL_SKIP_STAT (1<<2)
+#define SPELL_SKIP_CLOTHES (1<<3)
+#define SPELL_SKIP_ANTIMAGIC (1<<4)
+#define SPELL_SKIP_VOCAL (1<<5)
+#define SPELL_SKIP_MOBTYPE (1<<6)
+#define SPELL_WIZARD_HAT (1<<7)
+#define SPELL_WIZARD_ROBE (1<<8)
+#define SPELL_CULT_HELMET (1<<9)
+#define SPELL_CULT_ARMOR (1<<10)
+#define SPELL_WIZARD_GARB (SPELL_WIZARD_HAT|SPELL_WIZARD_ROBE)
+#define SPELL_CULT_GARB (SPELL_CULT_HELMET|SPELL_CULT_ARMOR)
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index bd77e374aa..e0f7457a4a 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -149,7 +149,9 @@
#define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed)
#define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deadchat.
#define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse, special, penalize)
- #define COMPONENT_BLOCK_GHOSTING 1
+ #define COMPONENT_BLOCK_GHOSTING (1<<0)
+ #define COMPONENT_DO_NOT_PENALIZE_GHOSTING (1<<1)
+ #define COMPONENT_FREE_GHOSTING (1<<2)
#define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj
#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources)
#define COMPONENT_BLOCK_MAGIC 1
@@ -177,6 +179,8 @@
// #define SPEECH_FORCED 7
#define COMSIG_MOB_ANTAG_ON_GAIN "mob_antag_on_gain" //from base of /datum/antagonist/on_gain(): (antag_datum)
+#define COMSIG_MOB_SPELL_CAN_CAST "mob_spell_can_cast" //called from base of /obj/effect/proc_holder/spell/can_cast(): (spell)
+
// /mob/living signals
#define COMSIG_LIVING_REGENERATE_LIMBS "living_regenerate_limbs" //from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs)
#define COMSIG_LIVING_RESIST "living_resist" //from base of mob/living/resist() (/mob/living)
@@ -188,6 +192,8 @@
#define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" //sent when a mob/login() finishes: (client)
#define COMSIG_MOB_CLIENT_MOVE "comsig_mob_client_move" //sent when client/Move() finishes with no early returns: (client, direction, n, oldloc)
#define COMSIG_LIVING_GUN_PROCESS_FIRE "living_gun_process_fire" //from base of /obj/item/gun/proc/process_fire(): (atom/target, params, zone_override)
+// This returns flags as defined for block in __DEFINES/combat.dm!
+#define COMSIG_LIVING_RUN_BLOCK "living_do_run_block" //from base of mob/living/do_run_block(): (real_attack, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone)
#define COMSIG_LIVING_COMBAT_ENABLED "combatmode_enabled" //from base of mob/living/enable_combat_mode() (was_forced)
#define COMSIG_LIVING_COMBAT_DISABLED "combatmode_disabled" //from base of mob/living/disable_combat_mode() (was_forced)
@@ -236,9 +242,14 @@
#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user)
#define COMSIG_ITEM_HIT_REACT "item_hit_react" //from base of obj/item/hit_reaction(): (list/args)
#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" //called on item when crossed by something (): (/atom/movable)
+#define COMSIG_ITEM_WORN_OVERLAYS "item_worn_overlays" //from base of obj/item/worn_overlays(): (isinhands, icon_file, used_state, style_flags, list/overlays)
+// THE FOLLOWING TWO BLOCKS SHOULD RETURN BLOCK FLAGS AS DEFINED IN __DEFINES/combat.dm!
+#define COMSIG_ITEM_CHECK_BLOCK "check_block" //from base of obj/item/check_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+#define COMSIG_ITEM_RUN_BLOCK "run_block" //from base of obj/item/run_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
// /obj/item/clothing signals
#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()
+#define COMSIG_SUIT_MADE_HELMET "suit_made_helmet" //from base of obj/item/clothing/suit/MakeHelmet(): (helmet)
// /obj/item/implant signals
#define COMSIG_IMPLANT_ACTIVATED "implant_activated" //from base of /obj/item/implant/proc/activate(): ()
diff --git a/code/__DEFINES/dye_keys.dm b/code/__DEFINES/dye_keys.dm
new file mode 100644
index 0000000000..133f9c47d3
--- /dev/null
+++ b/code/__DEFINES/dye_keys.dm
@@ -0,0 +1,28 @@
+#define DYE_REGISTRY_UNDER "under"
+#define DYE_REGISTRY_JUMPSKIRT "jumpskirt"
+#define DYE_REGISTRY_GLOVES "gloves"
+#define DYE_REGISTRY_SNEAKERS "sneakers"
+#define DYE_REGISTRY_FANNYPACK "fannypack"
+#define DYE_REGISTRY_BEDSHEET "bedsheet"
+
+#define DYE_RED "red"
+#define DYE_ORANGE "orange"
+#define DYE_YELLOW "yellow"
+#define DYE_GREEN "green"
+#define DYE_BLUE "blue"
+#define DYE_PURPLE "purple"
+#define DYE_BLACK "black"
+#define DYE_WHITE "white"
+#define DYE_RAINBOW "rainbow"
+#define DYE_MIME "mime"
+#define DYE_COSMIC "cosmic"
+#define DYE_QM "qm"
+#define DYE_LAW "law"
+#define DYE_CAPTAIN "captain"
+#define DYE_HOP "hop"
+#define DYE_HOS "hos"
+#define DYE_CE "ce"
+#define DYE_RD "rd"
+#define DYE_CMO "cmo"
+#define DYE_REDCOAT "redcoat"
+#define DYE_CLOWN "clown"
diff --git a/code/__DEFINES/dynamic.dm b/code/__DEFINES/dynamic.dm
index ae5b031c8b..da8a76e71e 100644
--- a/code/__DEFINES/dynamic.dm
+++ b/code/__DEFINES/dynamic.dm
@@ -7,6 +7,7 @@
#define WAROPS_ALWAYS_ALLOWED (1<<1)
#define USE_PREF_WEIGHTS (1<<2)
#define FORCE_IF_WON (1<<3)
+#define USE_PREV_ROUND_WEIGHTS (1<<4)
#define ONLY_RULESET (1<<0)
#define HIGHLANDER_RULESET (1<<1)
diff --git a/code/__DEFINES/instruments.dm b/code/__DEFINES/instruments.dm
new file mode 100644
index 0000000000..3c414f87f4
--- /dev/null
+++ b/code/__DEFINES/instruments.dm
@@ -0,0 +1,29 @@
+#define INSTRUMENT_MIN_OCTAVE 1
+#define INSTRUMENT_MAX_OCTAVE 9
+#define INSTRUMENT_MIN_KEY 0
+#define INSTRUMENT_MAX_KEY 127
+
+/// Max number of playing notes per instrument.
+#define CHANNELS_PER_INSTRUMENT 128
+
+/// Distance multiplier that makes us not be impacted by 3d sound as much. This is a multiplier so lower it is the closer we will pretend to be to people.
+#define INSTRUMENT_DISTANCE_FALLOFF_BUFF 0.2
+/// How many tiles instruments have no falloff for
+#define INSTRUMENT_DISTANCE_NO_FALLOFF 3
+
+/// Maximum length a note should ever go for
+#define INSTRUMENT_MAX_TOTAL_SUSTAIN (5 SECONDS)
+
+/// These are per decisecond.
+#define INSTRUMENT_EXP_FALLOFF_MIN 1.025 //100/(1.025^50) calculated for [INSTRUMENT_MIN_SUSTAIN_DROPOFF] to be 30.
+#define INSTRUMENT_EXP_FALLOFF_MAX 10
+
+/// Minimum volume for when the sound is considered dead.
+#define INSTRUMENT_MIN_SUSTAIN_DROPOFF 0
+
+#define SUSTAIN_LINEAR 1
+#define SUSTAIN_EXPONENTIAL 2
+
+// /datum/instrument instrument_flags
+#define INSTRUMENT_LEGACY (1<<0) //Legacy instrument. Implies INSTRUMENT_DO_NOT_AUTOSAMPLE
+#define INSTRUMENT_DO_NOT_AUTOSAMPLE (1<<1) //Do not automatically sample
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 9efffefce5..3fb149d071 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -465,7 +465,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")
// list of all null rod weapons
-#define HOLY_WEAPONS /obj/item/nullrod, /obj/item/twohanded/dualsaber/hypereutactic/chaplain, /obj/item/gun/energy/laser/redtag/hitscan/chaplain, /obj/item/multitool/chaplain, /obj/item/melee/baseball_bat/chaplain
+#define HOLY_WEAPONS /obj/item/nullrod, /obj/item/twohanded/dualsaber/hypereutactic/chaplain, /obj/item/gun/energy/laser/redtag/hitscan/chaplain, /obj/item/multitool/chaplain, /obj/item/clothing/gloves/fingerless/pugilist/chaplain, /obj/item/melee/baseball_bat/chaplain
// Used by PDA and cartridge code to reduce repetitiveness of spritesheets
#define PDAIMG(what) {" "}
diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm
index 76c326cec0..bc1e6f7d5f 100644
--- a/code/__DEFINES/movespeed_modification.dm
+++ b/code/__DEFINES/movespeed_modification.dm
@@ -78,4 +78,6 @@
#define MOVESPEED_ID_COLD "COLD"
#define MOVESPEED_ID_HUNGRY "HUNGRY"
#define MOVESPEED_ID_DAMAGE_SLOWDOWN "DAMAGE"
-#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING"
\ No newline at end of file
+#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING"
+
+#define MOVESPEED_ID_CIRRHOSIS "CIRRHOSIS"
\ No newline at end of file
diff --git a/code/__DEFINES/radiation.dm b/code/__DEFINES/radiation.dm
index 596a6a0378..ece997a7fc 100644
--- a/code/__DEFINES/radiation.dm
+++ b/code/__DEFINES/radiation.dm
@@ -45,9 +45,9 @@ Ask ninjanomnom if they're around
// WARNING: The deines below could have disastrous consequences if tweaked incorrectly. See: The great SM purge of Oct.6.2017
// contamination_chance = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_CHANCE_COEFFICIENT * min(1/(steps*RAD_DISTANCE_COEFFICIENT), 1))
// contamination_strength = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT
-#define RAD_MINIMUM_CONTAMINATION 350 // How strong does a radiation wave have to be to contaminate objects
+#define RAD_MINIMUM_CONTAMINATION 300 // How strong does a radiation wave have to be to contaminate objects
#define RAD_CONTAMINATION_CHANCE_COEFFICIENT 0.005 // Higher means higher strength scaling contamination chance
-#define RAD_CONTAMINATION_STR_COEFFICIENT 0.3 // Higher means higher strength scaling contamination strength
+#define RAD_CONTAMINATION_STR_COEFFICIENT 0.99 // Higher means higher strength scaling contamination strength
#define RAD_DISTANCE_COEFFICIENT 1 // Lower means further rad spread
-#define RAD_HALF_LIFE 90 // The half-life of contaminated objects
\ No newline at end of file
+#define RAD_HALF_LIFE 90 // The half-life of contaminated objects
diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm
index 581bb2bc29..73781154c5 100644
--- a/code/__DEFINES/sound.dm
+++ b/code/__DEFINES/sound.dm
@@ -20,6 +20,7 @@
#define CHANNEL_HIGHEST_AVAILABLE 1008 //CIT CHANGE - COMPENSATES FOR VORESOUND CHANNELS
+#define MAX_INSTRUMENT_CHANNELS (128 * 6)
#define SOUND_MINIMUM_PRESSURE 10
#define FALLOFF_SOUNDS 1
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index a7ffd1c543..9a9133c196 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -99,7 +99,7 @@
#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above.
#define STATUS_EFFECT_NO_COMBAT_MODE /datum/status_effect/no_combat_mode //Wont allow combat mode and will disable it
-#define STATUS_EFFECT_MESMERIZE /datum/status_effect/no_combat_mode/mesmerize //Just reskinned no_combat_mode
+#define STATUS_EFFECT_MESMERIZE /datum/status_effect/mesmerize //Just reskinned no_combat_mode
#define STATUS_EFFECT_ELECTROSTAFF /datum/status_effect/electrostaff //slows down victim
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index a693b26b20..5aa0301bf6 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -50,17 +50,19 @@
#define INIT_ORDER_PROFILER 100
#define INIT_ORDER_FAIL2TOPIC 99
#define INIT_ORDER_TITLE 98
-#define INIT_ORDER_GARBAGE 97
-#define INIT_ORDER_DBCORE 95
-#define INIT_ORDER_BLACKBOX 94
-#define INIT_ORDER_SERVER_MAINT 93
-#define INIT_ORDER_INPUT 85
+#define INIT_ORDER_GARBAGE 95
+#define INIT_ORDER_DBCORE 93
+#define INIT_ORDER_BLACKBOX 92
+#define INIT_ORDER_SERVER_MAINT 91
+#define INIT_ORDER_INPUT 90
+#define INIT_ORDER_SOUNDS 85
#define INIT_ORDER_VIS 80
#define INIT_ORDER_RESEARCH 75
#define INIT_ORDER_EVENTS 70
#define INIT_ORDER_JOBS 65
#define INIT_ORDER_QUIRKS 60
#define INIT_ORDER_TICKER 55
+#define INIT_ORDER_INSTRUMENTS 53
#define INIT_ORDER_MAPPING 50
#define INIT_ORDER_NETWORKS 45
#define INIT_ORDER_ATOMS 30
@@ -100,6 +102,7 @@
#define FIRE_PRIORITY_PROCESS 25
#define FIRE_PRIORITY_THROWING 25
#define FIRE_PRIORITY_SPACEDRIFT 30
+#define FIRE_PRIORITY_INSTRUMENTS 30
#define FIRE_PRIORITY_FIELDS 30
#define FIRE_PRIOTITY_SMOOTHING 35
#define FIRE_PRIORITY_NETWORKS 40
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index a8c0353591..e70e0ba743 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -147,6 +147,9 @@
#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat.
#define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events"
#define TRAIT_NO_MIDROUND_ANTAG "no-midround-antag" //can't be turned into an antag by random events
+#define TRAIT_PUGILIST "pugilist" //This guy punches people for a living
+#define TRAIT_KI_VAMPIRE "ki-vampire" //when someone with this trait rolls maximum damage on a punch and stuns the target, they regain some stamina and do clone damage
+#define TRAIT_PASSTABLE "passtable"
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
@@ -173,6 +176,9 @@
//non-mob traits
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
+#define VEHICLE_TRAIT "vehicle" // inherited from riding vehicles
+#define INNATE_TRAIT "innate"
+
// item traits
#define TRAIT_NODROP "nodrop"
@@ -236,8 +242,8 @@
#define GHOSTROLE_TRAIT "ghostrole"
#define APHRO_TRAIT "aphro"
#define BLOODSUCKER_TRAIT "bloodsucker"
-#define CLOTHING_TRAIT "clothing" //used for quirky carrygloves
#define SHOES_TRAIT "shoes" //inherited from your sweet kicks
+#define GLOVE_TRAIT "glove" //inherited by your cool gloves
// unique trait sources, still defines
#define STATUE_MUTE "statue"
@@ -271,6 +277,7 @@
#define LOCKED_HELMET_TRAIT "locked-helmet"
#define NINJA_SUIT_TRAIT "ninja-suit"
#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant"
+#define MARTIAL_ARTIST_TRAIT "martial_artist"
#define SLEEPING_CARP_TRAIT "sleeping_carp"
#define RISING_BASS_TRAIT "rising_bass"
#define ABDUCTOR_ANTAGONIST "abductor-antagonist"
diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm
index 0617c5d345..ec7a11085c 100644
--- a/code/__DEFINES/vv.dm
+++ b/code/__DEFINES/vv.dm
@@ -19,3 +19,105 @@
#define VV_RESTORE_DEFAULT "Restore to Default"
#define VV_MARKED_DATUM "Marked Datum"
#define VV_BITFIELD "Bitfield"
+#define VV_TEXT_LOCATE "Custom Reference Locate"
+#define VV_PROCCALL_RETVAL "Return Value of Proccall"
+
+#define VV_MSG_MARKED "Marked Object "
+#define VV_MSG_EDITED "Var Edited "
+#define VV_MSG_DELETED "Deleted "
+
+#define VV_NORMAL_LIST_NO_EXPAND_THRESHOLD 50
+#define VV_SPECIAL_LIST_NO_EXPAND_THRESHOLD 150
+
+//#define IS_VALID_ASSOC_KEY(V) (istext(V) || ispath(V) || isdatum(V) || islist(V))
+#define IS_VALID_ASSOC_KEY(V) (!isnum(V)) //hhmmm..
+
+//General helpers
+#define VV_HREF_TARGET_INTERNAL(target, href_key) "?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[REF(target)]"
+#define VV_HREF_TARGETREF_INTERNAL(targetref, href_key) "?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[targetref]"
+#define VV_HREF_TARGET(target, href_key, text) "[text] "
+#define VV_HREF_TARGETREF(targetref, href_key, text) "[text] "
+#define VV_HREF_TARGET_1V(target, href_key, text, varname) "[text] " //for stuff like basic varedits, one variable
+#define VV_HREF_TARGETREF_1V(targetref, href_key, text, varname) "[text] "
+
+#define GET_VV_TARGET locate(href_list[VV_HK_TARGET])
+#define GET_VV_VAR_TARGET href_list[VV_HK_VARNAME]
+
+//Helper for getting something to vv_do_topic in general
+#define VV_TOPIC_LINK(datum, href_key, text) "text "
+
+//Helpers for vv_get_dropdown()
+#define VV_DROPDOWN_OPTION(href_key, name) . += "[name] "
+
+// VV HREF KEYS
+#define VV_HK_TARGET "target"
+#define VV_HK_VARNAME "targetvar" //name or index of var for 1 variable targetting hrefs.
+
+// vv_do_list() keys
+#define VV_HK_LIST_ADD "listadd"
+#define VV_HK_LIST_EDIT "listedit"
+#define VV_HK_LIST_CHANGE "listchange"
+#define VV_HK_LIST_REMOVE "listremove"
+#define VV_HK_LIST_ERASE_NULLS "listnulls"
+#define VV_HK_LIST_ERASE_DUPES "listdupes"
+#define VV_HK_LIST_SHUFFLE "listshuffle"
+#define VV_HK_LIST_SET_LENGTH "listlen"
+
+// vv_do_basic() keys
+#define VV_HK_BASIC_EDIT "datumedit"
+#define VV_HK_BASIC_CHANGE "datumchange"
+#define VV_HK_BASIC_MASSEDIT "massedit"
+
+// /datum
+#define VV_HK_DELETE "delete"
+#define VV_HK_EXPOSE "expose"
+#define VV_HK_CALLPROC "proc_call"
+#define VV_HK_MARK "mark"
+#define VV_HK_MODIFY_TRAITS "modtraits"
+
+// /atom
+#define VV_HK_MODIFY_TRANSFORM "atom_transform"
+#define VV_HK_ADD_REAGENT "addreagent"
+#define VV_HK_TRIGGER_EMP "empulse"
+#define VV_HK_TRIGGER_EXPLOSION "explode"
+#define VV_HK_AUTO_RENAME "auto_rename"
+
+// /obj
+#define VV_HK_OSAY "osay"
+#define VV_HK_MASS_DEL_TYPE "mass_delete_type"
+#define VV_HK_ARMOR_MOD "mod_obj_armor"
+
+// /mob
+#define VV_HK_GIB "gib"
+#define VV_HK_GIVE_SPELL "give_spell"
+#define VV_HK_REMOVE_SPELL "remove_spell"
+#define VV_HK_GIVE_DISEASE "give_disease"
+#define VV_HK_GODMODE "godmode"
+#define VV_HK_DROP_ALL "dropall"
+#define VV_HK_REGEN_ICONS "regen_icons"
+#define VV_HK_PLAYER_PANEL "player_panel"
+#define VV_HK_BUILDMODE "buildmode"
+#define VV_HK_DIRECT_CONTROL "direct_control"
+#define VV_HK_OFFER_GHOSTS "offer_ghosts"
+
+// /mob/living/carbon
+#define VV_HK_MAKE_AI "aiify"
+#define VV_HK_MODIFY_BODYPART "mod_bodypart"
+#define VV_HK_MODIFY_ORGANS "organs_modify"
+#define VV_HK_HALLUCINATION "force_hallucinate"
+#define VV_HK_MARTIAL_ART "give_martial_art"
+#define VV_HK_GIVE_TRAUMA "give_trauma"
+#define VV_HK_CURE_TRAUMA "cure_trauma"
+
+// /mob/living/carbon/human
+#define VV_HK_COPY_OUTFIT "copy_outfit"
+#define VV_HK_MOD_QUIRKS "quirkmod"
+#define VV_HK_MAKE_MONKEY "human_monkify"
+#define VV_HK_MAKE_CYBORG "human_cyborgify"
+#define VV_HK_MAKE_SLIME "human_slimeify"
+#define VV_HK_MAKE_ALIEN "human_alienify"
+#define VV_HK_SET_SPECIES "setspecies"
+#define VV_HK_PURRBATION "purrbation"
+
+// misc
+#define VV_HK_SPACEVINE_PURGE "spacevine_purge"
diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm
index 9afae12c30..5f78aeb740 100644
--- a/code/__HELPERS/_cit_helpers.dm
+++ b/code/__HELPERS/_cit_helpers.dm
@@ -112,7 +112,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE)
set desc = "Toggles seeing LocalOutOfCharacter chat"
prefs.chat_toggles ^= CHAT_LOOC
prefs.save_preferences()
- src << "You will [(prefs.chat_toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel."
+ to_chat(src, "You will [(prefs.chat_toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/mob/living/carbon/proc/has_penis()
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index f16b566b00..a34b3ce67c 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -550,6 +550,27 @@
for(var/thing in flat_list)
.[thing] = TRUE
+/proc/deep_list2params(list/deep_list)
+ var/list/L = list()
+ for(var/i in deep_list)
+ var/key = i
+ if(isnum(key))
+ L += "[key]"
+ continue
+ if(islist(key))
+ key = deep_list2params(key)
+ else if(!istext(key))
+ key = "[REF(key)]"
+ L += "[key]"
+ var/value = deep_list[key]
+ if(!isnull(value))
+ if(islist(value))
+ value = deep_list2params(value)
+ else if(!(istext(key) || isnum(key)))
+ value = "[REF(value)]"
+ L["[key]"] = "[value]"
+ return list2params(L)
+
//Picks from the list, with some safeties, and returns the "default" arg if it fails
#define DEFAULTPICK(L, default) ((islist(L) && length(L)) ? pick(L) : default)
diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm
index c95896d853..9b877e8fb0 100644
--- a/code/__HELPERS/cmp.dm
+++ b/code/__HELPERS/cmp.dm
@@ -116,4 +116,7 @@ GLOBAL_VAR_INIT(cmp_field, "name")
if(a_sign != b_sign)
return a_sign - b_sign
else
- return sorttext(b_name, a_name)
\ No newline at end of file
+ return sorttext(b_name, a_name)
+
+/proc/cmp_item_block_priority_asc(obj/item/A, obj/item/B)
+ return A.block_priority - B.block_priority
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 7703b13018..7f5035347c 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -425,8 +425,7 @@
candidates -= M
/proc/pollGhostCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE)
- var/datum/element/ghost_role_eligibility/eligibility = SSdcs.GetElement(list(/datum/element/ghost_role_eligibility))
- var/list/candidates = eligibility.get_all_ghost_role_eligible()
+ var/list/candidates = get_all_ghost_role_eligible()
return pollCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category, flashwindow, candidates)
/proc/pollCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE, list/group = null)
@@ -581,4 +580,4 @@
var/area/A = C.area
if(GLOB.typecache_powerfailure_safe_areas[A.type])
continue
- C.energy_fail(rand(duration_min,duration_max))
\ No newline at end of file
+ C.energy_fail(rand(duration_min,duration_max))
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index 38e25b04c5..0c45a746d8 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -89,6 +89,14 @@
INVOKE_ASYNC(GLOBAL_PROC, /proc/init_ref_coin_values) //so the current procedure doesn't sleep because of UNTIL()
+ for(var/path in subtypesof(/area/holodeck))
+ var/area/holodeck/A = path
+ var/list/compatibles = initial(A.compatible_holodeck_comps)
+ if(!compatibles || initial(A.abstract_type) == path)
+ continue
+ for(var/comp in compatibles)
+ LAZYADD(GLOB.holodeck_areas_prototypes[comp], A)
+
//creates every subtype of prototype (excluding prototype) and adds it to list L.
//if no list/L is provided, one is created.
/proc/init_subtypes(prototype, list/L)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index f7546193aa..febd333578 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -184,6 +184,7 @@
"cock_length" = COCK_SIZE_DEF,
"cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
"cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
+ "cock_taur" = FALSE,
"has_balls" = FALSE,
"balls_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"balls_size" = BALLS_SIZE_DEF,
@@ -579,3 +580,16 @@ GLOBAL_LIST_EMPTY(species_list)
chosen = pick(mob_spawn_meancritters)
var/mob/living/simple_animal/C = new chosen(spawn_location)
return C
+
+/proc/passtable_on(target, source)
+ var/mob/living/L = target
+ if(!HAS_TRAIT(L, TRAIT_PASSTABLE) && L.pass_flags & PASSTABLE)
+ ADD_TRAIT(L, TRAIT_PASSTABLE, INNATE_TRAIT)
+ ADD_TRAIT(L, TRAIT_PASSTABLE, source)
+ L.pass_flags |= PASSTABLE
+
+/proc/passtable_off(target, source)
+ var/mob/living/L = target
+ REMOVE_TRAIT(L, TRAIT_PASSTABLE, source)
+ if(!HAS_TRAIT(L, TRAIT_PASSTABLE))
+ L.pass_flags &= ~PASSTABLE
diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm
index e082be7d1f..1570eededb 100644
--- a/code/__HELPERS/radiation.dm
+++ b/code/__HELPERS/radiation.dm
@@ -25,8 +25,22 @@
/proc/radiation_pulse(atom/source, intensity, range_modifier, log=FALSE, can_contaminate=TRUE)
if(!SSradiation.can_fire)
return
- for(var/dir in GLOB.cardinals)
- new /datum/radiation_wave(source, dir, intensity, range_modifier, can_contaminate)
+ var/area/A = get_area(source)
+ var/atom/nested_loc = source.loc
+ var/spawn_waves = TRUE
+ while(nested_loc != A)
+ if(nested_loc.rad_flags & RAD_PROTECT_CONTENTS)
+ spawn_waves = FALSE
+ break
+ nested_loc = nested_loc.loc
+ if(spawn_waves)
+ for(var/dir in GLOB.cardinals)
+ new /datum/radiation_wave(source, dir, intensity, range_modifier, can_contaminate)
+
+ var/static/last_huge_pulse = 0
+ if(intensity > 3000 && world.time > last_huge_pulse + 200)
+ last_huge_pulse = world.time
+ log = TRUE
var/list/things = get_rad_contents(source) //copypasta because I don't want to put special code in waves to handle their origin
for(var/k in 1 to things.len)
@@ -35,11 +49,7 @@
continue
thing.rad_act(intensity)
- var/static/last_huge_pulse = 0
- if(intensity > 3000 && world.time > last_huge_pulse + 200)
- last_huge_pulse = world.time
- log = TRUE
if(log)
- var/turf/_source_T = isturf(source) ? source : get_turf(source)
- log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(_source_T)] ")
+ var/turf/_source_T = get_turf(source)
+ log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(_source_T)][spawn_waves ? "" : " (contained by [nested_loc.name])"]")
return TRUE
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index 0a4af736dd..7cbfbd040a 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -320,8 +320,10 @@
parts += "[FOURSPACES]Nobody died this shift! "
if(istype(SSticker.mode, /datum/game_mode/dynamic))
var/datum/game_mode/dynamic/mode = SSticker.mode
+ mode.update_playercounts()
parts += "[FOURSPACES]Final threat level: [mode.threat_level]"
parts += "[FOURSPACES]Final threat: [mode.threat]"
+ parts += "[FOURSPACES]Average threat: [mode.threat_average]"
parts += "[FOURSPACES]Executed rules:"
for(var/datum/dynamic_ruleset/rule in mode.executed_rules)
parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name] : -[rule.cost + rule.scaled_times * rule.scaling_cost] threat"
@@ -511,7 +513,7 @@
if(owner && GLOB.common_report && SSticker.current_state == GAME_STATE_FINISHED)
SSticker.show_roundend_report(owner.client, FALSE)
-/datum/action/report/IsAvailable()
+/datum/action/report/IsAvailable(silent = FALSE)
return 1
/datum/action/report/Topic(href,href_list)
diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm
index 52fe90ed2d..2e27588ae5 100644
--- a/code/__HELPERS/time.dm
+++ b/code/__HELPERS/time.dm
@@ -25,7 +25,8 @@ GLOBAL_VAR_INIT(midnight_rollovers, 0)
GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
/proc/update_midnight_rollover()
if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS!
- return GLOB.midnight_rollovers++
+ GLOB.midnight_rollovers++
+ GLOB.rollovercheck_last_timeofday = world.timeofday
return GLOB.midnight_rollovers
/proc/weekdayofthemonth()
diff --git a/code/__HELPERS/type_processing.dm b/code/__HELPERS/type_processing.dm
new file mode 100644
index 0000000000..ac7e5cab45
--- /dev/null
+++ b/code/__HELPERS/type_processing.dm
@@ -0,0 +1,60 @@
+
+/proc/make_types_fancy(var/list/types)
+ if (ispath(types))
+ types = list(types)
+ . = list()
+ for(var/type in types)
+ var/typename = "[type]"
+ var/static/list/TYPES_SHORTCUTS = list(
+ /obj/effect/decal/cleanable = "CLEANABLE",
+ /obj/item/radio/headset = "HEADSET",
+ /obj/item/clothing/head/helmet/space = "SPESSHELMET",
+ /obj/item/book/manual = "MANUAL",
+ /obj/item/reagent_containers/food/drinks = "DRINK", //longest paths comes first
+ /obj/item/reagent_containers/food = "FOOD",
+ /obj/item/reagent_containers = "REAGENT_CONTAINERS",
+ /obj/machinery/atmospherics = "ATMOS_MECH",
+ /obj/machinery/portable_atmospherics = "PORT_ATMOS",
+ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
+ /obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
+ /obj/item/organ = "ORGAN",
+ /obj/item = "ITEM",
+ /obj/machinery = "MACHINERY",
+ /obj/effect = "EFFECT",
+ /obj = "O",
+ /datum = "D",
+ /turf/open = "OPEN",
+ /turf/closed = "CLOSED",
+ /turf = "T",
+ /mob/living/carbon = "CARBON",
+ /mob/living/simple_animal = "SIMPLE",
+ /mob/living = "LIVING",
+ /mob = "M"
+ )
+ for (var/tn in TYPES_SHORTCUTS)
+ if (copytext(typename,1, length("[tn]/")+1)=="[tn]/" /*findtextEx(typename,"[tn]/",1,2)*/ )
+ typename = TYPES_SHORTCUTS[tn]+copytext(typename,length("[tn]/"))
+ break
+ .[typename] = type
+
+/proc/get_fancy_list_of_atom_types()
+ var/static/list/pre_generated_list
+ if (!pre_generated_list) //init
+ pre_generated_list = make_types_fancy(typesof(/atom))
+ return pre_generated_list
+
+
+/proc/get_fancy_list_of_datum_types()
+ var/static/list/pre_generated_list
+ if (!pre_generated_list) //init
+ pre_generated_list = make_types_fancy(sortList(typesof(/datum) - typesof(/atom)))
+ return pre_generated_list
+
+
+/proc/filter_fancy_list(list/L, filter as text)
+ var/list/matches = new
+ for(var/key in L)
+ var/value = L[key]
+ if(findtext("[key]", filter) || findtext("[value]", filter))
+ matches[key] = value
+ return matches
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 1240c38d93..2cc8c48dd5 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -8,10 +8,8 @@
/proc/invertHTML(HTMLstring)
if(!istext(HTMLstring))
CRASH("Given non-text argument!")
- return
else if(length(HTMLstring) != 7)
CRASH("Given non-HTML argument!")
- return
else if(length_char(HTMLstring) != 7)
CRASH("Given non-hex symbols in argument!")
var/textr = copytext(HTMLstring, 2, 4)
diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm
index fb8863ebe7..bcf35859c3 100644
--- a/code/_globalvars/lists/mapping.dm
+++ b/code/_globalvars/lists/mapping.dm
@@ -50,3 +50,5 @@ GLOBAL_LIST_EMPTY_TYPED(areas_by_type, /area)
GLOBAL_LIST_EMPTY(all_abstract_markers)
GLOBAL_LIST_EMPTY(stationroom_landmarks) //List of all spawns for stationrooms
+
+GLOBAL_LIST_EMPTY(holodeck_areas_prototypes) //List of holodeck area prototypes per holodeck computer type
\ No newline at end of file
diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm
index 21e3663cca..af483bf888 100644
--- a/code/_globalvars/misc.dm
+++ b/code/_globalvars/misc.dm
@@ -14,7 +14,7 @@ GLOBAL_VAR_INIT(fileaccess_timer, 0)
GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
-GLOBAL_VAR_INIT(CELLRATE, 0.002) // conversion ratio between a watt-tick and kilojoule
+GLOBAL_VAR_INIT(CELLRATE, 0.002) // conversion ratio between a watt-tick and kilojoule, dimensionless, kilojoules/watt-tick
GLOBAL_VAR_INIT(CHARGELEVEL, 0.001) // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second)
GLOBAL_LIST_EMPTY(powernets)
diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm
index ec4784bd1f..02cbd6bea5 100644
--- a/code/_onclick/ai.dm
+++ b/code/_onclick/ai.dm
@@ -49,6 +49,7 @@
message_admins("[ADMIN_LOOKUPFLW(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [ADMIN_VERBOSEJMP(pixel_turf)]))")
var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [AREACOORD(pixel_turf)]))"
log_admin(message)
+ to_chat(src, "You're experiencing a bug. Reconnect immediately to fix it. Admins have been notified. ")
if(REALTIMEOFDAY >= chnotify + 9000)
chnotify = REALTIMEOFDAY
send2irc_adminless_only("NOCHEAT", message)
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index bdc6ea2980..7c116cc606 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -334,7 +334,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
return
var/datum/antagonist/cult/antag = mob_viewer.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
- if(!antag)
+ if(!antag?.cult_team)
return
var/datum/objective/sacrifice/sac_objective = locate() in antag.cult_team.objectives
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index 2136ee96e4..b0e1d39d9a 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -125,7 +125,7 @@
if(!CHECK_MOBILITY(user, MOBILITY_STAND))
totitemdamage *= 0.5
//CIT CHANGES END HERE
- if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration))
+ if((user != src) && run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user) & BLOCK_SUCCESS)
return FALSE
send_item_attack_message(I, user)
I.do_stagger_action(src, user)
diff --git a/code/controllers/hooks.dm b/code/controllers/hooks.dm
index f499a61ae7..fe6a49c854 100644
--- a/code/controllers/hooks.dm
+++ b/code/controllers/hooks.dm
@@ -27,13 +27,11 @@
var/hook_path = text2path("/hook/[hook]")
if(!hook_path)
CRASH("Invalid hook '/hook/[hook]' called.")
- return 0
var/caller = new hook_path
var/status = 1
for(var/P in typesof("[hook_path]/proc"))
if(!call(caller, P)(arglist(args)))
CRASH("Hook '[P]' failed or runtimed.")
- status = 0
return status
diff --git a/code/controllers/subsystem/dcs.dm b/code/controllers/subsystem/dcs.dm
index 8b068e5d67..3243a8d8c8 100644
--- a/code/controllers/subsystem/dcs.dm
+++ b/code/controllers/subsystem/dcs.dm
@@ -38,11 +38,17 @@ PROCESSING_SUBSYSTEM_DEF(dcs)
if(istext(key))
value = arguments[key]
if(!(istext(key) || isnum(key)))
- key = REF(key)
+ if(islist(key)) // CITADEL EDIT
+ key = deep_list2params(key)
+ else
+ key = REF(key)
key = "[key]" // Key is stringified so numbers dont break things
if(!isnull(value))
if(!(istext(value) || isnum(value)))
- value = REF(value)
+ if(islist(value)) // CITADEL EDIT
+ value = deep_list2params(value)
+ else
+ value = REF(value)
named_arguments["[key]"] = value
else
fullid += "[key]"
diff --git a/code/controllers/subsystem/fail2topic.dm b/code/controllers/subsystem/fail2topic.dm
index 02e7bc7aab..78c4807c3f 100644
--- a/code/controllers/subsystem/fail2topic.dm
+++ b/code/controllers/subsystem/fail2topic.dm
@@ -21,9 +21,6 @@ SUBSYSTEM_DEF(fail2topic)
DropFirewallRule() // Clear the old bans if any still remain
- if (world.system_type == UNIX && enabled)
- enabled = FALSE
- subsystem_log("DISABLED - UNIX systems are not supported.")
if(!enabled)
flags |= SS_NO_FIRE
can_fire = FALSE
@@ -90,7 +87,10 @@ SUBSYSTEM_DEF(fail2topic)
fail_counts -= ip
rate_limiting -= ip
- . = shell("netsh advfirewall firewall add rule name=\"[rule_name]\" dir=in interface=any action=block remoteip=[ip]")
+ if (world.system_type == UNIX)
+ . = shell("iptables -A [rule_name] -s [ip] -j DROP")
+ else
+ . = shell("netsh advfirewall firewall add rule name=\"[rule_name]\" dir=in interface=any action=block remoteip=[ip]")
if (.)
subsystem_log("Failed to ban [ip]. Exit code: [.].")
@@ -105,7 +105,10 @@ SUBSYSTEM_DEF(fail2topic)
active_bans = list()
- . = shell("netsh advfirewall firewall delete rule name=\"[rule_name]\"")
+ if (world.system_type == UNIX)
+ . = shell("iptables -F [rule_name]") //Let's just assume that folks running linux are smart enough to have a dedicated chain configured for this.
+ else
+ . = shell("netsh advfirewall firewall delete rule name=\"[rule_name]\"")
if (.)
subsystem_log("Failed to drop firewall rule. Exit code: [.].")
diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm
index de2ff17a97..0a60c6e5d3 100644
--- a/code/controllers/subsystem/persistence.dm
+++ b/code/controllers/subsystem/persistence.dm
@@ -14,6 +14,7 @@ SUBSYSTEM_DEF(persistence)
var/list/saved_modes = list(1,2,3)
var/list/saved_dynamic_rules = list(list(),list(),list())
var/list/saved_storytellers = list("foo","bar","baz")
+ var/list/average_dynamic_threat = 50
var/list/saved_maps
var/list/saved_trophies = list()
var/list/spawned_objects = list()
@@ -191,6 +192,8 @@ SUBSYSTEM_DEF(persistence)
if(!json)
return
saved_storytellers = json["data"]
+ if(saved_storytellers.len > 3)
+ average_dynamic_threat = saved_storytellers[4]
saved_storytellers.len = 3
/datum/controller/subsystem/persistence/proc/LoadRecentMaps()
@@ -434,9 +437,10 @@ SUBSYSTEM_DEF(persistence)
saved_storytellers[3] = saved_storytellers[2]
saved_storytellers[2] = saved_storytellers[1]
saved_storytellers[1] = mode.storyteller.name
+ average_dynamic_threat = (mode.threat_average + average_dynamic_threat) / 2
var/json_file = file("data/RecentStorytellers.json")
var/list/file_data = list()
- file_data["data"] = saved_storytellers
+ file_data["data"] = saved_storytellers + average_dynamic_threat
fdel(json_file)
WRITE_FILE(json_file, json_encode(file_data))
diff --git a/code/controllers/subsystem/processing/chemistry.dm b/code/controllers/subsystem/processing/chemistry.dm
index da31d65fb3..64a780c1ad 100644
--- a/code/controllers/subsystem/processing/chemistry.dm
+++ b/code/controllers/subsystem/processing/chemistry.dm
@@ -1,5 +1,4 @@
PROCESSING_SUBSYSTEM_DEF(chemistry)
wait = 5
flags = SS_KEEP_TIMING
-
-
+ name = "Chemistry"
diff --git a/code/controllers/subsystem/processing/instruments.dm b/code/controllers/subsystem/processing/instruments.dm
new file mode 100644
index 0000000000..a4e0d7703f
--- /dev/null
+++ b/code/controllers/subsystem/processing/instruments.dm
@@ -0,0 +1,43 @@
+PROCESSING_SUBSYSTEM_DEF(instruments)
+ name = "Instruments"
+ wait = 0.5
+ init_order = INIT_ORDER_INSTRUMENTS
+ flags = SS_KEEP_TIMING
+ priority = FIRE_PRIORITY_INSTRUMENTS
+ var/static/list/datum/instrument/instrument_data = list() //id = datum
+ var/static/list/datum/song/songs = list()
+ var/static/musician_maxlines = 600
+ var/static/musician_maxlinechars = 300
+ var/static/musician_hearcheck_mindelay = 5
+ var/static/max_instrument_channels = MAX_INSTRUMENT_CHANNELS
+ var/static/current_instrument_channels = 0
+
+/datum/controller/subsystem/processing/instruments/Initialize()
+ initialize_instrument_data()
+ return ..()
+
+/datum/controller/subsystem/processing/instruments/proc/on_song_new(datum/song/S)
+ songs += S
+
+/datum/controller/subsystem/processing/instruments/proc/on_song_del(datum/song/S)
+ songs -= S
+
+/datum/controller/subsystem/processing/instruments/proc/initialize_instrument_data()
+ for(var/path in subtypesof(/datum/instrument))
+ var/datum/instrument/I = path
+ if(initial(I.abstract_type) == path)
+ continue
+ I = new path
+ I.Initialize()
+ instrument_data[I.id || "[I.type]"] = I
+ CHECK_TICK
+
+/datum/controller/subsystem/processing/instruments/proc/get_instrument(id_or_path)
+ return instrument_data["[id_or_path]"]
+
+/datum/controller/subsystem/processing/instruments/proc/reserve_instrument_channel(datum/instrument/I)
+ if(current_instrument_channels > max_instrument_channels)
+ return
+ . = SSsounds.reserve_sound_channel(I)
+ if(!isnull(.))
+ current_instrument_channels++
diff --git a/code/controllers/subsystem/processing/status_effects.dm b/code/controllers/subsystem/processing/status_effects.dm
index e8984a44cb..57b340b2ce 100644
--- a/code/controllers/subsystem/processing/status_effects.dm
+++ b/code/controllers/subsystem/processing/status_effects.dm
@@ -1,3 +1,4 @@
PROCESSING_SUBSYSTEM_DEF(status_effects)
wait = 1
flags = SS_TICKER
+ name = "Status Effects"
diff --git a/code/controllers/subsystem/processing/weather.dm b/code/controllers/subsystem/processing/weather.dm
index 0a1b4fc609..ca067953cc 100644
--- a/code/controllers/subsystem/processing/weather.dm
+++ b/code/controllers/subsystem/processing/weather.dm
@@ -47,7 +47,6 @@ PROCESSING_SUBSYSTEM_DEF(weather)
break
if (!ispath(weather_datum_type, /datum/weather))
CRASH("run_weather called with invalid weather_datum_type: [weather_datum_type || "null"]")
- return
if (isnull(z_levels))
z_levels = SSmapping.levels_by_trait(initial(weather_datum_type.target_trait))
@@ -55,7 +54,6 @@ PROCESSING_SUBSYSTEM_DEF(weather)
z_levels = list(z_levels)
else if (!islist(z_levels))
CRASH("run_weather called with invalid z_levels: [z_levels || "null"]")
- return
var/datum/weather/W = new weather_datum_type(z_levels)
W.telegraph()
diff --git a/code/controllers/subsystem/sounds.dm b/code/controllers/subsystem/sounds.dm
new file mode 100644
index 0000000000..5e7c5e6545
--- /dev/null
+++ b/code/controllers/subsystem/sounds.dm
@@ -0,0 +1,91 @@
+#define DATUMLESS "NO_DATUM"
+
+SUBSYSTEM_DEF(sounds)
+ name = "Sounds"
+ flags = SS_NO_FIRE
+ init_order = INIT_ORDER_SOUNDS
+ var/static/using_channels_max = CHANNEL_HIGHEST_AVAILABLE //BYOND max channels
+
+ // Hey uh these two needs to be initialized fast because the whole "things get deleted before init" thing.
+ /// Assoc list, "[channel]" = either the datum using it or TRUE for an unsafe-reserved (datumless reservation) channel
+ var/list/using_channels = list()
+ /// Assoc list datum = list(channel1, channel2, ...) for what channels something reserved.
+ var/list/using_channels_by_datum = list()
+ /// List of all available channels with associations set to TRUE for fast lookups/allocation.
+ var/list/available_channels
+
+/datum/controller/subsystem/sounds/Initialize()
+ setup_available_channels()
+ return ..()
+
+/datum/controller/subsystem/sounds/proc/setup_available_channels()
+ available_channels = list()
+ for(var/i in 1 to using_channels_max)
+ available_channels[num2text(i)] = TRUE
+
+/// Removes a channel from using list.
+/datum/controller/subsystem/sounds/proc/free_sound_channel(channel)
+ channel = num2text(channel)
+ var/using = using_channels[channel]
+ using_channels -= channel
+ if(using)
+ using_channels_by_datum[using] -= channel
+ if(!length(using_channels_by_datum[using]))
+ using_channels_by_datum -= using
+ available_channels[channel] = TRUE
+
+/// Frees all the channels a datum is using.
+/datum/controller/subsystem/sounds/proc/free_datum_channels(datum/D)
+ var/list/L = using_channels_by_datum[D]
+ if(!L)
+ return
+ for(var/channel in L)
+ using_channels -= channel
+ available_channels[channel] = TRUE
+ using_channels_by_datum -= D
+
+/// Frees all datumless channels
+/datum/controller/subsystem/sounds/proc/free_datumless_channels()
+ free_datum_channels(DATUMLESS)
+
+/// NO AUTOMATIC CLEANUP - If you use this, you better manually free it later! Returns an integer for channel.
+/datum/controller/subsystem/sounds/proc/reserve_sound_channel_datumless()
+ var/channel = random_available_channel_text()
+ if(!channel) //oh no..
+ return FALSE
+ available_channels -= channel
+ using_channels[channel] = DATUMLESS
+ LAZYINITLIST(using_channels_by_datum[DATUMLESS])
+ using_channels_by_datum[DATUMLESS] += channel
+ return text2num(channel)
+
+/// Reserves a channel for a datum. Automatic cleanup only when the datum is deleted. Returns an integer for channel.
+/datum/controller/subsystem/sounds/proc/reserve_sound_channel(datum/D)
+ if(!D) //i don't like typechecks but someone will fuck it up
+ CRASH("Attempted to reserve sound channel without datum using the managed proc.")
+ var/channel = random_available_channel_text()
+ if(!channel)
+ return FALSE
+ available_channels -= channel
+ using_channels[channel] = D
+ LAZYINITLIST(using_channels_by_datum[D])
+ using_channels_by_datum[D] += channel
+ return text2num(channel)
+
+/// Random available channel, returns text.
+/datum/controller/subsystem/sounds/proc/random_available_channel_text()
+ return pick(available_channels)
+
+/// Random available channel, returns number
+/datum/controller/subsystem/sounds/proc/random_available_channel()
+ return text2num(pick(available_channels))
+
+/// If a channel is available
+/datum/controller/subsystem/sounds/proc/is_channel_available(channel)
+ return available_channels[num2text(channel)]
+
+/// How many channels we have left.
+/datum/controller/subsystem/sounds/proc/available_channels_left()
+ return length(available_channels)
+
+#undef DATUMLESS
diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm
index 0d854371aa..87158f021e 100644
--- a/code/controllers/subsystem/traumas.dm
+++ b/code/controllers/subsystem/traumas.dm
@@ -172,7 +172,7 @@ SUBSYSTEM_DEF(traumas)
/obj/item/ammo_box/magazine/pistolm9mm, /obj/item/ammo_box/a357, /obj/item/ammo_box/magazine/m12g, /obj/item/ammo_box/magazine/mm195x129, /obj/item/antag_spawner/nuke_ops, /obj/mecha/combat/gygax/dark, /obj/mecha/combat/marauder/mauler, /obj/item/soap/syndie, /obj/item/gun/syringe/syndicate, /obj/item/cartridge/virus/syndicate,
/obj/item/cartridge/virus/frame, /obj/item/chameleon, /obj/item/storage/box/syndie_kit/cutouts, /obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/card/emag, /obj/item/storage/toolbox/syndicate, /obj/item/storage/book/bible/syndicate, /obj/item/encryptionkey/binary, /obj/item/encryptionkey/syndicate, /obj/item/aiModule/syndicate,
/obj/item/clothing/shoes/magboots/syndie, /obj/item/powersink, /obj/item/sbeacondrop, /obj/item/sbeacondrop/bomb, /obj/item/syndicatedetonator, /obj/item/shield/energy, /obj/item/assault_pod, /obj/item/slimepotion/slime/sentience/nuclear, /obj/item/stack/telecrystal, /obj/item/jammer, /obj/item/codespeak_manual/unlimited,
- /obj/item/toy/cards/deck/syndicate, /obj/item/storage/secure/briefcase/syndie, /obj/item/storage/fancy/cigarettes/cigpack_syndicate, /obj/item/toy/syndicateballoon, /obj/item/clothing/gloves/rapid, /obj/item/paper/fluff/ruins/thederelict/syndie_mission, /obj/item/organ/cyberimp/eyes/hud/security/syndicate, /obj/item/clothing/head/HoS/syndicate,
+ /obj/item/toy/cards/deck/syndicate, /obj/item/storage/secure/briefcase/syndie, /obj/item/storage/fancy/cigarettes/cigpack_syndicate, /obj/item/toy/syndicateballoon, /obj/item/clothing/gloves/fingerless/pugilist/rapid, /obj/item/paper/fluff/ruins/thederelict/syndie_mission, /obj/item/organ/cyberimp/eyes/hud/security/syndicate, /obj/item/clothing/head/HoS/syndicate,
/obj/machinery/computer/pod/old/syndicate, /obj/machinery/vending/medical/syndicate_access, /obj/item/mmi/syndie, /obj/item/target/syndicate, /obj/machinery/vending/cigarette/syndicate, /obj/item/robot_module/syndicate, /obj/item/clothing/mask/gas/syndicate, /obj/machinery/power/singularity_beacon/syndicate, /obj/item/clothing/head/syndicatefake,
/obj/item/radio/headset/syndicate, /obj/item/gun/ballistic/automatic/pistol/antitank/syndicate, /obj/item/pda/syndicate, /obj/item/clothing/suit/armor/vest/capcarapace/syndicate, /obj/item/gun/ballistic/automatic/flechette, /obj/item/ammo_box/magazine/flechette, /obj/item/clothing/suit/toggle/lawyer/black/syndie, /obj/item/melee/transforming/energy/sword/cx/traitor,
/obj/structure/sign/poster/contraband/syndicate_pistol, /obj/structure/sign/poster/contraband/syndicate_recruitment, /obj/item/bedsheet/syndie, /obj/item/borg/upgrade/syndicate, /obj/item/tank/jetpack/oxygen/harness, /obj/item/firing_pin/implant/pindicate, /obj/item/reagent_containers/glass/bottle/traitor, /obj/item/storage/belt/military,
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index 7d72951278..a202afd905 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -763,7 +763,7 @@ SUBSYSTEM_DEF(vote)
remove_from_client()
Remove(owner)
-/datum/action/vote/IsAvailable()
+/datum/action/vote/IsAvailable(silent = FALSE)
return 1
/datum/action/vote/proc/remove_from_client()
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 19e418579e..f2f93ac40d 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -6,13 +6,15 @@
/datum/action
var/name = "Generic Action"
var/desc = null
- var/obj/target = null
+ var/atom/target = null
var/check_flags = 0
var/required_mobility_flags = MOBILITY_USE
var/processing = FALSE
var/obj/screen/movable/action_button/button = null
var/buttontooltipstyle = ""
var/transparent_when_unavailable = TRUE
+ var/use_target_appearance = FALSE
+ var/list/target_appearance_matrix //if set, will be used to transform the target button appearance as an arglist.
var/button_icon = 'icons/mob/actions/backgrounds.dmi' //This is the file for the BACKGROUND icon
var/background_icon_state = ACTION_BUTTON_DEFAULT_BACKGROUND //And this is the state for the background icon
@@ -88,14 +90,14 @@
/datum/action/proc/Trigger()
if(!IsAvailable())
return FALSE
- if(SEND_SIGNAL(src, COMSIG_ACTION_TRIGGER, src) & COMPONENT_ACTION_BLOCK_TRIGGER)
+ if(SEND_SIGNAL(src, COMSIG_ACTION_TRIGGER, target) & COMPONENT_ACTION_BLOCK_TRIGGER)
return FALSE
return TRUE
/datum/action/proc/Process()
return
-/datum/action/proc/IsAvailable()
+/datum/action/proc/IsAvailable(silent = FALSE)
if(!owner)
return FALSE
var/mob/living/L = owner
@@ -116,29 +118,42 @@
return TRUE
/datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE)
- if(button)
- if(!status_only)
- button.name = name
- button.desc = desc
- if(owner && owner.hud_used && background_icon_state == ACTION_BUTTON_DEFAULT_BACKGROUND)
- var/list/settings = owner.hud_used.get_action_buttons_icons()
- if(button.icon != settings["bg_icon"])
- button.icon = settings["bg_icon"]
- if(button.icon_state != settings["bg_state"])
- button.icon_state = settings["bg_state"]
- else
- if(button.icon != button_icon)
- button.icon = button_icon
- if(button.icon_state != background_icon_state)
- button.icon_state = background_icon_state
+ if(!button)
+ return
+ if(!status_only)
+ button.name = name
+ button.desc = desc
+ if(owner && owner.hud_used && background_icon_state == ACTION_BUTTON_DEFAULT_BACKGROUND)
+ var/list/settings = owner.hud_used.get_action_buttons_icons()
+ if(button.icon != settings["bg_icon"])
+ button.icon = settings["bg_icon"]
+ if(button.icon_state != settings["bg_state"])
+ button.icon_state = settings["bg_state"]
+ else
+ if(button.icon != button_icon)
+ button.icon = button_icon
+ if(button.icon_state != background_icon_state)
+ button.icon_state = background_icon_state
+ if(!use_target_appearance)
ApplyIcon(button, force)
- if(!IsAvailable())
- button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0)
- else
- button.color = rgb(255,255,255,255)
- return 1
+ else if(target && button.appearance_cache != target.appearance) //replace with /ref comparison if this is not valid.
+ var/mutable_appearance/M = new(target)
+ M.layer = FLOAT_LAYER
+ M.plane = FLOAT_PLANE
+ if(target_appearance_matrix)
+ var/list/L = target_appearance_matrix
+ M.transform = matrix(L[1], L[2], L[3], L[4], L[5], L[6])
+ button.cut_overlays()
+ button.add_overlay(M)
+ button.appearance_cache = target.appearance
+
+ if(!IsAvailable(TRUE))
+ button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0)
+ else
+ button.color = rgb(255,255,255,255)
+ return 1
/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button, force = FALSE)
if(icon_icon && button_icon_state && ((current_button.button_icon_state != button_icon_state) || force))
@@ -165,6 +180,7 @@
/datum/action/item_action
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_LYING|AB_CHECK_CONSCIOUS
button_icon_state = null
+ use_target_appearance = TRUE
// If you want to override the normal icon being the item
// then change this to an icon state
@@ -188,23 +204,6 @@
I.ui_action_click(owner, src)
return 1
-/datum/action/item_action/ApplyIcon(obj/screen/movable/action_button/current_button, force)
- if(button_icon && button_icon_state)
- // If set, use the custom icon that we set instead
- // of the item appearence
- ..()
- else if(target && current_button.appearance_cache != target.appearance) //replace with /ref comparison if this is not valid.
- var/obj/item/I = target
- var/old_layer = I.layer
- var/old_plane = I.plane
- I.layer = FLOAT_LAYER //AAAH
- I.plane = FLOAT_PLANE //^ what that guy said
- current_button.cut_overlays()
- current_button.add_overlay(I)
- I.layer = old_layer
- I.plane = old_plane
- current_button.appearance_cache = I.appearance
-
/datum/action/item_action/toggle_light
name = "Toggle Light"
@@ -302,23 +301,13 @@
name = "Toggle Friendly Fire \[ON\]"
..()
-/datum/action/item_action/synthswitch
- name = "Change Synthesizer Instrument"
- desc = "Change the type of instrument your synthesizer is playing as."
-
-/datum/action/item_action/synthswitch/Trigger()
- if(istype(target, /obj/item/instrument/piano_synth))
- var/obj/item/instrument/piano_synth/synth = target
- return synth.selectInstrument()
- return ..()
-
/datum/action/item_action/vortex_recall
name = "Vortex Recall"
desc = "Recall yourself, and anyone nearby, to an attuned hierophant beacon at any time. If the beacon is still attached, will detach it."
icon_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "vortex_recall"
-/datum/action/item_action/vortex_recall/IsAvailable()
+/datum/action/item_action/vortex_recall/IsAvailable(silent = FALSE)
if(istype(target, /obj/item/hierophant_club))
var/obj/item/hierophant_club/H = target
if(H.teleporting)
@@ -330,7 +319,7 @@
background_icon_state = "bg_clock"
buttontooltipstyle = "clockcult"
-/datum/action/item_action/clock/IsAvailable()
+/datum/action/item_action/clock/IsAvailable(silent = FALSE)
if(!is_servant_of_ratvar(owner))
return 0
return ..()
@@ -339,7 +328,7 @@
name = "Create Judicial Marker"
desc = "Allows you to create a stunning Judicial Marker at any location in view. Click again to disable."
-/datum/action/item_action/clock/toggle_visor/IsAvailable()
+/datum/action/item_action/clock/toggle_visor/IsAvailable(silent = FALSE)
if(!is_servant_of_ratvar(owner))
return 0
if(istype(target, /obj/item/clothing/glasses/judicial_visor))
@@ -418,7 +407,7 @@
/datum/action/item_action/jetpack_stabilization
name = "Toggle Jetpack Stabilization"
-/datum/action/item_action/jetpack_stabilization/IsAvailable()
+/datum/action/item_action/jetpack_stabilization/IsAvailable(silent = FALSE)
var/obj/item/tank/jetpack/J = target
if(!istype(J) || !J.on)
return 0
@@ -475,7 +464,7 @@
/datum/action/item_action/organ_action
check_flags = AB_CHECK_CONSCIOUS
-/datum/action/item_action/organ_action/IsAvailable()
+/datum/action/item_action/organ_action/IsAvailable(silent = FALSE)
var/obj/item/organ/I = target
if(!I.owner)
return 0
@@ -644,32 +633,32 @@
return FALSE
if(target)
var/obj/effect/proc_holder/S = target
- S.Click()
+ S.Trigger(usr)
return TRUE
-/datum/action/spell_action/IsAvailable()
+/datum/action/spell_action/IsAvailable(silent = FALSE)
if(!target)
return FALSE
return TRUE
/datum/action/spell_action/spell
-/datum/action/spell_action/spell/IsAvailable()
+/datum/action/spell_action/spell/IsAvailable(silent = FALSE)
if(!target)
return FALSE
var/obj/effect/proc_holder/spell/S = target
if(owner)
- return S.can_cast(owner)
+ return S.can_cast(owner, FALSE, silent)
return FALSE
/datum/action/spell_action/alien
-/datum/action/spell_action/alien/IsAvailable()
+/datum/action/spell_action/alien/IsAvailable(silent = FALSE)
if(!target)
return FALSE
var/obj/effect/proc_holder/alien/ab = target
if(owner)
- return ab.cost_check(ab.check_turf,owner,1)
+ return ab.cost_check(ab.check_turf,owner,silent)
return FALSE
@@ -711,7 +700,7 @@
button.maptext_width = 24
button.maptext_height = 12
-/datum/action/cooldown/IsAvailable()
+/datum/action/cooldown/IsAvailable(silent = FALSE)
return next_use_time <= world.time
/datum/action/cooldown/proc/StartCooldown()
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index 8b82c1812e..5b1df6cb68 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -39,7 +39,7 @@
//title_image = ntitle_image
/datum/browser/proc/add_stylesheet(name, file)
- if (istype(name, /datum/asset/spritesheet))
+ if(istype(name, /datum/asset/spritesheet))
var/datum/asset/spritesheet/sheet = name
stylesheets["spritesheet_[sheet.name].css"] = "data/spritesheets/[sheet.name]"
else
diff --git a/code/datums/components/crafting/glassware.dm b/code/datums/components/crafting/glassware/glassware.dm
similarity index 58%
rename from code/datums/components/crafting/glassware.dm
rename to code/datums/components/crafting/glassware/glassware.dm
index 22d7e01f8a..2b57837c5d 100644
--- a/code/datums/components/crafting/glassware.dm
+++ b/code/datums/components/crafting/glassware/glassware.dm
@@ -14,26 +14,32 @@
name = "Glass working tools"
desc = "A lovely belt of most the tools you will need to shape, mold, and refine glass into more advanced shapes."
icon_state = "glass_tools"
- tool_behaviour = TOOL_GLASS_CUT
+ tool_behaviour = TOOL_GLASS_CUT //Cutting takes 20 ticks
/obj/item/glasswork/blowing_rod
name = "Glass working blow rod"
desc = "A hollow metal stick made for glass blowing."
icon_state = "blowing_rods_unused"
- tool_behaviour = TOOL_BLOW
+ tool_behaviour = TOOL_BLOW //Rods take 5 ticks
-/obj/item/glasswork/glass_base
+/obj/item/glasswork/glass_base //Welding takes 30 ticks
name = "Glass fodder sheet"
desc = "A sheet of glass set aside for glass working"
icon_state = "glass_base"
var/next_step = null
var/rod = /obj/item/glasswork/blowing_rod
-/obj/item/lens
- name = "Optical lens"
- desc = "Good for selling or crafting, by itself its useless"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "glass_optics"
+/obj/item/tea_plate
+ name = "Tea Plate"
+ desc = "A polished plate for a tea cup. How fancy!"
+ icon = 'icons/obj/glass_ware.dmi'
+ icon_state = "tea_plate"
+
+/obj/item/tea_cup
+ name = "Tea Cup"
+ desc = "A glass cup made for fake tea!"
+ icon = 'icons/obj/glass_ware.dmi'
+ icon_state = "tea_plate"
//////////////////////Chem Disk/////////////////////
//Two Steps //
@@ -49,8 +55,9 @@
/obj/item/glasswork/glass_base/dish/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/dish_part1
name = "Half chem dish sheet"
@@ -61,8 +68,9 @@
/obj/item/glasswork/glass_base/dish_part1/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
//////////////////////Lens//////////////////////////
//Six Steps //
@@ -78,8 +86,9 @@
/obj/item/glasswork/glass_base/glass_lens/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part1
name = "Glass fodder sheet"
@@ -90,8 +99,9 @@
/obj/item/glasswork/glass_base/glass_lens_part1/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_WELDER)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,30, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part2
name = "Glass fodder sheet"
@@ -102,8 +112,9 @@
/obj/item/glasswork/glass_base/glass_lens_part2/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_WELDER)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,30, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part3
name = "Glass fodder sheet"
@@ -114,9 +125,10 @@
/obj/item/glasswork/glass_base/glass_lens_part3/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_BLOW)
- new next_step(user.loc, 1)
- qdel(src)
- qdel(I)
+ if(do_after(user,5, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+ qdel(I)
/obj/item/glasswork/glass_base/glass_lens_part4
name = "Glass fodder sheet"
@@ -127,29 +139,31 @@
/obj/item/glasswork/glass_base/glass_lens_part4/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- new rod(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part5
name = "Unpolished glass lens"
- desc = "A small unpolished glass lens. Could be polished with some cloth."
- icon = 'icons/obj/chemical.dmi'
+ desc = "A small unpolished glass lens. Could be polished with some silk."
+ icon = 'icons/obj/glass_ware.dmi'
icon_state = "glass_optics"
next_step = /obj/item/glasswork/glass_base/glass_lens_part6
/obj/item/glasswork/glass_base/glass_lens_part5/attackby(obj/item/I, mob/user, params)
..()
- if(istype(I, /obj/item/stack/sheet/cloth))
- new next_step(user.loc, 1)
- qdel(src)
+ if(istype(I, /obj/item/stack/sheet/silk))
+ if(do_after(user,10, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part6
name = "Unrefined glass lens"
desc = "A small polished glass lens. Just needs to be refined with some sandstone."
- icon = 'icons/obj/chemical.dmi'
+ icon = 'icons/obj/glass_ware.dmi'
icon_state = "glass_optics"
- next_step = /obj/item/lens
+ next_step = /obj/item/glasswork/glass_base/lens
/obj/item/glasswork/glass_base/glass_lens_part6/attackby(obj/item/I, mob/user, params)
..()
@@ -171,8 +185,9 @@
/obj/item/glasswork/glass_base/spouty/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/spouty_part2
name = "Glass fodder sheet"
@@ -183,8 +198,9 @@
/obj/item/glasswork/glass_base/spouty_part2/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_WELDER)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,30, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/spouty_part3
name = "Glass fodder sheet"
@@ -195,9 +211,10 @@
/obj/item/glasswork/glass_base/spouty_part3/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_BLOW)
- new next_step(user.loc, 1)
- qdel(src)
- qdel(I)
+ if(do_after(user,5, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+ qdel(I)
/obj/item/glasswork/glass_base/spouty_part4
name = "Glass fodder sheet"
@@ -208,9 +225,10 @@
/obj/item/glasswork/glass_base/spouty_part4/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- new rod(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(src)
//////////////////////Small Bulb Flask//////////////
//Two Steps //
@@ -226,8 +244,9 @@
/obj/item/glasswork/glass_base/flask_small/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_WELDER)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,30, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/flask_small_part1
name = "Metled glass"
@@ -238,9 +257,10 @@
/obj/item/glasswork/glass_base/flask_small_part1/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_BLOW)
- new next_step(user.loc, 1)
- qdel(src)
- qdel(I)
+ if(do_after(user,5, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+ qdel(I)
/obj/item/glasswork/glass_base/flask_small_part2
name = "Metled glass"
@@ -251,9 +271,10 @@
/obj/item/glasswork/glass_base/flask_small_part2/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- new rod(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(src)
//////////////////////Large Bulb Flask//////////////
//Two Steps //
@@ -269,8 +290,9 @@
/obj/item/glasswork/glass_base/flask_large/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_WELDER)
- new next_step(user.loc, 1)
- qdel(src)
+ if(do_after(user,30, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
/obj/item/glasswork/glass_base/flask_large_part1
name = "Metled glass"
@@ -281,9 +303,10 @@
/obj/item/glasswork/glass_base/flask_large_part1/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_BLOW)
- new next_step(user.loc, 1)
- qdel(src)
- qdel(I)
+ if(do_after(user,5, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+ qdel(I)
/obj/item/glasswork/glass_base/flask_large_part2
name = "Metled glass"
@@ -294,6 +317,138 @@
/obj/item/glasswork/glass_base/flask_large_part2/attackby(obj/item/I, mob/user, params)
..()
if(I.tool_behaviour == TOOL_GLASS_CUT)
- new next_step(user.loc, 1)
- new rod(user.loc, 1)
- qdel(src)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(src)
+
+//////////////////////Tea Plates////////////////////
+//Three Steps //
+//Sells for 1200 cr, takes 5 glass shets //
+//Usefull for selling and chemical things //
+////////////////////////////////////////////////////
+
+/obj/item/glasswork/glass_base/tea_plate
+ name = "Glass fodder sheet"
+ desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea plate, how fancy! Needs to be heated with some tools."
+ next_step = /obj/item/glasswork/glass_base/tea_plate1
+
+/obj/item/glasswork/glass_base/tea_plate/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_WELDER)
+ if(do_after(user,30, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/tea_plate1
+ name = "Metled glass"
+ desc = "A blob of metled glass, this one is ideal for a tea plate. Needs to be blown with some tools."
+ icon_state = "glass_base_molding"
+ next_step = /obj/item/glasswork/glass_base/tea_plate2
+
+/obj/item/glasswork/glass_base/tea_plate1/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_BLOW)
+ if(do_after(user,5, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+ qdel(I)
+
+/obj/item/glasswork/glass_base/tea_plate2
+ name = "Metled glass"
+ desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
+ icon_state = "blowing_rods_inuse"
+ next_step = /obj/item/glasswork/glass_base/tea_plate3
+
+/obj/item/glasswork/glass_base/tea_plate2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_GLASS_CUT)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/tea_plate3
+ name = "Disk of glass"
+ desc = "A disk of glass that can be cant be used for much. Needs to be polished with some silk."
+ icon_state = "glass_base_half"
+ next_step = /obj/item/tea_plate
+
+/obj/item/glasswork/glass_base/tea_plate3/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/stack/sheet/silk))
+ if(do_after(user,10, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+//////////////////////Tea Cup///////////////////////
+//Four Steps //
+//Sells for 1800 cr, takes 6 glass shets //
+//Usefull for selling and chemical things //
+////////////////////////////////////////////////////
+
+/obj/item/glasswork/glass_base/tea_cup
+ name = "Glass fodder sheet"
+ desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea cup, how fancy! Needs to be heated with some tools."
+ next_step = /obj/item/glasswork/glass_base/tea_cup1
+
+/obj/item/glasswork/glass_base/tea_cup/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_WELDER)
+ if(do_after(user,30, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/tea_cup1
+ name = "Metled glass"
+ desc = "A blob of metled glass, this one is ideal for a tea cup. Needs to be blown with some tools."
+ icon_state = "glass_base_molding"
+ next_step = /obj/item/glasswork/glass_base/tea_cup2
+
+/obj/item/glasswork/glass_base/tea_cup1/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_BLOW)
+ if(do_after(user,5, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+ qdel(I)
+
+/obj/item/glasswork/glass_base/tea_cupe2
+ name = "Metled glass"
+ desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
+ icon_state = "blowing_rods_inuse"
+ next_step = /obj/item/glasswork/glass_base/tea_cup3
+
+/obj/item/glasswork/glass_base/tea_cup2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_GLASS_CUT)
+ if(do_after(user,20, target = src))
+ new next_step(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/tea_cup3
+ name = "Disk of glass"
+ desc = "A bowl of glass that can be cant be used for much. Needs to be polished with some silk."
+ icon_state = "glass_base_half"
+ next_step = /obj/item/glasswork/glass_base/tea_cup4
+
+/obj/item/glasswork/glass_base/cup3/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/stack/sheet/silk))
+ if(do_after(user,10, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/tea_cup4
+ name = "Disk of glass"
+ desc = "A bowl of polished glass that can be cant be used for much. Needs some more glass to make a handle."
+ icon_state = "glass_base_half"
+ next_step = /obj/item/tea_cup
+
+/obj/item/glasswork/glass_base/cup4/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/stack/sheet/glass))
+ if(do_after(user,10, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
\ No newline at end of file
diff --git a/code/datums/components/crafting/glassware/lens_crafting.dm b/code/datums/components/crafting/glassware/lens_crafting.dm
new file mode 100644
index 0000000000..117df25a30
--- /dev/null
+++ b/code/datums/components/crafting/glassware/lens_crafting.dm
@@ -0,0 +1,98 @@
+//This file is for crafting using a lens!
+
+/obj/item/glasswork/glass_base/lens
+ name = "Optical lens"
+ desc = "Good for selling or crafting, by itself its useless"
+ icon = 'icons/obj/glass_ware.dmi'
+ icon_state = "glass_optics"
+
+//Laser pointers - 2600
+/obj/item/glasswork/glass_base/laserpointer_shell
+ name = "Laser pointer assembly"
+ desc = "Good for selling or crafting, by itself its useless. Needs a power capactor."
+ icon_state = "laser_case"
+ icon = 'icons/obj/glass_ware.dmi'
+ next_step = /obj/item/glasswork/glass_base/laserpointer_shell_1
+
+/obj/item/glasswork/glass_base/laserpointer_shell/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/stock_parts/capacitor))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/laserpointer_shell_1
+ name = "Laser pointer assembly"
+ desc = "Good for selling or crafting, by itself its useless. Needs a glass lens."
+ icon_state = "laser_wire"
+ icon_state = "laser_case"
+ next_step = /obj/item/glasswork/glass_base/laserpointer_shell_2
+
+/obj/item/glasswork/glass_base/laserpointer_shell_1/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base/lens))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/laserpointer_shell_2
+ name = "Laser pointer assembly"
+ desc = "Good for selling or crafting, by itself its useless. Needs to be screwed together."
+ icon_state = "laser_wire"
+ icon_state = "laser_case"
+ next_step = /obj/item/laser_pointer/blue/handmade
+
+/obj/item/glasswork/glass_base/laserpointer_shell_2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_SCREWDRIVER)
+ if(do_after(user,260, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+//NERD SHIT - 5000
+
+/obj/item/glasswork/glass_base/glasses_frame
+ name = "Glasses Frame"
+ desc = "Good for crafting a pare of glasses, by itself its useless. Just add a pare of lens."
+ icon = 'icons/obj/glass_ware.dmi'
+ icon_state = "frames"
+ next_step = /obj/item/glasswork/glass_base/glasses_frame_1
+
+/obj/item/glasswork/glass_base/glasses_frame/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base/lens))
+ if(do_after(user,60, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/glasses_frame_1
+ name = "Glasses Frame"
+ desc = "Good for crafting a pare of glasses, by itself its useless. Just add a the other lens."
+ icon = 'icons/obj/glass_ware.dmi'
+ icon_state = "frames_1"
+ next_step = /obj/item/glasswork/glass_base/glasses_frame_2
+
+/obj/item/glasswork/glass_base/glasses_frame_1/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base/lens))
+ if(do_after(user,60, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glass_base/glasses_frame_2
+ name = "Glasses Frame"
+ desc = "Good for crafting a pare of glasses, by itself its useless. Just adjust the pices into the frame with a screwdriver."
+ icon = 'icons/obj/glass_ware.dmi'
+ icon_state = "frames_2"
+ next_step = /obj/item/glasswork/glasses
+
+/obj/item/glasswork/glass_base/glasses_frame_2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(I.tool_behaviour == TOOL_SCREWDRIVER)
+ if(do_after(user,180, target = src))
+ new next_step(user.loc, 1)
+ qdel(src)
+
+/obj/item/glasswork/glasses
+ name = "Hand Made Glasses"
+ desc = "Hande made glasses that have not been polished at all making them useless. Selling them could still be worth a bit of credits."
+ icon = 'icons/obj/glass_ware.dmi'
+ icon_state = "frames_2"
\ No newline at end of file
diff --git a/code/datums/components/crafting/recipes/recipes_clothing.dm b/code/datums/components/crafting/recipes/recipes_clothing.dm
index 444eaeafaf..fc1f4e25e5 100644
--- a/code/datums/components/crafting/recipes/recipes_clothing.dm
+++ b/code/datums/components/crafting/recipes/recipes_clothing.dm
@@ -33,6 +33,13 @@
/obj/item/organ/ears/cat = 1)
category = CAT_CLOTHING
+/datum/crafting_recipe/papermask
+ name = "Paper Mask"
+ result = /obj/item/clothing/mask/paper
+ time = 10
+ reqs = list(/obj/item/paper = 20)
+ category = CAT_CLOTHING
+
////////
//Huds//
////////
diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm
index 2853f800f5..decc2dd65c 100644
--- a/code/datums/components/radioactive.dm
+++ b/code/datums/components/radioactive.dm
@@ -25,7 +25,6 @@
RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack)
else
CRASH("Something that wasn't an atom was given /datum/component/radioactive")
- return
if(strength > RAD_MINIMUM_CONTAMINATION)
SSradiation.warn(src)
@@ -84,4 +83,4 @@
#undef RAD_AMOUNT_LOW
#undef RAD_AMOUNT_MEDIUM
#undef RAD_AMOUNT_HIGH
-#undef RAD_AMOUNT_EXTREME
\ No newline at end of file
+#undef RAD_AMOUNT_EXTREME
diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index ea72a8a6dd..3ed66dcf92 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -790,7 +790,7 @@
user.visible_message("[user] draws [I] from [parent]! ", "You draw [I] from [parent]. ")
return TRUE
-/datum/component/storage/proc/action_trigger(datum/signal_source, datum/action/source)
+/datum/component/storage/proc/action_trigger(datum/action/source, obj/target)
gather_mode_switch(source.owner)
return COMPONENT_ACTION_BLOCK_TRIGGER
diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm
index e73465d785..dde8961482 100644
--- a/code/datums/components/uplink.dm
+++ b/code/datums/components/uplink.dm
@@ -27,6 +27,8 @@ GLOBAL_LIST_EMPTY(uplinks)
var/datum/ui_state/checkstate
var/compact_mode = FALSE
var/debug = FALSE
+ var/saved_player_population = 0
+ var/list/filters = list()
/datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20, datum/ui_state/_checkstate, datum/traitor_class/traitor_class)
if(!isitem(parent))
@@ -47,7 +49,6 @@ GLOBAL_LIST_EMPTY(uplinks)
RegisterSignal(parent, COMSIG_PEN_ROTATED, .proc/pen_rotation)
GLOB.uplinks += src
- var/list/filters = list()
if(istype(traitor_class))
filters = traitor_class.uplink_filters
starting_tc = traitor_class.TC
@@ -68,6 +69,7 @@ GLOBAL_LIST_EMPTY(uplinks)
if(!lockable)
active = TRUE
locked = FALSE
+ saved_player_population = GLOB.joined_player_list.len
/datum/component/uplink/InheritComponent(datum/component/uplink/U)
lockable |= U.lockable
@@ -117,7 +119,18 @@ GLOBAL_LIST_EMPTY(uplinks)
return
active = TRUE
if(user)
+ //update the saved population
+ var/previous_player_population = saved_player_population
+ saved_player_population = GLOB.joined_player_list.len
+ //if population has changed, update uplink items
+ if(saved_player_population != previous_player_population)
+ //make sure discounts are not rerolled
+ var/old_discounts = uplink_items["Discounted Gear"]
+ uplink_items = get_uplink_items(gamemode, FALSE, allow_restricted, filters)
+ if(old_discounts)
+ uplink_items["Discounted Gear"] = old_discounts
ui_interact(user)
+
// an unlocked uplink blocks also opening the PDA or headset menu
return COMPONENT_NO_INTERACT
@@ -190,7 +203,9 @@ GLOBAL_LIST_EMPTY(uplinks)
if(item in buyable_items)
var/datum/uplink_item/I = buyable_items[item]
- MakePurchase(usr, I)
+ //check to make sure people cannot buy items when the player pop is below the requirement
+ if(GLOB.joined_player_list.len >= I.player_minimum)
+ MakePurchase(usr, I)
. = TRUE
if("lock")
active = FALSE
diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm
index 9239d4c565..56e06e3582 100644
--- a/code/datums/components/virtual_reality.dm
+++ b/code/datums/components/virtual_reality.dm
@@ -176,7 +176,7 @@
/**
*The following procs simply acts as hooks for quit(), since components do not use callbacks anymore
*/
-/datum/component/virtual_reality/proc/action_trigger(datum/signal_source, datum/action/source)
+/datum/component/virtual_reality/proc/action_trigger(datum/action/source, obj/target)
quit()
return COMPONENT_ACTION_BLOCK_TRIGGER
diff --git a/code/datums/components/wearertargeting.dm b/code/datums/components/wearertargeting.dm
index feaa88f934..4760757701 100644
--- a/code/datums/components/wearertargeting.dm
+++ b/code/datums/components/wearertargeting.dm
@@ -19,4 +19,4 @@
UnregisterSignal(equipper, signals)
/datum/component/wearertargeting/proc/on_drop(datum/source, mob/user)
- UnregisterSignal(user, signals)
\ No newline at end of file
+ UnregisterSignal(user, signals)
diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm
index 20f2c1bbb5..30c6625049 100644
--- a/code/datums/components/wet_floor.dm
+++ b/code/datums/components/wet_floor.dm
@@ -19,7 +19,6 @@
var/datum/component/wet_floor/WF = newcomp //Lets make an assumption
if(WF.gc()) //See if it's even valid, still. Also does LAZYLEN and stuff for us.
CRASH("Wet floor component tried to inherit another, but the other was able to garbage collect while being inherited! What a waste of time!")
- return
for(var/i in WF.time_left_list)
add_wet(text2num(i), WF.time_left_list[i])
diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm
index 8eda936bb7..c31139dcd7 100644
--- a/code/datums/dash_weapon.dm
+++ b/code/datums/dash_weapon.dm
@@ -19,7 +19,7 @@
dashing_item = dasher
holder = user
-/datum/action/innate/dash/IsAvailable()
+/datum/action/innate/dash/IsAvailable(silent = FALSE)
if(current_charges > 0)
return TRUE
else
diff --git a/code/datums/datum.dm b/code/datums/datum.dm
index a856f2392d..6202ac444e 100644
--- a/code/datums/datum.dm
+++ b/code/datums/datum.dm
@@ -109,6 +109,8 @@
UnregisterSignal(target, signal_procs[target])
//END: ECS SHIT
+ SSsounds.free_datum_channels(src)
+
return QDEL_HINT_QUEUE
#ifdef DATUMVAR_DEBUGGING_MODE
@@ -173,11 +175,9 @@
if(!islist(jsonlist))
if(!istext(jsonlist))
CRASH("Invalid JSON")
- return
jsonlist = json_decode(jsonlist)
if(!islist(jsonlist))
CRASH("Invalid JSON")
- return
if(!jsonlist["DATUM_TYPE"])
return
if(!ispath(jsonlist["DATUM_TYPE"]))
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 81db7deb68..f97fde6f7e 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -1,7 +1,3 @@
-#define VV_MSG_MARKED "Marked Object "
-#define VV_MSG_EDITED "Var Edited "
-#define VV_MSG_DELETED "Deleted "
-
/datum/proc/CanProcCall(procname)
return TRUE
@@ -21,1386 +17,34 @@
return debug_variable(var_name, list(), 0, src)
return debug_variable(var_name, vars[var_name], 0, src)
+/datum/proc/can_vv_mark()
+ return TRUE
+
//please call . = ..() first and append to the result, that way parent items are always at the top and child items are further down
//add separaters by doing . += "---"
/datum/proc/vv_get_dropdown()
. = list()
- . += "---"
- .["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=\ref[src]"
- .["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=\ref[src]"
- .["Delete"] = "?_src_=vars;[HrefToken()];delete=\ref[src]"
- .["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=\ref[src]"
+ VV_DROPDOWN_OPTION("", "---")
+ VV_DROPDOWN_OPTION(VV_HK_CALLPROC, "Call Proc")
+ VV_DROPDOWN_OPTION(VV_HK_MARK, "Mark Object")
+ VV_DROPDOWN_OPTION(VV_HK_DELETE, "Delete")
+ VV_DROPDOWN_OPTION(VV_HK_EXPOSE, "Show VV To Player")
+// VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRAITS, "Modify Traits")
+//This proc is only called if everything topic-wise is verified. The only verifications that should happen here is things like permission checks!
+//href_list is a reference, modifying it in these procs WILL change the rest of the proc in topic.dm of admin/view_variables!
+//This proc is for "high level" actions like admin heal/set species/etc/etc. The low level debugging things should go in admin/view_variables/topic_basic.dm incase this runtimes.
+/datum/proc/vv_do_topic(list/href_list)
+ if(!usr || !usr.client || !usr.client.holder || !check_rights(NONE))
+ return FALSE //This is VV, not to be called by anything else.
+// if(href_list[VV_HK_MODIFY_TRAITS])
+// usr.client.holder.modify_traits(src)
+ return TRUE
+
+/datum/proc/vv_get_header()
+ . = list()
+ if(("name" in vars) && !isatom(src))
+ . += "[vars["name"]] "
/datum/proc/on_reagent_change(changetype)
return
-
-
-/client/proc/debug_variables(datum/D in world)
- set category = "Debug"
- set name = "View Variables"
- //set src in world
- var/static/cookieoffset = rand(1, 9999) //to force cookies to reset after the round.
-
- if(!usr.client || !usr.client.holder) //The usr vs src abuse in this proc is intentional and must not be changed
- to_chat(usr, "You need to be an administrator to access this. ")
- return
-
- if(!D)
- return
-
- var/islist = islist(D)
- if (!islist && !istype(D))
- return
-
- var/title = ""
- var/refid = "\ref[D]"
- var/icon/sprite
- var/hash
-
- var/type = /list
- if (!islist)
- type = D.type
-
- if(istype(D, /atom))
- var/atom/AT = D
- if(AT.icon && AT.icon_state)
- sprite = new /icon(AT.icon, AT.icon_state)
- hash = md5(AT.icon)
- hash = md5(hash + AT.icon_state)
- src << browse_rsc(sprite, "vv[hash].png")
-
- title = "[D] ([REF(D)]) = [type]"
- var/formatted_type = replacetext("[type]", "/", "/")
-
- var/sprite_text
- if(sprite)
- sprite_text = ""
- var/list/atomsnowflake = list()
-
- if(istype(D, /atom))
- var/atom/A = D
- if(isliving(A))
- atomsnowflake += "[D] "
- atomsnowflake += "<< [dir2text(A.dir) || A.dir] >> "
- var/mob/living/M = A
- atomsnowflake += {"
- [M.ckey || "No ckey"] / [M.real_name || "No real name"]
-
- BRUTE:[M.getBruteLoss()]
- FIRE:[M.getFireLoss()]
- TOXIN:[M.getToxLoss()]
- OXY:[M.getOxyLoss()]
- CLONE:[M.getCloneLoss()]
- BRAIN:[M.getOrganLoss(ORGAN_SLOT_BRAIN)]
- STAMINA:[M.getStaminaLoss()]
- "}
- if(GLOB.Debug2)
- atomsnowflake += {"
- HEART:[M.getOrganLoss(ORGAN_SLOT_HEART)]
- LIVER:[M.getOrganLoss(ORGAN_SLOT_LIVER)]
- LUNGS:[M.getOrganLoss(ORGAN_SLOT_LUNGS)]
- EYES:[M.getOrganLoss(ORGAN_SLOT_EYES)]
- EARS:[M.getOrganLoss(ORGAN_SLOT_EARS)]
- STOMACH:[M.getOrganLoss(ORGAN_SLOT_STOMACH)]
- TONGUE:[M.getOrganLoss(ORGAN_SLOT_TONGUE)]
- APPENDIX:[M.getOrganLoss(ORGAN_SLOT_APPENDIX)]
- "}
- atomsnowflake += {"
-
- "}
- else
- atomsnowflake += "[D] "
- atomsnowflake += "<< [dir2text(A.dir) || A.dir] >> "
- else if("name" in D.vars)
- atomsnowflake += "[D] "
- else
- atomsnowflake += "[formatted_type] "
- formatted_type = null
-
- var/marked
- if(holder && holder.marked_datum && holder.marked_datum == D)
- marked = VV_MSG_MARKED
- var/varedited_line = ""
- if(!islist && (D.datum_flags & DF_VAR_EDITED))
- varedited_line = VV_MSG_EDITED
- var/deleted_line
- if(!islist && D.gc_destroyed)
- deleted_line = VV_MSG_DELETED
-
- var/list/dropdownoptions = list()
- if (islist)
- dropdownoptions = list(
- "---",
- "Add Item" = "?_src_=vars;[HrefToken()];listadd=[refid]",
- "Remove Nulls" = "?_src_=vars;[HrefToken()];listnulls=[refid]",
- "Remove Dupes" = "?_src_=vars;[HrefToken()];listdupes=[refid]",
- "Set len" = "?_src_=vars;[HrefToken()];listlen=[refid]",
- "Shuffle" = "?_src_=vars;[HrefToken()];listshuffle=[refid]",
- "Show VV To Player" = "?_src_=vars;[HrefToken()];expose=[refid]"
- )
- else
- dropdownoptions = D.vv_get_dropdown()
- var/list/dropdownoptions_html = list()
-
- for (var/name in dropdownoptions)
- var/link = dropdownoptions[name]
- if (link)
- dropdownoptions_html += "[name] "
- else
- dropdownoptions_html += "[name] "
-
- var/list/names = list()
- if (!islist)
- for (var/V in D.vars)
- names += V
- sleep(1)//For some reason, without this sleep, VVing will cause client to disconnect on certain objects.
-
- var/list/variable_html = list()
- if (islist)
- var/list/L = D
- for (var/i in 1 to L.len)
- var/key = L[i]
- var/value
- if (IS_NORMAL_LIST(L) && !isnum(key))
- value = L[key]
- variable_html += debug_variable(i, value, 0, D)
- else
-
- names = sortList(names)
- for (var/V in names)
- if(D.can_vv_get(V))
- variable_html += D.vv_get_var(V)
-
- var/html = {"
-
-
-
- [title]
-
-
-
-
-
-
-
-
-
-
-
- [sprite_text]
-
- [atomsnowflake.Join()]
-
-
-
-
-
- [formatted_type]
- [marked]
- [varedited_line]
- [deleted_line]
-
-
-
-
-
-
-
-
-
-
- E - Edit, tries to determine the variable type by itself.
- C - Change, asks you for the var type first.
- M - Mass modify: changes this variable for all objects of this type.
-
-
-
-
-
- [variable_html.Join()]
-
-
-
-
-"}
- src << browse(html, "window=variables[refid];size=475x650")
-
-
-/client/proc/vv_update_display(datum/D, span, content)
- src << output("[span]:[content]", "variables\ref[D].browser:replace_span")
-
-
-#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing )
-/proc/debug_variable(name, value, level, datum/DA = null, sanitize = TRUE)
- var/header
- if(DA)
- if (islist(DA))
- var/index = name
- if (value)
- name = DA[name] //name is really the index until this line
- else
- value = DA[name]
- header = "(E ) (C ) (- ) "
- else
- header = " (E ) (C ) (M ) "
- else
- header = " "
-
- var/item
- if (isnull(value))
- item = "[VV_HTML_ENCODE(name)] = null "
-
- else if (istext(value))
- item = "[VV_HTML_ENCODE(name)] = \"[VV_HTML_ENCODE(value)]\" "
-
- else if (isicon(value))
- #ifdef VARSICON
- var/icon/I = new/icon(value)
- var/rnd = rand(1,10000)
- var/rname = "tmp\ref[I][rnd].png"
- usr << browse_rsc(I, rname)
- item = "[VV_HTML_ENCODE(name)] = ([value] ) "
- #else
- item = "[VV_HTML_ENCODE(name)] = /icon ([value] )"
- #endif
-
- else if (isfile(value))
- item = "[VV_HTML_ENCODE(name)] = '[value]' "
-
- else if (istype(value, /datum))
- var/datum/D = value
- if ("[D]" != "[D.type]") //if the thing as a name var, lets use it.
- item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D] [D.type]"
- else
- item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D.type]"
-
- else if (islist(value))
- var/list/L = value
- var/list/items = list()
-
- if (L.len > 0 && !(name == "underlays" || name == "overlays" || L.len > (IS_NORMAL_LIST(L) ? 50 : 150)))
- for (var/i in 1 to L.len)
- var/key = L[i]
- var/val
- if (IS_NORMAL_LIST(L) && !isnum(key))
- val = L[key]
- if (isnull(val)) // we still want to display non-null false values, such as 0 or ""
- val = key
- key = i
-
- items += debug_variable(key, val, level + 1, sanitize = sanitize)
-
- item = "[VV_HTML_ENCODE(name)] = /list ([L.len]) "
- else
- item = "[VV_HTML_ENCODE(name)] = /list ([L.len]) "
-
- else if (name in GLOB.bitfields)
- var/list/flags = list()
- for (var/i in GLOB.bitfields[name])
- if (value & GLOB.bitfields[name][i])
- flags += i
- item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]"
- else
- item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)] "
-
- return "[header][item] "
-
-#undef VV_HTML_ENCODE
-
-/client/proc/view_var_Topic(href, href_list, hsrc)
- if( (usr.client != src) || !src.holder || !holder.CheckAdminHref(href, href_list))
- return
- if(href_list["Vars"])
- debug_variables(locate(href_list["Vars"]))
-
- else if(href_list["datumrefresh"])
- var/datum/DAT = locate(href_list["datumrefresh"])
- if(!DAT) //can't be an istype() because /client etc aren't datums
- return
- src.debug_variables(DAT)
-
- else if(href_list["mob_player_panel"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["mob_player_panel"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- src.holder.show_player_panel(M)
-
- else if(href_list["godmode"])
- if(!check_rights(R_ADMIN))
- return
-
- var/mob/M = locate(href_list["godmode"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- src.cmd_admin_godmode(M)
-
- else if(href_list["mark_object"])
- if(!check_rights(NONE))
- return
-
- var/datum/D = locate(href_list["mark_object"])
- if(!istype(D))
- to_chat(usr, "This can only be done to instances of type /datum")
- return
-
- if(holder.marked_datum)
- vv_update_display(holder.marked_datum, "marked", "")
- holder.marked_datum = D
- vv_update_display(D, "marked", VV_MSG_MARKED)
-
- else if(href_list["proc_call"])
- if(!check_rights(NONE))
- return
-
- var/T = locate(href_list["proc_call"])
-
- if(T)
- callproc_datum(T)
-
- else if(href_list["delete"])
- if(!check_rights(R_DEBUG, 0))
- return
-
- var/datum/D = locate(href_list["delete"])
- if(!istype(D))
- to_chat(usr, "Unable to locate item!")
- admin_delete(D)
- if (isturf(D)) // show the turf that took its place
- debug_variables(D)
-
- else if(href_list["osay"])
- if(!check_rights(R_FUN, 0))
- return
- usr.client.object_say(locate(href_list["osay"]))
-
- else if(href_list["regenerateicons"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["regenerateicons"]) in GLOB.mob_list
- if(!ismob(M))
- to_chat(usr, "This can only be done to instances of type /mob")
- return
- M.regenerate_icons()
- else if(href_list["expose"])
- if(!check_rights(R_ADMIN, FALSE))
- return
- var/thing = locate(href_list["expose"])
- if (!thing)
- return
- var/value = vv_get_value(VV_CLIENT)
- if (value["class"] != VV_CLIENT)
- return
- var/client/C = value["value"]
- if (!C)
- return
- var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anything nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No")
- if (prompt != "Yes" || !usr.client)
- return
- message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window ")
- log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [thing]")
- to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window")
- C.debug_variables(thing)
-
-
-//Needs +VAREDIT past this point
-
- else if(check_rights(R_VAREDIT))
-
-
- //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
-
- if(href_list["rename"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["rename"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- var/new_name = stripped_input(usr,"What would you like to name this mob?","Input a name",M.real_name,MAX_NAME_LEN)
- if( !new_name || !M )
- return
-
- message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].")
- M.fully_replace_character_name(M.real_name,new_name)
- vv_update_display(M, "name", new_name)
- vv_update_display(M, "real_name", M.real_name || "No real name")
-
- else if(href_list["varnameedit"] && href_list["datumedit"])
- if(!check_rights(NONE))
- return
-
- var/datum/D = locate(href_list["datumedit"])
- if(!istype(D, /datum))
- to_chat(usr, "This can only be used on datums")
- return
-
- if (!modify_variables(D, href_list["varnameedit"], 1))
- return
- switch(href_list["varnameedit"])
- if("name")
- vv_update_display(D, "name", "[D]")
- if("dir")
- if(isatom(D))
- var/dir = D.vars["dir"]
- vv_update_display(D, "dir", dir2text(dir) || dir)
- if("ckey")
- if(isliving(D))
- vv_update_display(D, "ckey", D.vars["ckey"] || "No ckey")
- if("real_name")
- if(isliving(D))
- vv_update_display(D, "real_name", D.vars["real_name"] || "No real name")
-
- else if(href_list["varnamechange"] && href_list["datumchange"])
- if(!check_rights(NONE))
- return
-
- var/D = locate(href_list["datumchange"])
- if(!istype(D, /datum))
- to_chat(usr, "This can only be used on datums")
- return
-
- modify_variables(D, href_list["varnamechange"], 0)
-
- else if(href_list["varnamemass"] && href_list["datummass"])
- if(!check_rights(NONE))
- return
-
- var/datum/D = locate(href_list["datummass"])
- if(!istype(D))
- to_chat(usr, "This can only be used on instances of type /datum")
- return
-
- cmd_mass_modify_object_variables(D, href_list["varnamemass"])
-
- else if(href_list["listedit"] && href_list["index"])
- var/index = text2num(href_list["index"])
- if (!index)
- return
-
- var/list/L = locate(href_list["listedit"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
-
- mod_list(L, null, "list", "contents", index, autodetect_class = TRUE)
-
- else if(href_list["listchange"] && href_list["index"])
- var/index = text2num(href_list["index"])
- if (!index)
- return
-
- var/list/L = locate(href_list["listchange"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
-
- mod_list(L, null, "list", "contents", index, autodetect_class = FALSE)
-
- else if(href_list["listremove"] && href_list["index"])
- var/index = text2num(href_list["index"])
- if (!index)
- return
-
- var/list/L = locate(href_list["listremove"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
-
- var/variable = L[index]
- var/prompt = alert("Do you want to remove item number [index] from list?", "Confirm", "Yes", "No")
- if (prompt != "Yes")
- return
- L.Cut(index, index+1)
- log_world("### ListVarEdit by [src]: /list's contents: REMOVED=[html_encode("[variable]")]")
- log_admin("[key_name(src)] modified list's contents: REMOVED=[variable]")
- message_admins("[key_name_admin(src)] modified list's contents: REMOVED=[variable]")
-
- else if(href_list["listadd"])
- var/list/L = locate(href_list["listadd"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
-
- mod_list_add(L, null, "list", "contents")
-
- else if(href_list["listdupes"])
- var/list/L = locate(href_list["listdupes"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
-
- uniqueList_inplace(L)
- log_world("### ListVarEdit by [src]: /list contents: CLEAR DUPES")
- log_admin("[key_name(src)] modified list's contents: CLEAR DUPES")
- message_admins("[key_name_admin(src)] modified list's contents: CLEAR DUPES")
-
- else if(href_list["listnulls"])
- var/list/L = locate(href_list["listnulls"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
-
- listclearnulls(L)
- log_world("### ListVarEdit by [src]: /list contents: CLEAR NULLS")
- log_admin("[key_name(src)] modified list's contents: CLEAR NULLS")
- message_admins("[key_name_admin(src)] modified list's contents: CLEAR NULLS")
-
- else if(href_list["listlen"])
- var/list/L = locate(href_list["listlen"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
- var/value = vv_get_value(VV_NUM)
- if (value["class"] != VV_NUM)
- return
-
- L.len = value["value"]
- log_world("### ListVarEdit by [src]: /list len: [L.len]")
- log_admin("[key_name(src)] modified list's len: [L.len]")
- message_admins("[key_name_admin(src)] modified list's len: [L.len]")
-
- else if(href_list["listshuffle"])
- var/list/L = locate(href_list["listshuffle"])
- if (!istype(L))
- to_chat(usr, "This can only be used on instances of type /list")
- return
-
- shuffle_inplace(L)
- log_world("### ListVarEdit by [src]: /list contents: SHUFFLE")
- log_admin("[key_name(src)] modified list's contents: SHUFFLE")
- message_admins("[key_name_admin(src)] modified list's contents: SHUFFLE")
-
- else if(href_list["give_spell"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["give_spell"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- src.give_spell(M)
-
- else if(href_list["remove_spell"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["remove_spell"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- remove_spell(M)
-
- else if(href_list["give_disease"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["give_disease"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- src.give_disease(M)
-
- else if(href_list["gib"])
- if(!check_rights(R_FUN))
- return
-
- var/mob/M = locate(href_list["gib"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- src.cmd_admin_gib(M)
-
- else if(href_list["build_mode"])
- if(!check_rights(R_BUILDMODE))
- return
-
- var/mob/M = locate(href_list["build_mode"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- togglebuildmode(M)
-
- else if(href_list["drop_everything"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["drop_everything"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- if(usr.client)
- usr.client.cmd_admin_drop_everything(M)
-
- else if(href_list["direct_control"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["direct_control"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
-
- if(usr.client)
- usr.client.cmd_assume_direct_control(M)
-
- else if(href_list["offer_control"])
- if(!check_rights(NONE))
- return
-
- var/mob/M = locate(href_list["offer_control"]) in GLOB.mob_list
- if(!istype(M))
- to_chat(usr, "This can only be used on instances of type /mob")
- return
- offer_control(M)
-
- else if (href_list["modarmor"])
- if(!check_rights(NONE))
- return
-
- var/obj/O = locate(href_list["modarmor"])
- if(!istype(O))
- to_chat(usr, "This can only be used on instances of type /obj")
- return
-
- var/list/pickerlist = list()
- var/list/armorlist = O.armor.getList()
-
- for (var/i in armorlist)
- pickerlist += list(list("value" = armorlist[i], "name" = i))
-
- var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [O]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, inputtype = "text", values = pickerlist)
-
- if (islist(result))
- if (result["button"] == 2) // If the user pressed the cancel button
- return
- // text2num conveniently returns a null on invalid values
- O.armor = O.armor.setRating(melee = text2num(result["values"]["melee"]),\
- bullet = text2num(result["values"]["bullet"]),\
- laser = text2num(result["values"]["laser"]),\
- energy = text2num(result["values"]["energy"]),\
- bomb = text2num(result["values"]["bomb"]),\
- bio = text2num(result["values"]["bio"]),\
- rad = text2num(result["values"]["rad"]),\
- fire = text2num(result["values"]["fire"]),\
- acid = text2num(result["values"]["acid"]))
- log_admin("[key_name(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]")
- message_admins("[key_name_admin(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid] ")
- else
- return
-
- else if(href_list["delall"])
- if(!check_rights(R_DEBUG|R_SERVER))
- return
-
- var/obj/O = locate(href_list["delall"])
- if(!isobj(O))
- to_chat(usr, "This can only be used on instances of type /obj")
- return
-
- var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel")
- if(action_type == "Cancel" || !action_type)
- return
-
- if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes")
- return
-
- if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes")
- return
-
- var/O_type = O.type
- switch(action_type)
- if("Strict type")
- var/i = 0
- for(var/obj/Obj in world)
- if(Obj.type == O_type)
- i++
- qdel(Obj)
- CHECK_TICK
- if(!i)
- to_chat(usr, "No objects of this type exist")
- return
- log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")
- message_admins("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")
- if("Type and subtypes")
- var/i = 0
- for(var/obj/Obj in world)
- if(istype(Obj,O_type))
- i++
- qdel(Obj)
- CHECK_TICK
- if(!i)
- to_chat(usr, "No objects of this type exist")
- return
- log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
- message_admins("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
-
- else if(href_list["addreagent"])
- if(!check_rights(NONE))
- return
-
- var/atom/A = locate(href_list["addreagent"])
-
- if(!A.reagents)
- var/amount = input(usr, "Specify the reagent size of [A]", "Set Reagent Size", 50) as num
- if(amount)
- A.create_reagents(amount)
-
- if(A.reagents)
- var/chosen_id = choose_reagent_id(usr)
- if(chosen_id)
- var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num
- if(amount)
- A.reagents.add_reagent(chosen_id, amount)
- log_admin("[key_name(usr)] has added [amount] units of [chosen_id] to \the [A]")
- message_admins("[key_name(usr)] has added [amount] units of [chosen_id] to \the [A] ")
-
- else if(href_list["explode"])
- if(!check_rights(R_FUN))
- return
-
- var/atom/A = locate(href_list["explode"])
- if(!isobj(A) && !ismob(A) && !isturf(A))
- to_chat(usr, "This can only be done to instances of type /obj, /mob and /turf")
- return
-
- src.cmd_admin_explosion(A)
-
- else if(href_list["emp"])
- if(!check_rights(R_FUN))
- return
-
- var/atom/A = locate(href_list["emp"])
- if(!isobj(A) && !ismob(A) && !isturf(A))
- to_chat(usr, "This can only be done to instances of type /obj, /mob and /turf")
- return
-
- src.cmd_admin_emp(A)
-
- else if(href_list["modtransform"])
- if(!check_rights(R_DEBUG))
- return
-
- var/atom/A = locate(href_list["modtransform"])
- if(!istype(A))
- to_chat(usr, "This can only be done to atoms.")
- return
-
- var/result = input(usr, "Choose the transformation to apply","Transform Mod") as null|anything in list("Scale","Translate","Rotate")
- var/matrix/M = A.transform
- switch(result)
- if("Scale")
- var/x = input(usr, "Choose x mod","Transform Mod") as null|num
- var/y = input(usr, "Choose y mod","Transform Mod") as null|num
- if(!isnull(x) && !isnull(y))
- A.transform = M.Scale(x,y)
- if("Translate")
- var/x = input(usr, "Choose x mod","Transform Mod") as null|num
- var/y = input(usr, "Choose y mod","Transform Mod") as null|num
- if(!isnull(x) && !isnull(y))
- A.transform = M.Translate(x,y)
- if("Rotate")
- var/angle = input(usr, "Choose angle to rotate","Transform Mod") as null|num
- if(!isnull(angle))
- A.transform = M.Turn(angle)
-
- else if(href_list["rotatedatum"])
- if(!check_rights(NONE))
- return
-
- var/atom/A = locate(href_list["rotatedatum"])
- if(!istype(A))
- to_chat(usr, "This can only be done to instances of type /atom")
- return
-
- switch(href_list["rotatedir"])
- if("right")
- A.setDir(turn(A.dir, -45))
- if("left")
- A.setDir(turn(A.dir, 45))
- vv_update_display(A, "dir", dir2text(A.dir))
-
- else if(href_list["editorgans"])
- if(!check_rights(NONE))
- return
-
- var/mob/living/carbon/C = locate(href_list["editorgans"]) in GLOB.mob_list
- if(!istype(C))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
- return
-
- manipulate_organs(C)
-
- else if(href_list["givemartialart"])
- if(!check_rights(NONE))
- return
-
- var/mob/living/carbon/C = locate(href_list["givemartialart"]) in GLOB.carbon_list
- if(!istype(C))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
- return
-
- var/list/artpaths = subtypesof(/datum/martial_art)
- var/list/artnames = list()
- for(var/i in artpaths)
- var/datum/martial_art/M = i
- artnames[initial(M.name)] = M
-
- var/result = input(usr, "Choose the martial art to teach","JUDO CHOP") as null|anything in artnames
- if(!usr)
- return
- if(QDELETED(C))
- to_chat(usr, "Mob doesn't exist anymore")
- return
-
- if(result)
- var/chosenart = artnames[result]
- var/datum/martial_art/MA = new chosenart
- MA.teach(C)
-
- else if(href_list["givetrauma"])
- if(!check_rights(NONE))
- return
-
- var/mob/living/carbon/C = locate(href_list["givetrauma"]) in GLOB.mob_list
- if(!istype(C))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
- return
-
- var/list/traumas = subtypesof(/datum/brain_trauma)
- var/result = input(usr, "Choose the brain trauma to apply","Traumatize") as null|anything in traumas
- if(!usr)
- return
- if(QDELETED(C))
- to_chat(usr, "Mob doesn't exist anymore")
- return
-
- if(result)
- C.gain_trauma(result)
-
- else if(href_list["curetraumas"])
- if(!check_rights(NONE))
- return
-
- var/mob/living/carbon/C = locate(href_list["curetraumas"]) in GLOB.mob_list
- if(!istype(C))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
- return
-
- C.cure_all_traumas(TRAUMA_RESILIENCE_ABSOLUTE)
-
- else if(href_list["hallucinate"])
- if(!check_rights(NONE))
- return
-
- var/mob/living/carbon/C = locate(href_list["hallucinate"]) in GLOB.mob_list
- if(!istype(C))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
- return
-
- var/list/hallucinations = subtypesof(/datum/hallucination)
- var/result = input(usr, "Choose the hallucination to apply","Send Hallucination") as null|anything in hallucinations
- if(!usr)
- return
- if(QDELETED(C))
- to_chat(usr, "Mob doesn't exist anymore")
- return
-
- if(result)
- new result(C, TRUE)
-
- else if(href_list["makehuman"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"]) in GLOB.mob_list
- if(!istype(Mo))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/monkey")
- return
-
- if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
- return
- if(!Mo)
- to_chat(usr, "Mob doesn't exist anymore")
- return
- holder.Topic(href, list("humanone"=href_list["makehuman"]))
-
- else if(href_list["makemonkey"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
- return
-
- if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
- return
- if(!H)
- to_chat(usr, "Mob doesn't exist anymore")
- return
- holder.Topic(href, list("monkeyone"=href_list["makemonkey"]))
-
- else if(href_list["makerobot"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/human/H = locate(href_list["makerobot"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
- return
-
- if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
- return
- if(!H)
- to_chat(usr, "Mob doesn't exist anymore")
- return
- holder.Topic(href, list("makerobot"=href_list["makerobot"]))
-
- else if(href_list["makealien"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/human/H = locate(href_list["makealien"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
- return
-
- if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
- return
- if(!H)
- to_chat(usr, "Mob doesn't exist anymore")
- return
- holder.Topic(href, list("makealien"=href_list["makealien"]))
-
- else if(href_list["makeslime"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/human/H = locate(href_list["makeslime"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
- return
-
- if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
- return
- if(!H)
- to_chat(usr, "Mob doesn't exist anymore")
- return
- holder.Topic(href, list("makeslime"=href_list["makeslime"]))
-
- else if(href_list["makeai"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/H = locate(href_list["makeai"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
- return
-
- if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
- return
- if(!H)
- to_chat(usr, "Mob doesn't exist anymore")
- return
- holder.Topic(href, list("makeai"=href_list["makeai"]))
-
- else if(href_list["setspecies"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/human/H = locate(href_list["setspecies"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
- return
-
- var/result = input(usr, "Please choose a new species","Species") as null|anything in GLOB.species_list
-
- if(!H)
- to_chat(usr, "Mob doesn't exist anymore")
- return
-
- if(result)
- var/newtype = GLOB.species_list[result]
- admin_ticket_log("[key_name_admin(usr)] has modified the bodyparts of [H] to [result]")
- H.set_species(newtype)
-
- else if(href_list["editbodypart"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/C = locate(href_list["editbodypart"]) in GLOB.mob_list
- if(!istype(C))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
- return
-
- var/edit_action = input(usr, "What would you like to do?","Modify Body Part") as null|anything in list("add","remove", "augment")
- if(!edit_action)
- return
- var/list/limb_list = list(BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
- if(edit_action == "augment")
- limb_list += BODY_ZONE_CHEST
- var/result = input(usr, "Please choose which body part to [edit_action]","[capitalize(edit_action)] Body Part") as null|anything in limb_list
-
- if(!C)
- to_chat(usr, "Mob doesn't exist anymore")
- return
-
- if(result)
- var/obj/item/bodypart/BP = C.get_bodypart(result)
- switch(edit_action)
- if("remove")
- if(BP)
- BP.drop_limb()
- else
- to_chat(usr, "[C] doesn't have such bodypart.")
- if("add")
- if(BP)
- to_chat(usr, "[C] already has such bodypart.")
- else
- if(!C.regenerate_limb(result))
- to_chat(usr, "[C] cannot have such bodypart.")
- if("augment")
- if(ishuman(C))
- if(BP)
- BP.change_bodypart_status(BODYPART_ROBOTIC, TRUE, TRUE)
- else
- to_chat(usr, "[C] doesn't have such bodypart.")
- else
- to_chat(usr, "Only humans can be augmented.")
- admin_ticket_log("[key_name_admin(usr)] has modified the bodyparts of [C]")
-
-
- else if(href_list["purrbation"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/human/H = locate(href_list["purrbation"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
- return
- if(!ishumanbasic(H))
- to_chat(usr, "This can only be done to the basic human species at the moment.")
- return
-
- if(!H)
- to_chat(usr, "Mob doesn't exist anymore")
- return
-
- var/success = purrbation_toggle(H)
- if(success)
- to_chat(usr, "Put [H] on purrbation.")
- log_admin("[key_name(usr)] has put [key_name(H)] on purrbation.")
- var/msg = "[key_name_admin(usr)] has put [key_name(H)] on purrbation. "
- message_admins(msg)
- admin_ticket_log(H, msg)
-
- else
- to_chat(usr, "Removed [H] from purrbation.")
- log_admin("[key_name(usr)] has removed [key_name(H)] from purrbation.")
- var/msg = "[key_name_admin(usr)] has removed [key_name(H)] from purrbation. "
- message_admins(msg)
- admin_ticket_log(H, msg)
-
- else if(href_list["adjustDamage"] && href_list["mobToDamage"])
- if(!check_rights(NONE))
- return
-
- var/mob/living/L = locate(href_list["mobToDamage"]) in GLOB.mob_list
- if(!istype(L))
- return
-
- var/Text = href_list["adjustDamage"]
-
- var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num
-
- if(!L)
- to_chat(usr, "Mob doesn't exist anymore")
- return
-
- var/newamt
- switch(Text)
- if("brute")
- L.adjustBruteLoss(amount)
- newamt = L.getBruteLoss()
- if("fire")
- L.adjustFireLoss(amount)
- newamt = L.getFireLoss()
- if("toxin")
- L.adjustToxLoss(amount)
- newamt = L.getToxLoss()
- if("oxygen")
- L.adjustOxyLoss(amount)
- newamt = L.getOxyLoss()
- if("brain")
- L.adjustOrganLoss(ORGAN_SLOT_BRAIN, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_BRAIN)
- if("clone")
- L.adjustCloneLoss(amount)
- newamt = L.getCloneLoss()
- if("stamina")
- L.adjustStaminaLoss(amount)
- newamt = L.getStaminaLoss()
- if("heart")
- L.adjustOrganLoss(ORGAN_SLOT_HEART, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_HEART)
- if("liver")
- L.adjustOrganLoss(ORGAN_SLOT_LIVER, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_LIVER)
- if("lungs")
- L.adjustOrganLoss(ORGAN_SLOT_LUNGS, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_LUNGS)
- if("eye_sight")
- L.adjustOrganLoss(ORGAN_SLOT_EYES, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_EYES)
- if("ears")
- L.adjustOrganLoss(ORGAN_SLOT_EARS, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_EARS)
- if("stomach")
- L.adjustOrganLoss(ORGAN_SLOT_STOMACH, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_STOMACH)
- if("tongue")
- L.adjustOrganLoss(ORGAN_SLOT_TONGUE, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_TONGUE)
- if("appendix")
- L.adjustOrganLoss(ORGAN_SLOT_APPENDIX, amount)
- newamt = L.getOrganLoss(ORGAN_SLOT_APPENDIX)
- else
- to_chat(usr, "You caused an error. DEBUG: Text:[Text] Mob:[L]")
- return
-
- if(amount != 0)
- log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ")
- var/msg = "[key_name(usr)] dealt [amount] amount of [Text] damage to [L] "
- message_admins("[msg] ")
- admin_ticket_log(L, msg)
- vv_update_display(L, Text, "[newamt]")
- else if(href_list["copyoutfit"])
- if(!check_rights(R_SPAWN))
- return
- var/mob/living/carbon/human/H = locate(href_list["copyoutfit"]) in GLOB.carbon_list
- if(istype(H))
- H.copy_outfit()
- else if(href_list["modquirks"])
- if(!check_rights(R_SPAWN))
- return
-
- var/mob/living/carbon/human/H = locate(href_list["modquirks"]) in GLOB.mob_list
- if(!istype(H))
- to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
- return
-
- var/list/options = list("Clear"="Clear")
- for(var/x in subtypesof(/datum/quirk))
- var/datum/quirk/T = x
- var/qname = initial(T.name)
- options[H.has_quirk(T) ? "[qname] (Remove)" : "[qname] (Add)"] = T
-
- var/result = input(usr, "Choose quirk to add/remove","Quirk Mod") as null|anything in options
- if(result)
- if(result == "Clear")
- for(var/datum/quirk/q in H.roundstart_quirks)
- H.remove_quirk(q.type)
- else
- var/T = options[result]
- if(H.has_quirk(T))
- H.remove_quirk(T)
- else
- H.add_quirk(T,TRUE)
diff --git a/code/datums/elements/ghost_role_eligibility.dm b/code/datums/elements/ghost_role_eligibility.dm
index 28567c579b..4e7884efe4 100644
--- a/code/datums/elements/ghost_role_eligibility.dm
+++ b/code/datums/elements/ghost_role_eligibility.dm
@@ -1,58 +1,54 @@
-/datum/element/ghost_role_eligibility
- element_flags = ELEMENT_DETACH
- var/list/timeouts = list()
- var/list/mob/eligible_mobs = list()
+GLOBAL_LIST_EMPTY(ghost_eligible_mobs)
-/datum/element/ghost_role_eligibility/Attach(datum/target,penalize = FALSE)
+GLOBAL_LIST_EMPTY(client_ghost_timeouts)
+
+/datum/element/ghost_role_eligibility
+ element_flags = ELEMENT_DETACH | ELEMENT_BESPOKE
+ id_arg_index = 2
+ var/penalizing = FALSE
+ var/free_ghost = FALSE
+
+/datum/element/ghost_role_eligibility/Attach(datum/target,free_ghosting = FALSE, penalize_on_ghost = FALSE)
. = ..()
if(!ismob(target))
return ELEMENT_INCOMPATIBLE
+ penalizing = penalize_on_ghost
+ free_ghost = free_ghosting
var/mob/M = target
- if(!(M in eligible_mobs))
- eligible_mobs += M
- if(penalize) //penalizing them from making a ghost role / midround antag comeback right away.
- var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES
- var/roundstart_quit_limit = CONFIG_GET(number/roundstart_suicide_time_limit) MINUTES
- if(world.time < roundstart_quit_limit) //add up the time difference to their antag rolling penalty if they quit before half a (ingame) hour even passed.
- penalty += roundstart_quit_limit - world.time
- if(penalty)
- penalty += world.realtime
- if(SSautotransfer.can_fire && SSautotransfer.maxvotes)
- var/maximumRoundEnd = SSautotransfer.starttime + SSautotransfer.voteinterval * SSautotransfer.maxvotes
- if(penalty - SSshuttle.realtimeofstart > maximumRoundEnd + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime)
- penalty = CANT_REENTER_ROUND
- if(!(M.ckey in timeouts))
- timeouts += M.ckey
- timeouts[M.ckey] = 0
- else if(timeouts[M.ckey] == CANT_REENTER_ROUND)
- return
- timeouts[M.ckey] = max(timeouts[M.ckey],penalty)
+ if(!(M in GLOB.ghost_eligible_mobs))
+ GLOB.ghost_eligible_mobs += M
+ RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/get_ghost_flags)
/datum/element/ghost_role_eligibility/Detach(mob/M)
. = ..()
- if(M in eligible_mobs)
- eligible_mobs -= M
+ if(M in GLOB.ghost_eligible_mobs)
+ GLOB.ghost_eligible_mobs -= M
+ UnregisterSignal(M, COMSIG_MOB_GHOSTIZE)
-/datum/element/ghost_role_eligibility/proc/get_all_ghost_role_eligible(silent = FALSE)
+/proc/get_all_ghost_role_eligible(silent = FALSE)
var/list/candidates = list()
- for(var/m in eligible_mobs)
+ for(var/m in GLOB.ghost_eligible_mobs)
var/mob/M = m
if(M.can_reenter_round(TRUE))
candidates += M
return candidates
/mob/proc/can_reenter_round(silent = FALSE)
- var/datum/element/ghost_role_eligibility/eli = SSdcs.GetElement(list(/datum/element/ghost_role_eligibility))
- return eli.can_reenter_round(src,silent)
-
-/datum/element/ghost_role_eligibility/proc/can_reenter_round(var/mob/M,silent = FALSE)
- if(!(M in eligible_mobs))
+ if(!(src in GLOB.ghost_eligible_mobs))
return FALSE
- if(!(M.ckey in timeouts))
+ if(!(ckey in GLOB.client_ghost_timeouts))
return TRUE
- var/timeout = timeouts[M.ckey]
+ var/timeout = GLOB.client_ghost_timeouts[ckey]
if(timeout != CANT_REENTER_ROUND && timeout <= world.realtime)
return TRUE
- if(!silent && M.client)
- to_chat(M, "You are unable to reenter the round[timeout != CANT_REENTER_ROUND ? " yet. Your ghost role blacklist will expire in [DisplayTimeText(timeout - world.realtime)]" : ""]. ")
+ if(!silent && client)
+ to_chat(src, "You are unable to reenter the round[timeout != CANT_REENTER_ROUND ? " yet. Your ghost role blacklist will expire in [DisplayTimeText(timeout - world.realtime)]" : ""]. ")
return FALSE
+
+/datum/element/ghost_role_eligibility/proc/get_ghost_flags()
+ . = 0
+ if(!penalizing)
+ . |= COMPONENT_DO_NOT_PENALIZE_GHOSTING
+ if(free_ghost)
+ . |= COMPONENT_FREE_GHOSTING
+ return .
diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm
index 3cd5367f65..a5c6e2725d 100644
--- a/code/datums/elements/mob_holder.dm
+++ b/code/datums/elements/mob_holder.dm
@@ -71,11 +71,12 @@
name = "bugged mob"
desc = "Yell at coderbrush."
icon = null
- alternate_worn_icon = 'icons/mob/animals_held.dmi'
+ mob_overlay_icon = 'icons/mob/animals_held.dmi'
righthand_file = 'icons/mob/animals_held_rh.dmi'
lefthand_file = 'icons/mob/animals_held_lh.dmi'
icon_state = ""
w_class = WEIGHT_CLASS_BULKY
+ dynamic_hair_suffix = ""
var/mob/living/held_mob
/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/target, worn_state, alt_worn, right_hand, left_hand, slots = NONE)
@@ -85,7 +86,7 @@
assimilate(target)
if(alt_worn)
- alternate_worn_icon = alt_worn
+ mob_overlay_icon = alt_worn
if(worn_state)
item_state = worn_state
icon_state = worn_state
@@ -162,6 +163,11 @@
L.visible_message("[held_mob] escapes from [L]! ", "[held_mob] escapes your grip! ")
release()
+/obj/item/clothing/head/mob_holder/mob_can_equip(mob/living/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
+ if(!ishuman(M)) //monkeys holding monkeys holding monkeys...
+ return FALSE
+ return ..()
+
/obj/item/clothing/head/mob_holder/assume_air(datum/gas_mixture/env)
var/atom/location = loc
if(!loc)
diff --git a/code/datums/elements/polychromic.dm b/code/datums/elements/polychromic.dm
new file mode 100644
index 0000000000..1c438c86c5
--- /dev/null
+++ b/code/datums/elements/polychromic.dm
@@ -0,0 +1,187 @@
+#define POLYCHROMIC_ALTCLICK (1<<0)
+#define POLYCHROMIC_ACTION (1<<1)
+#define POLYCHROMIC_NO_HELD (1<<2)
+#define POLYCHROMIC_NO_WORN (1<<3)
+
+/datum/element/polychromic
+ element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
+ id_arg_index = 3
+ var/overlays_states //A list or a number of states. In the latter case, the atom icon_state/item_state will be used followed by a number.
+ var/list/colors_by_atom = list() //list of color strings or mutable appearances, depending on the above variable.
+ var/icon_file
+ var/worn_file //used in place of items' held or mob overlay icons if present.
+ var/list/overlays_names //wrap numbers into text strings please.
+ var/list/actions_by_atom = list()
+ var/poly_flags
+ var/static/list/suits_with_helmet_typecache = typecacheof(list(/obj/item/clothing/suit/hooded, /obj/item/clothing/suit/space/hardsuit))
+ var/list/helmet_by_suit = list() //because poly winter coats exist.
+ var/list/suit_by_helmet = list() //Idem.
+
+/datum/element/polychromic/Attach(datum/target, list/colors, states, _flags = POLYCHROMIC_ACTION|POLYCHROMIC_NO_HELD, _icon, _worn, list/names = list("Primary", "Secondary", "Tertiary", "Quaternary", "Quinary", "Senary"))
+ . = ..()
+ var/make_appearances = islist(states)
+ var/states_len = make_appearances ? length(states) : states
+ var/names_len = length(names)
+ if(!states_len || !names_len || colors_by_atom[target] || !isatom(target))
+ return ELEMENT_INCOMPATIBLE
+ var/atom/A = target
+
+ overlays_states = states
+ icon_file = _icon
+ worn_file = _worn
+ poly_flags = _flags
+
+ var/mut_icon = icon_file || A.icon
+ var/list/L = list()
+ for(var/I in 1 to states_len)
+ var/col = LAZYACCESS(colors, I) || "#FFFFFF"
+ L += make_appearances ? mutable_appearance(mut_icon, overlays_states[I], color = col) : col
+ colors_by_atom[A] = L
+
+ RegisterSignal(A, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_overlays)
+
+ if(_flags & POLYCHROMIC_ALTCLICK)
+ RegisterSignal(A, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+ RegisterSignal(A, COMSIG_CLICK_ALT, .proc/set_color)
+
+ if(!overlays_names && names) //generate
+ overlays_names = names
+ var/diff = states_len - names_len
+ if(diff > 0)
+ for(var/i in 1 to diff)
+ overlays_names += "[names_len + i]°"
+ else if(diff < 0)
+ overlays_names.len += diff
+
+ if(isitem(A))
+ if(_flags & POLYCHROMIC_ACTION)
+ RegisterSignal(A, COMSIG_ITEM_EQUIPPED, .proc/grant_user_action)
+ RegisterSignal(A, COMSIG_ITEM_DROPPED, .proc/remove_user_action)
+ if(!(_flags & POLYCHROMIC_NO_WORN) || !(_flags & POLYCHROMIC_NO_HELD))
+ A.AddElement(/datum/element/update_icon_updates_onmob)
+ RegisterSignal(A, COMSIG_ITEM_WORN_OVERLAYS, .proc/apply_worn_overlays)
+ if(suits_with_helmet_typecache[A.type])
+ RegisterSignal(A, COMSIG_SUIT_MADE_HELMET, .proc/register_helmet)
+ else if(_flags & POLYCHROMIC_ACTION && ismob(A)) //in the event mob update icon procs are ever standarized.
+ var/datum/action/polychromic/P = new(A)
+ RegisterSignal(P, COMSIG_ACTION_TRIGGER, .proc/activate_action)
+ actions_by_atom[A] = P
+ P.Grant(A)
+
+ A.update_icon() //apply the overlays.
+
+/datum/element/polychromic/Detach(atom/A)
+ . = ..()
+ colors_by_atom -= A
+ var/datum/action/polychromic/P = actions_by_atom[A]
+ if(P)
+ actions_by_atom -= A
+ qdel(P)
+ UnregisterSignal(A, list(COMSIG_PARENT_EXAMINE, COMSIG_CLICK_ALT, COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED, COMSIG_ITEM_WORN_OVERLAYS, COMSIG_SUIT_MADE_HELMET))
+ if(isitem(A))
+ var/obj/item/clothing/head/H = helmet_by_suit[A]
+ if(H)
+ UnregisterSignal(H, list(COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_ITEM_WORN_OVERLAYS, COMSIG_PARENT_QDELETING))
+ helmet_by_suit -= A
+ suit_by_helmet -= H
+ colors_by_atom -= H
+ if(!QDELETED(H))
+ H.update_icon() //removing the overlays
+ if(!(poly_flags & POLYCHROMIC_NO_WORN) || !(poly_flags & POLYCHROMIC_NO_HELD))
+ A.RemoveElement(/datum/element/update_icon_updates_onmob)
+ if(!QDELETED(A) && ismob(A.loc))
+ var/mob/M = A.loc
+ if(!(poly_flags & POLYCHROMIC_NO_HELD) && M.is_holding(A))
+ M.update_inv_hands()
+ else if(!(poly_flags & POLYCHROMIC_NO_WORN))
+ M.regenerate_icons()
+ if(!QDELETED(A))
+ A.update_icon() //removing the overlays
+
+/datum/element/polychromic/proc/apply_overlays(atom/source, list/overlays)
+ var/list/L = colors_by_atom[source]
+ var/f_icon = icon_file || source.icon
+ if(isnum(overlays_states))
+ for(var/i in 1 to overlays_states)
+ overlays += mutable_appearance(f_icon, "[source.icon_state]-[i]", color = L[i])
+ else
+ overlays += colors_by_atom[source]
+
+/datum/element/polychromic/proc/apply_worn_overlays(obj/item/source, isinhands, icon, used_state, style_flags, list/overlays)
+ if(poly_flags & (isinhands ? POLYCHROMIC_NO_HELD : POLYCHROMIC_NO_WORN))
+ return
+ var/f_icon = worn_file || icon
+ var/list/L = colors_by_atom[source]
+
+ if(isnum(overlays_states))
+ for(var/i in 1 to overlays_states)
+ overlays += mutable_appearance(f_icon, "[used_state]-[i]", color = L[i])
+ else
+ for(var/i in 1 to length(overlays_states))
+ var/mutable_appearance/M = L[i]
+ overlays += mutable_appearance(f_icon, overlays_states[i], color = M.color)
+
+/datum/element/polychromic/proc/set_color(atom/source, mob/user)
+ var/choice = input(user,"Polychromic options", "Recolor [source]") as null|anything in overlays_names
+ if(!choice || QDELETED(source) || !user.canUseTopic(source, BE_CLOSE, NO_DEXTERY))
+ return
+ var/index = overlays_names.Find(choice)
+ var/list/L = colors_by_atom[source]
+ if(!L) // Ummmmmh.
+ return
+ var/mutable_appearance/M = L[index]
+ var/old_color = istype(M) ? M.color : M
+ var/ncolor = input(user, "Polychromic options", "Choose [choice] Color", old_color) as color|null
+ if(!ncolor || QDELETED(source) || !colors_by_atom[source] || !user.canUseTopic(source, BE_CLOSE, NO_DEXTERY))
+ return
+ ncolor = sanitize_hexcolor(ncolor, 6, TRUE, old_color)
+ if(istype(M))
+ M.color = ncolor
+ else
+ L[index] = ncolor
+
+ source.update_icon()
+ return TRUE
+
+/datum/element/polychromic/proc/grant_user_action(atom/source, mob/user, slot)
+ if(slot == SLOT_IN_BACKPACK || slot == SLOT_LEGCUFFED || slot == SLOT_HANDCUFFED || slot == SLOT_GENERC_DEXTROUS_STORAGE)
+ return
+ var/datum/action/polychromic/P = actions_by_atom[source]
+ if(!P)
+ P = new (source)
+ P.name = "Modify [source]'\s Colors"
+ actions_by_atom[source] = P
+ P.check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS
+ RegisterSignal(P, COMSIG_ACTION_TRIGGER, .proc/activate_action)
+ P.Grant(user)
+
+/datum/element/polychromic/proc/remove_user_action(atom/source, mob/user)
+ var/datum/action/polychromic/P = actions_by_atom[source]
+ P?.Remove(user)
+
+/datum/element/polychromic/proc/activate_action(datum/action/source, atom/target)
+ set_color(target, source.owner)
+
+/datum/element/polychromic/proc/on_examine(atom/source, mob/user, list/examine_list)
+ examine_list += "Alt-click to recolor it. "
+
+/datum/element/polychromic/proc/register_helmet(atom/source, obj/item/clothing/head/H)
+ suit_by_helmet[H] = source
+ helmet_by_suit[source] = H
+ colors_by_atom[H] = colors_by_atom[source]
+ RegisterSignal(H, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_overlays)
+ RegisterSignal(H, COMSIG_ITEM_WORN_OVERLAYS, .proc/apply_worn_overlays)
+ RegisterSignal(H, COMSIG_PARENT_QDELETING, .proc/unregister_helmet)
+
+/datum/element/polychromic/proc/unregister_helmet(atom/source)
+ var/obj/item/clothing/suit/S = suit_by_helmet[source]
+ suit_by_helmet -= source
+ helmet_by_suit -= S
+ colors_by_atom -= source
+
+/datum/action/polychromic
+ name = "Modify Polychromic Colors"
+ background_icon_state = "bg_polychromic"
+ use_target_appearance = TRUE
+ button_icon_state = null
+ target_appearance_matrix = list(0.8,0,0,0,0.8,0)
diff --git a/code/datums/elements/spellcasting.dm b/code/datums/elements/spellcasting.dm
new file mode 100644
index 0000000000..877bcdbcd3
--- /dev/null
+++ b/code/datums/elements/spellcasting.dm
@@ -0,0 +1,54 @@
+/datum/element/spellcasting //allows to cast certain spells or skip requirements.
+ element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
+ id_arg_index = 2
+ var/cast_flags
+ var/cast_slots
+ var/list/users_by_item = list()
+ var/list/stacked_spellcasting_by_user = list()
+
+/datum/element/spellcasting/Attach(datum/target, _flags, _slots)
+ . = ..()
+ if(isitem(target))
+ RegisterSignal(target, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
+ RegisterSignal(target, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ else if(ismob(target))
+ RegisterSignal(target, COMSIG_MOB_SPELL_CAN_CAST, .proc/on_cast)
+ stacked_spellcasting_by_user[target]++
+ else
+ return ELEMENT_INCOMPATIBLE
+ cast_flags = _flags
+ cast_slots = _slots
+
+/datum/element/spellcasting/Detach(datum/target)
+ . = ..()
+ UnregisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED, COMSIG_MOB_SPELL_CAN_CAST))
+ if(users_by_item[target])
+ var/mob/user = users_by_item[target]
+ stacked_spellcasting_by_user[user]--
+ if(!stacked_spellcasting_by_user[user])
+ stacked_spellcasting_by_user -= user
+ UnregisterSignal(user, COMSIG_MOB_SPELL_CAN_CAST)
+ else if(ismob(target))
+ stacked_spellcasting_by_user[target]--
+ if(!stacked_spellcasting_by_user[target])
+ stacked_spellcasting_by_user -= target
+
+/datum/element/spellcasting/proc/on_equip(datum/source, mob/equipper, slot)
+ if(!(cast_slots & slotdefine2slotbit(slot)))
+ return
+ users_by_item[source] = equipper
+ if(!stacked_spellcasting_by_user[equipper])
+ RegisterSignal(equipper, COMSIG_MOB_SPELL_CAN_CAST, .proc/on_cast)
+ stacked_spellcasting_by_user[equipper]++
+
+/datum/element/spellcasting/proc/on_drop(datum/source, mob/user)
+ if(!users_by_item[source])
+ return
+ users_by_item -= source
+ stacked_spellcasting_by_user[user]--
+ if(!stacked_spellcasting_by_user[user])
+ stacked_spellcasting_by_user -= user
+ UnregisterSignal(user, COMSIG_MOB_SPELL_CAN_CAST)
+
+/datum/element/spellcasting/proc/on_cast(mob/caster, obj/effect/proc_holder/spell)
+ return cast_flags
diff --git a/code/datums/elements/update_icon_updates_onmob.dm b/code/datums/elements/update_icon_updates_onmob.dm
index ca0e8b1641..5c71547f62 100644
--- a/code/datums/elements/update_icon_updates_onmob.dm
+++ b/code/datums/elements/update_icon_updates_onmob.dm
@@ -5,7 +5,7 @@
. = ..()
if(!istype(target, /obj/item))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, .proc/update_onmob)
+ RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, .proc/update_onmob, override = TRUE)
/datum/element/update_icon_updates_onmob/proc/update_onmob(obj/item/target)
if(ismob(target.loc))
diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index 6b0981665d..c46a03a986 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -128,7 +128,7 @@
// Can most things breathe?
if(trace_gases)
continue
- if(A_gases[/datum/gas/oxygen] >= 16)
+ if(A_gases[/datum/gas/oxygen] <= 16)
continue
if(A_gases[/datum/gas/plasma])
continue
diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm
index 49942976ce..bafb6fbf0e 100644
--- a/code/datums/looping_sounds/_looping_sound.dm
+++ b/code/datums/looping_sounds/_looping_sound.dm
@@ -73,7 +73,7 @@
var/list/atoms_cache = output_atoms
var/sound/S = sound(soundfile)
if(direct)
- S.channel = open_sound_channel()
+ S.channel = SSsounds.random_available_channel()
S.volume = volume
for(var/i in 1 to atoms_cache.len)
var/atom/thing = atoms_cache[i]
diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm
index 7b7975bedb..d8a888871e 100644
--- a/code/datums/martial/_martial.dm
+++ b/code/datums/martial/_martial.dm
@@ -35,6 +35,17 @@
current_target = new_target
streak = ""
+/datum/martial_art/proc/damage_roll(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ //Here we roll for our damage to be added into the damage var in the various attack procs. This is changed depending on whether we are in combat mode, lying down, or if our target is in combat mode.
+ var/damage = rand(A.dna.species.punchdamagelow, A.dna.species.punchdamagehigh)
+ if(!(D.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
+ damage *= 1.5
+ if(!CHECK_MOBILITY(A, MOBILITY_STAND))
+ damage *= 0.5
+ if(!(A.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
+ damage *= 0.25
+ return damage
+
/datum/martial_art/proc/teach(mob/living/carbon/human/H, make_temporary = FALSE)
if(!istype(H) || !H.mind)
return FALSE
@@ -50,6 +61,7 @@
if(help_verb)
H.verbs += help_verb
H.mind.martial_art = src
+ ADD_TRAIT(H, TRAIT_PUGILIST, MARTIAL_ARTIST_TRAIT)
return TRUE
/datum/martial_art/proc/store(datum/martial_art/M,mob/living/carbon/human/H)
@@ -68,7 +80,8 @@
else
var/datum/martial_art/X = H.mind.default_martial_art
X.teach(H)
-
+ REMOVE_TRAIT(H, TRAIT_PUGILIST, MARTIAL_ARTIST_TRAIT)
+
/datum/martial_art/proc/on_remove(mob/living/carbon/human/H)
if(help_verb)
H.verbs -= help_verb
diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm
index 16d61c29f9..93d70c12cc 100644
--- a/code/datums/martial/boxing.dm
+++ b/code/datums/martial/boxing.dm
@@ -16,16 +16,13 @@
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
var/atk_verb = pick("left hook","right hook","straight punch")
-
- var/damage = rand(10, 13)
- var/extra_damage = rand(A.dna.species.punchdamagelow, A.dna.species.punchdamagehigh)
+ var/extra_damage = damage_roll(A,D)
if(extra_damage == A.dna.species.punchdamagelow)
playsound(D.loc, A.dna.species.miss_sound, 25, 1, -1)
D.visible_message("[A] has attempted to [atk_verb] [D]! ", \
"[A] has attempted to [atk_verb] [D]! ", null, COMBAT_MESSAGE_RANGE)
log_combat(A, D, "attempted to hit", atk_verb)
return TRUE
- damage += extra_damage
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
var/armor_block = D.run_armor_check(affecting, "melee")
@@ -35,7 +32,7 @@
D.visible_message("[A] has [atk_verb]ed [D]! ", \
"[A] has [atk_verb]ed [D]! ", null, COMBAT_MESSAGE_RANGE)
- D.apply_damage(damage, STAMINA, affecting, armor_block)
+ D.apply_damage(rand(10,13) + extra_damage, STAMINA, affecting, armor_block)
log_combat(A, D, "punched (boxing) ")
if(D.getStaminaLoss() > 100 && istype(D.mind?.martial_art, /datum/martial_art/boxing))
var/knockout_prob = (D.getStaminaLoss() + rand(-15,15))*0.75
diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm
index 0871cf7eaa..39fac11129 100644
--- a/code/datums/martial/cqc.dm
+++ b/code/datums/martial/cqc.dm
@@ -42,11 +42,12 @@
/datum/martial_art/cqc/proc/Slam(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(!can_use(A))
return FALSE
+ var/damage = (damage_roll(A,D) + 5)
if(CHECK_MOBILITY(D, MOBILITY_STAND))
D.visible_message("[A] slams [D] into the ground! ", \
"[A] slams you into the ground! ")
playsound(get_turf(A), 'sound/weapons/slam.ogg', 50, 1, -1)
- D.apply_damage(10, BRUTE)
+ D.apply_damage(damage, BRUTE)
D.DefaultCombatKnockdown(120)
log_combat(A, D, "slammed (CQC)")
return TRUE
@@ -54,29 +55,33 @@
/datum/martial_art/cqc/proc/Kick(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(!can_use(A))
return FALSE
- if(CHECK_MOBILITY(D, MOBILITY_STAND))
- D.visible_message("[A] kicks [D] back! ", \
- "[A] kicks you back! ")
- playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
- var/atom/throw_target = get_edge_target_turf(D, A.dir)
- D.throw_at(throw_target, 1, 14, A)
- D.apply_damage(10, BRUTE)
- log_combat(A, D, "kicked (CQC)")
+ var/damage = damage_roll(A,D)
if(!CHECK_MOBILITY(D, MOBILITY_STAND) && CHECK_MOBILITY(D, MOBILITY_USE))
log_combat(A, D, "knocked out (Head kick)(CQC)")
D.visible_message("[A] kicks [D]'s head, knocking [D.p_them()] out! ", \
"[A] kicks your head, knocking you out! ")
playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1)
D.SetSleeping(300)
- D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150)
+ D.apply_damage(damage + 5, BRUTE)
+ var/atom/throw_target = get_edge_target_turf(D, A.dir)
+ D.throw_at(throw_target, 1, 14, A)
+ D.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage + 10, 150)
+ else
+ D.visible_message("[A] kicks [D]! ", \
+ "[A] kicks you! ")
+ playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
+ D.Dizzy(damage)
+ D.apply_damage(damage + 15, BRUTE)
+ log_combat(A, D, "kicked (CQC)")
return TRUE
/datum/martial_art/cqc/proc/Pressure(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(!can_use(A))
return FALSE
+ var/damage = (damage_roll(A,D) + 55)
log_combat(A, D, "pressured (CQC)")
D.visible_message("[A] punches [D]'s neck! ")
- D.adjustStaminaLoss(60)
+ D.apply_damage(damage, STAMINA)
playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
return TRUE
@@ -85,11 +90,12 @@
return
if(!can_use(A))
return FALSE
+ var/damage = (damage_roll(A,D) + 15)
if(!D.stat)
log_combat(A, D, "restrained (CQC)")
D.visible_message("[A] locks [D] into a restraining position! ", \
"[A] locks you into a restraining position! ")
- D.adjustStaminaLoss(20)
+ D.apply_damage(damage, STAMINA)
D.Stun(100)
restraining = TRUE
addtimer(VARSET_CALLBACK(src, restraining, FALSE), 50, TIMER_UNIQUE)
@@ -98,6 +104,7 @@
/datum/martial_art/cqc/proc/Consecutive(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(!can_use(A))
return FALSE
+ var/damage = damage_roll(A,D)
if(!D.stat)
log_combat(A, D, "consecutive CQC'd (CQC)")
D.visible_message("[A] strikes [D]'s abdomen, neck and back consecutively ", \
@@ -106,8 +113,8 @@
var/obj/item/I = D.get_active_held_item()
if(I && D.temporarilyRemoveItemFromInventory(I))
A.put_in_hands(I)
- D.adjustStaminaLoss(50)
- D.apply_damage(25, BRUTE)
+ D.apply_damage(damage + 45, STAMINA)
+ D.apply_damage(damage + 20, BRUTE)
return TRUE
/datum/martial_art/cqc/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
@@ -135,7 +142,7 @@
log_combat(A, D, "attacked (CQC)")
A.do_attack_animation(D)
var/picked_hit_type = pick("CQC'd", "Big Bossed")
- var/bonus_damage = 13
+ var/bonus_damage = (damage_roll(A,D) + 7)
if(!CHECK_MOBILITY(D, MOBILITY_STAND))
bonus_damage += 5
picked_hit_type = "stomps on"
@@ -151,7 +158,7 @@
D.visible_message("[A] leg sweeps [D]!", \
"[A] leg sweeps you! ")
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
- D.apply_damage(10, BRUTE)
+ D.apply_damage(bonus_damage, BRUTE)
D.DefaultCombatKnockdown(60)
log_combat(A, D, "sweeped (CQC)")
return TRUE
@@ -161,6 +168,7 @@
return FALSE
add_to_streak("D",D)
var/obj/item/I = null
+ var/damage = (damage_roll(A,D)*0.5)
if(check_streak(A,D))
return TRUE
if(prob(65))
@@ -172,7 +180,7 @@
if(I && D.temporarilyRemoveItemFromInventory(I))
A.put_in_hands(I)
D.Jitter(2)
- D.apply_damage(5, BRUTE)
+ D.apply_damage(damage, BRUTE)
else
D.visible_message("[A] attempted to disarm [D]! ", \
"[A] attempted to disarm [D]! ")
diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm
index 1a244f911e..df42fba07d 100644
--- a/code/datums/martial/krav_maga.dm
+++ b/code/datums/martial/krav_maga.dm
@@ -84,64 +84,71 @@
if("neck_chop")
streak = ""
neck_chop(A,D)
- return 1
+ return TRUE
if("leg_sweep")
streak = ""
leg_sweep(A,D)
- return 1
+ return TRUE
if("quick_choke")//is actually lung punch
streak = ""
quick_choke(A,D)
- return 1
- return 0
+ return TRUE
+ return FALSE
/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/obj/item/bodypart/affecting = D.get_bodypart(BODY_ZONE_CHEST)
+ var/armor_block = D.run_armor_check(affecting, "melee")
+ var/damage = damage_roll(A,D)
if(!CHECK_MOBILITY(D, MOBILITY_STAND))
- return 0
+ return FALSE
D.visible_message("[A] leg sweeps [D]! ", \
"[A] leg sweeps you! ")
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
- D.apply_damage(5, BRUTE)
- D.DefaultCombatKnockdown(40, override_hardstun = 0.01, override_stamdmg = 25)
+ D.apply_damage(damage + 25, STAMINA, affecting, armor_block)
+ D.DefaultCombatKnockdown(80, override_hardstun = 1, override_stamdmg = 0)
log_combat(A, D, "leg sweeped")
- return 1
+ return TRUE
/datum/martial_art/krav_maga/proc/quick_choke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)//is actually lung punch
+ var/damage = damage_roll(A,D)
D.visible_message("[A] pounds [D] on the chest! ", \
"[A] slams your chest! You can't breathe! ")
playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1)
if(D.losebreath <= 10)
D.losebreath = CLAMP(D.losebreath + 5, 0, 10)
- D.adjustOxyLoss(10)
+ D.adjustOxyLoss(damage + 5)
log_combat(A, D, "quickchoked")
- return 1
+ return TRUE
/datum/martial_art/krav_maga/proc/neck_chop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
+ var/damage = (damage_roll(A,D)*0.5)
D.visible_message("[A] karate chops [D]'s neck! ", \
"[A] karate chops your neck, rendering you unable to speak! ")
playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1)
- D.apply_damage(5, BRUTE)
+ D.apply_damage(damage, BRUTE)
if(D.silent <= 10)
D.silent = CLAMP(D.silent + 10, 0, 10)
log_combat(A, D, "neck chopped")
- return 1
+ return TRUE
/datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
if(check_streak(A,D))
- return 1
+ return TRUE
log_combat(A, D, "grabbed (Krav Maga)")
..()
/datum/martial_art/krav_maga/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
+ var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
+ var/armor_block = D.run_armor_check(affecting, "melee")
if(check_streak(A,D))
- return 1
+ return TRUE
log_combat(A, D, "punched")
var/picked_hit_type = pick("punches", "kicks")
- var/bonus_damage = 10
- if(CHECK_MOBILITY(D, MOBILITY_STAND))
- bonus_damage += 5
+ var/bonus_damage = damage_roll(A,D)
+ if(!CHECK_MOBILITY(D, MOBILITY_STAND))
+ bonus_damage += 10
picked_hit_type = "stomps on"
- D.apply_damage(bonus_damage, BRUTE)
+ D.apply_damage(bonus_damage, BRUTE, affecting, armor_block)
if(picked_hit_type == "kicks" || picked_hit_type == "stomps on")
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
playsound(get_turf(D), 'sound/effects/hit_kick.ogg', 50, 1, -1)
@@ -151,24 +158,34 @@
D.visible_message("[A] [picked_hit_type] [D]! ", \
"[A] [picked_hit_type] you! ")
log_combat(A, D, "[picked_hit_type] with [name]")
- return 1
+ return TRUE
-/datum/martial_art/krav_maga/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
- var/obj/item/I = null
- if(prob(60))
- I = D.get_active_held_item()
- if(I)
- if(D.temporarilyRemoveItemFromInventory(I))
- A.put_in_hands(I)
- D.visible_message("[A] has disarmed [D]! ", \
- "[A] has disarmed [D]! ")
- playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+/datum/martial_art/krav_maga/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ if(check_streak(A,D))
+ return TRUE
+ var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
+ var/armor_block = D.run_armor_check(affecting, "melee")
+ var/damage = (damage_roll(A,D)*2)
+ if(D.mobility_flags & MOBILITY_STAND)
+ D.visible_message("[A] reprimands [D]! ", \
+ "You're slapped by [A]! ", "You hear a sickening sound of flesh hitting flesh! ", COMBAT_MESSAGE_RANGE, A)
+ to_chat(A, "You jab [D]! ")
+ A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
+ playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
+ D.apply_damage(damage + 5, STAMINA, affecting, armor_block)
+ log_combat(A, D, "punched nonlethally")
else
- D.visible_message("[A] attempted to disarm [D]! ", \
- "[A] attempted to disarm [D]! ")
- playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
- log_combat(A, D, "disarmed (Krav Maga)", "[I ? " removing \the [I]" : ""]")
- return 1
+ D.visible_message("[A] reprimands [D]! ", \
+ "You're manhandled by [A]! ", "You hear a sickening sound of flesh hitting flesh! ", COMBAT_MESSAGE_RANGE, A)
+ to_chat(A, "You stomp [D]! ")
+ A.do_attack_animation(D, ATTACK_EFFECT_KICK)
+ playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
+ D.apply_damage(damage + 10, STAMINA, affecting, armor_block)
+ log_combat(A, D, "stomped nonlethally")
+ if(prob(D.getStaminaLoss()))
+ D.visible_message("[D] sputters and recoils in pain! ", "You recoil in pain as you are jabbed in a nerve! ")
+ D.drop_all_held_items()
+ return TRUE
//Krav Maga Gloves
diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm
index fe9f0d77d6..3fd0a637c2 100644
--- a/code/datums/martial/mushpunch.dm
+++ b/code/datums/martial/mushpunch.dm
@@ -4,6 +4,7 @@
/datum/martial_art/mushpunch/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
var/atk_verb
+ var/damage = (damage_roll(A,D)*3)
to_chat(A, "You begin to wind up an attack... ")
if(!do_after(A, 25, target = D))
to_chat(A, "Your attack was interrupted! ")
@@ -12,7 +13,7 @@
atk_verb = pick("punches", "smashes", "ruptures", "cracks")
D.visible_message("[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards! ", \
"[A] [atk_verb] you with inhuman strength, sending you flying backwards! ")
- D.apply_damage(rand(15,30), BRUTE)
+ D.apply_damage(damage, BRUTE) //KAPOW
playsound(D, 'sound/effects/meteorimpact.ogg', 25, 1, -1)
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm
index 71fb00c467..c751d3b146 100644
--- a/code/datums/martial/plasma_fist.dm
+++ b/code/datums/martial/plasma_fist.dm
@@ -44,11 +44,13 @@
return
/datum/martial_art/plasma_fist/proc/Throwback(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/damage = (damage_roll(A,D)*3)
D.visible_message("[A] has hit [D] with Plasma Punch! ", \
"[A] has hit [D] with Plasma Punch! ")
playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1)
var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A)))
D.throw_at(throw_target, 200, 4,A)
+ D.apply_damage(damage, BRUTE)
A.say("HYAH!", forced="plasma fist")
log_combat(A, D, "threw back (Plasma Fist)")
return
diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm
index 75053dbbfc..06d07260ed 100644
--- a/code/datums/martial/psychotic_brawl.dm
+++ b/code/datums/martial/psychotic_brawl.dm
@@ -14,6 +14,7 @@
/datum/martial_art/psychotic_brawling/proc/psycho_attack(mob/living/carbon/human/A, mob/living/carbon/human/D)
var/atk_verb
+ var/damage = damage_roll(A,D)
switch(rand(1,8))
if(1)
D.help_shake_act(A)
@@ -44,10 +45,10 @@
D.visible_message("[A] [atk_verb] [D]! ", \
"[A] [atk_verb] you! ")
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 40, 1, -1)
- D.apply_damage(rand(5,10), BRUTE, BODY_ZONE_HEAD)
- A.apply_damage(rand(5,10), BRUTE, BODY_ZONE_HEAD)
+ D.apply_damage(damage*1.5, BRUTE, BODY_ZONE_HEAD)
+ A.apply_damage(damage, BRUTE, BODY_ZONE_HEAD)
if(!istype(D.head,/obj/item/clothing/head/helmet/) && !istype(D.head,/obj/item/clothing/head/hardhat))
- D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
+ D.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage)
A.Stun(rand(10,45))
D.DefaultCombatKnockdown(rand(5,30))//CIT CHANGE - makes stuns from martial arts always use Knockdown instead of Stun for the sake of consistency
if(5,6)
@@ -55,7 +56,7 @@
atk_verb = pick("punches", "kicks", "hits", "slams into")
D.visible_message("[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards! ", \
"[A] [atk_verb] you with inhuman strength, sending you flying backwards! ")
- D.apply_damage(rand(15,30), BRUTE)
+ D.apply_damage(damage*2, BRUTE)
playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1)
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm
index 8055bd54e9..2d760fc10a 100644
--- a/code/datums/martial/rising_bass.dm
+++ b/code/datums/martial/rising_bass.dm
@@ -78,6 +78,7 @@
return TRUE
/datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/damage = (damage_roll(A,D)*0.5)
if(CHECK_MOBILITY(D, MOBILITY_STAND))
var/dir = A.dir & (NORTH | SOUTH) ? pick(EAST, WEST) : pick(NORTH, SOUTH)
var/oppdir = dir == NORTH ? SOUTH : dir == SOUTH ? NORTH : dir == EAST ? WEST : EAST
@@ -87,7 +88,7 @@
D.visible_message("[A] kicks [D] in the side, sliding them over! ", \
"[A] kicks you in the side, forcing you to step away! ")
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
- D.apply_damage(5, BRUTE, BODY_ZONE_CHEST)
+ D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
D.DefaultCombatKnockdown(60)
var/L = !checkfordensity(H,D) ? (!checkfordensity(K,D) ? D.loc : K) : H
D.forceMove(L)
@@ -96,6 +97,7 @@
return TRUE
/datum/martial_art/the_rising_bass/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/damage = (damage_roll(A,D) + 25)
if(CHECK_MOBILITY(D, MOBILITY_STAND))
var/turf/H = get_step(A, get_dir(D,A))
var/L = checkfordensity(H,D) ? H : A.loc
@@ -104,8 +106,8 @@
"[A] flips you over their shoulder, slamming you into the ground! ")
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
D.emote("scream")
- D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
- D.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
+ D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
+ D.apply_damage(damage, BRUTE, BODY_ZONE_HEAD)
D.Sleeping(60)
D.DefaultCombatKnockdown(300)
D.forceMove(L)
@@ -114,6 +116,7 @@
return FALSE
/datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/damage = damage_roll(A,D)
if(CHECK_MOBILITY(D, MOBILITY_STAND) && repulsecool < world.time)
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
D.visible_message("[A] smashes [D] in the chest, throwing them away! ", \
@@ -121,7 +124,7 @@
playsound(get_turf(A), 'sound/weapons/punch1.ogg', 50, 1, -1)
var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A)))
D.throw_at(F, 10, 1)
- D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
+ D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
D.DefaultCombatKnockdown(90)
log_combat(A, D, "repulse punched (Rising Bass)")
repulsecool = world.time + 3 SECONDS
@@ -129,12 +132,13 @@
return FALSE
/datum/martial_art/the_rising_bass/proc/footSmash(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/damage = (damage_roll(A,D)*0.5)
if(CHECK_MOBILITY(D, MOBILITY_STAND))
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
D.visible_message("[A] smashes their foot down on [D]'s foot! ", \
"[A] smashes your foot! ")
playsound(get_turf(A), 'sound/weapons/punch1.ogg', 50, 1, -1)
- D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
+ D.apply_damage(damage, BRUTE, pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
D.dropItemToGround(D.get_active_held_item())
log_combat(A, D, "foot smashed (Rising Bass)")
return TRUE
@@ -181,7 +185,7 @@
. = ..()
if(A.incapacitated(FALSE, TRUE)) //NO STUN
return BULLET_ACT_HIT
- if(!(A.mobility_flags & MOBILITY_USE)) //NO UNABLE TO USE
+ if(!CHECK_ALL_MOBILITY(A, MOBILITY_USE|MOBILITY_STAND)) //NO UNABLE TO USE, NO DODGING ON THE FLOOR
return BULLET_ACT_HIT
if(A.dna && A.dna.check_mutation(HULK)) //NO HULK
return BULLET_ACT_HIT
diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm
index 2b7d9e0a09..527ee01206 100644
--- a/code/datums/martial/sleeping_carp.dm
+++ b/code/datums/martial/sleeping_carp.dm
@@ -31,45 +31,48 @@
var/atk_verb = pick("precisely kick", "brutally chop", "cleanly hit", "viciously slam")
///this is the critical hit damage added to the attack if it rolls, it starts at 0 because it'll be changed when rolled
var/crit_damage = 0
+ var/damage = damage_roll(A,D)
D.visible_message("[A] [atk_verb]s [D]! ", \
"[A] [atk_verb]s you! ", null, null, A)
to_chat(A, "You [atk_verb] [D]! ")
if(prob(10))
- crit_damage += 20
+ crit_damage += (damage*2 + 15)
playsound(get_turf(D), 'sound/weapons/bite.ogg', 50, TRUE, -1)
- D.visible_message("[D] sputters blood as the blow strikes them with inhuman force! ", "You are struck with incredible precision by [A]! ")
+ D.visible_message("[D] staggers as the blow strikes them with inhuman force! ", "You are struck with incredible precision by [A]! ")
log_combat(A, D, "critcal strong punched (Sleeping Carp)")//log it here because a critical can swing for 40 force and it's important for the sake of how hard they hit
else
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, TRUE, -1)
log_combat(A, D, "strong punched (Sleeping Carp)")//so as to not double up on logging
- D.apply_damage(20 + crit_damage, BRUTE, affecting)
+ D.apply_damage((damage + 15) + crit_damage, BRUTE, affecting)
return
///Crashing Wave Kick: Harm Disarm combo, throws people seven tiles backwards
/datum/martial_art/the_sleeping_carp/proc/launchKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/damage = (damage_roll(A,D) + 15)
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
D.visible_message("[A] kicks [D] square in the chest, sending them flying! ", \
"You are kicked square in the chest by [A], sending you flying! ", "You hear a sickening sound of flesh hitting flesh! ", COMBAT_MESSAGE_RANGE, A)
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
var/atom/throw_target = get_edge_target_turf(D, A.dir)
D.throw_at(throw_target, 7, 14, A)
- D.apply_damage(15, BRUTE, BODY_ZONE_CHEST)
+ D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
log_combat(A, D, "launchkicked (Sleeping Carp)")
return
///Keelhaul: Harm Grab combo, knocks people down, deals stamina damage while they're on the floor
/datum/martial_art/the_sleeping_carp/proc/dropKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ var/damage = damage_roll(A,D)
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
if((D.mobility_flags & MOBILITY_STAND))
- D.apply_damage(10, BRUTE, BODY_ZONE_HEAD)
- D.DefaultCombatKnockdown(50)
- D.adjustStaminaLoss(40) //A cit specific change form the tg port to really punish anyone who tries to stand up
+ D.apply_damage(damage, BRUTE, BODY_ZONE_HEAD)
+ D.DefaultCombatKnockdown(50, override_hardstun = 0.01, override_stamdmg = 0)
+ D.apply_damage(damage + 35, STAMINA, BODY_ZONE_HEAD) //A cit specific change form the tg port to really punish anyone who tries to stand up
D.visible_message("[A] kicks [D] in the head, sending them face first into the floor! ", \
"You are kicked in the head by [A], sending you crashing to the floor! ", "You hear a sickening sound of flesh hitting flesh! ", COMBAT_MESSAGE_RANGE, A)
- if(!(D.mobility_flags & MOBILITY_STAND))
- D.apply_damage(5, BRUTE, BODY_ZONE_HEAD)
- D.adjustStaminaLoss(40)
+ else
+ D.apply_damage(damage*0.5, BRUTE, BODY_ZONE_HEAD)
+ D.apply_damage(damage + 35, STAMINA, BODY_ZONE_HEAD)
D.drop_all_held_items()
D.visible_message("[A] kicks [D] in the head! ", \
"You are kicked in the head by [A]! ", "You hear a sickening sound of flesh hitting flesh! ", COMBAT_MESSAGE_RANGE, A)
@@ -85,6 +88,7 @@
/datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
add_to_streak("H",D)
+ var/damage = (damage_roll(A,D) + 5)
if(check_streak(A,D))
return TRUE
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
@@ -93,7 +97,7 @@
D.visible_message("[A] [atk_verb]s [D]! ", \
"[A] [atk_verb]s you! ", null, null, A)
to_chat(A, "You [atk_verb] [D]! ")
- D.apply_damage(rand(10,15), BRUTE, affecting)
+ D.apply_damage(damage, BRUTE, affecting)
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, TRUE, -1)
log_combat(A, D, "punched (Sleeping Carp)")
return TRUE
@@ -110,7 +114,7 @@
. = ..()
if(A.incapacitated(FALSE, TRUE)) //NO STUN
return BULLET_ACT_HIT
- if(!(A.mobility_flags & MOBILITY_USE)) //NO UNABLE TO USE
+ if(!CHECK_ALL_MOBILITY(A, MOBILITY_USE|MOBILITY_STAND)) //NO UNABLE TO USE, NO DEFLECTION ON THE FLOOR
return BULLET_ACT_HIT
if(A.dna && A.dna.check_mutation(HULK)) //NO HULK
return BULLET_ACT_HIT
@@ -121,6 +125,7 @@
playsound(get_turf(A), pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
P.firer = A
P.setAngle(rand(0, 360))//SHING
+ A.adjustStaminaLossBuffered (3) //Citadel change to stop infinite bullet sponging as you run away, but it is buffered!
return BULLET_ACT_FORCE_PIERCE
return BULLET_ACT_HIT
@@ -133,7 +138,6 @@
ADD_TRAIT(H, TRAIT_NODISMEMBER, SLEEPING_CARP_TRAIT)
H.physiology.brute_mod *= 0.4 //brute is really not gonna cut it
H.physiology.burn_mod *= 0.7 //burn is distinctly more useful against them than brute but they're still resistant
- H.physiology.stamina_mod *= 0.5 //stun batons prove to be one of the few ways to fight them. They have stun resistance already, so I think doubling down too hard on this resistance is a bit much.
H.physiology.stun_mod *= 0.3 //for those rare stuns
H.physiology.pressure_mod *= 0.3 //go hang out with carp
H.physiology.cold_mod *= 0.3 //cold mods are different to burn mods, they do stack however
@@ -148,7 +152,6 @@
REMOVE_TRAIT(H, TRAIT_NODISMEMBER, SLEEPING_CARP_TRAIT)
H.physiology.brute_mod = initial(H.physiology.brute_mod)
H.physiology.burn_mod = initial(H.physiology.burn_mod)
- H.physiology.stamina_mod = initial(H.physiology.stamina_mod)
H.physiology.stun_mod = initial(H.physiology.stun_mod)
H.physiology.pressure_mod = initial(H.physiology.pressure_mod) //no more carpies
H.physiology.cold_mod = initial(H.physiology.cold_mod)
@@ -237,7 +240,7 @@
else
return ..()
-/obj/item/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(wielded)
- return ..()
- return FALSE
+/obj/item/twohanded/bostaff/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!wielded)
+ return BLOCK_NONE
+ return ..()
diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm
index 6ed2245dfd..f7923d029f 100644
--- a/code/datums/martial/wrestling.dm
+++ b/code/datums/martial/wrestling.dm
@@ -18,28 +18,30 @@
var/datum/action/drop/drop = new/datum/action/drop()
/datum/martial_art/wrestling/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
+ if(!can_use(A, D))
+ return FALSE
switch(streak)
if("drop")
streak = ""
drop(A,D)
- return 1
+ return TRUE
if("strike")
streak = ""
strike(A,D)
- return 1
+ return TRUE
if("kick")
streak = ""
kick(A,D)
- return 1
+ return TRUE
if("throw")
streak = ""
throw_wrassle(A,D)
- return 1
+ return TRUE
if("slam")
streak = ""
slam(A,D)
- return 1
- return 0
+ return TRUE
+ return FALSE
/datum/action/slam
name = "Slam (Cinch) - Slam a grappled opponent into the floor."
@@ -136,7 +138,7 @@
/datum/martial_art/wrestling/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(check_streak(A,D))
- return 1
+ return TRUE
log_combat(A, D, "punched with wrestling")
..()
@@ -171,11 +173,11 @@
if (get_dist(A, D) > 1)
to_chat(A, "[D] is too far away!")
- return 0
+ return FALSE
if (!isturf(A.loc) || !isturf(D.loc))
to_chat(A, "You can't throw [D] from here!")
- return 0
+ return FALSE
A.setDir(turn(A.dir, 90))
var/turf/T = get_step(A, A.dir)
@@ -184,7 +186,7 @@
D.forceMove(T)
D.setDir(get_dir(D, A))
else
- return 0
+ return FALSE
sleep(delay)
@@ -193,11 +195,11 @@
if (get_dist(A, D) > 1)
to_chat(A, "[D] is too far away!")
- return 0
+ return FALSE
if (!isturf(A.loc) || !isturf(D.loc))
to_chat(A, "You can't throw [D] from here!")
- return 0
+ return FALSE
D.forceMove(A.loc) // Maybe this will help with the wallthrowing bug.
@@ -209,7 +211,7 @@
D.emote("scream")
D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/DefaultCombatKnockdown, 20))
log_combat(A, D, "has thrown with wrestling")
- return 0
+ return FALSE
/datum/martial_art/wrestling/proc/FlipAnimation(mob/living/carbon/human/D)
set waitfor = FALSE
@@ -225,6 +227,7 @@
if(!A.pulling || A.pulling != D)
to_chat(A, "You need to have [D] in a cinch!")
return
+ var/damage = damage_roll(A,D)
D.forceMove(A.loc)
A.setDir(get_dir(A, D))
D.setDir(get_dir(D, A))
@@ -256,7 +259,7 @@
A.pixel_y = 0
D.pixel_x = 0
D.pixel_y = 0
- return 0
+ return FALSE
if (!isturf(A.loc) || !isturf(D.loc))
to_chat(A, "You can't slam [D] here!")
@@ -264,7 +267,7 @@
A.pixel_y = 0
D.pixel_x = 0
D.pixel_y = 0
- return 0
+ return FALSE
else
if (A)
A.pixel_x = 0
@@ -272,7 +275,7 @@
if (D)
D.pixel_x = 0
D.pixel_y = 0
- return 0
+ return FALSE
sleep(1)
@@ -284,11 +287,11 @@
if (get_dist(A, D) > 1)
to_chat(A, "[D] is too far away!")
- return 0
+ return FALSE
if (!isturf(A.loc) || !isturf(D.loc))
to_chat(A, "You can't slam [D] here!")
- return 0
+ return FALSE
D.forceMove(A.loc)
@@ -307,11 +310,11 @@
switch(rand(1,3))
if (2)
- D.adjustBruteLoss(rand(20,30))
+ D.apply_damage(damage + 25, BRUTE)
if (3)
D.ex_act(EXPLODE_LIGHT)
else
- D.adjustBruteLoss(rand(10,20))
+ D.apply_damage(damage + 15, BRUTE)
else
D.ex_act(EXPLODE_LIGHT)
@@ -325,7 +328,7 @@
log_combat(A, D, "body-slammed")
- return 0
+ return FALSE
/datum/martial_art/wrestling/proc/CheckStrikeTurf(mob/living/carbon/human/A, turf/T)
if (A && (T && isturf(T) && get_dist(A, T) <= 1))
@@ -335,6 +338,7 @@
if(!D)
return
var/turf/T = get_turf(A)
+ var/damage = damage_roll(A,D)
if (T && isturf(T) && D && isturf(D.loc))
for (var/i = 0, i < 4, i++)
A.setDir(turn(A.dir, 90))
@@ -343,7 +347,7 @@
addtimer(CALLBACK(src, .proc/CheckStrikeTurf, A, T), 4)
A.visible_message("[A] headbutts [D]! ")
- D.adjustBruteLoss(rand(10,20))
+ D.apply_damage(damage + 15, BRUTE)
playsound(A.loc, "swing_hit", 50, 1)
D.Unconscious(20)
log_combat(A, D, "headbutted")
@@ -351,13 +355,14 @@
/datum/martial_art/wrestling/proc/kick(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(!D)
return
+ var/damage = damage_roll(A,D)
A.emote("scream")
A.emote("flip")
A.setDir(turn(A.dir, 90))
A.visible_message("[A] roundhouse-kicks [D]! ")
playsound(A.loc, "swing_hit", 50, 1)
- D.adjustBruteLoss(rand(10,20))
+ D.apply_damage(damage + 15, STAMINA)
var/turf/T = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
if (T && isturf(T))
@@ -371,7 +376,8 @@
var/obj/surface = null
var/turf/ST = null
var/falling = 0
-
+ var/damage = damage_roll(A,D)
+
for (var/obj/O in oview(1, A))
if (O.density == 1)
if (O == A)
@@ -399,15 +405,15 @@
A.pixel_y = 0
if (falling == 1)
A.visible_message("...and dives head-first into the ground, ouch! ")
- A.adjustBruteLoss(rand(10,20))
+ A.apply_damage(damage + 15, BRUTE)
A.DefaultCombatKnockdown(60)
to_chat(A, "[D] is too far away!")
- return 0
+ return FALSE
if (!isturf(A.loc) || !isturf(D.loc))
A.pixel_y = 0
to_chat(A, "You can't drop onto [D] from here!")
- return 0
+ return FALSE
if(A)
animate(A, transform = matrix(90, MATRIX_ROTATE), time = 1, loop = 0)
@@ -425,9 +431,9 @@
if (prob(33) || D.stat)
D.ex_act(EXPLODE_LIGHT)
else
- D.adjustBruteLoss(rand(20,30))
+ D.apply_damage(damage + 25, BRUTE)
else
- D.adjustBruteLoss(rand(20,30))
+ D.apply_damage(damage + 25, BRUTE)
D.DefaultCombatKnockdown(40)
@@ -440,14 +446,18 @@
return
/datum/martial_art/wrestling/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ damage_roll(A,D)
if(check_streak(A,D))
- return 1
+ return TRUE
log_combat(A, D, "wrestling-disarmed")
..()
/datum/martial_art/wrestling/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ damage_roll(A,D)
if(check_streak(A,D))
- return 1
+ return TRUE
+ if(!can_use(A,D))
+ return ..()
if(A.pulling == D || A == D) // don't stun grab yoursel
return FALSE
A.start_pulling(D)
@@ -455,7 +465,7 @@
"[A] gets [D] in a cinch! ")
D.Stun(rand(60,100))
log_combat(A, D, "cinched")
- return 1
+ return TRUE
/obj/item/storage/belt/champion/wrestling
name = "Wrestling Belt"
@@ -476,3 +486,19 @@
if(H.get_item_by_slot(SLOT_BELT) == src)
style.remove(H)
return
+
+//Subtype of wrestling, reserved for the wrestling belts found in the holodeck
+/datum/martial_art/wrestling/holodeck
+ name = "Holodeck Wrestling"
+
+/obj/item/storage/belt/champion/wrestling/holodeck
+ name = "Holodeck Wrestling Belt"
+ style = new /datum/martial_art/wrestling/holodeck
+
+//Make sure that moves can only be used on people wearing the holodeck belt
+/datum/martial_art/wrestling/holodeck/can_use(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
+ if(!(istype(D.mind?.martial_art, /datum/martial_art/wrestling/holodeck)))
+ return FALSE
+ else
+ return ..()
+
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 57b9a25904..45a0f86a98 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -470,7 +470,6 @@
/datum/objective/steal,
/datum/objective/download,
/datum/objective/nuclear,
- /datum/objective/capture,
/datum/objective/absorb,
/datum/objective/custom
)
diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm
index 2156581cb1..9edaa7605c 100644
--- a/code/datums/mutations/_mutations.dm
+++ b/code/datums/mutations/_mutations.dm
@@ -31,6 +31,7 @@
//MUT_EXTRA - A mutation that is in the mutations tab, and can be given and taken away through though the DNA console. Has a 0 before it's name in the mutation section of the dna console
//MUT_OTHER Cannot be interacted with by players through normal means. I.E. wizards mutate
+ var/list/conflicts //any mutations that might conflict. put mutation typepath defines in here. make sure to enter it both ways (so that A conflicts with B, and B with A)
var/can_chromosome = CHROMOSOME_NONE //can we take chromosomes? 0: CHROMOSOME_NEVER never, 1:CHROMOSOME_NONE yeah, 2: CHROMOSOME_USED no, already have one
var/chromosome_name //purely cosmetic
var/modified = FALSE //ugly but we really don't want chromosomes and on_acquiring to overlap and apply double the powers
@@ -60,6 +61,14 @@
return TRUE
if(limb_req && !H.get_bodypart(limb_req))
return TRUE
+ for(var/M in H.dna.mutations)//check for conflicting powers
+ var/datum/mutation/human/mewtayshun = M
+ if(LAZYLEN(mewtayshun.conflicts))
+ for(var/cons in mewtayshun.conflicts)
+ var/datum/mutation/human/conflicter = cons
+ if(conflicter == type)
+ to_chat(H, "You feel your genes resisting something. ")
+ return TRUE
owner = H
dna = H.dna
dna.mutations += src
diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm
index f036b25518..e933e02c15 100644
--- a/code/datums/mutations/actions.dm
+++ b/code/datums/mutations/actions.dm
@@ -41,7 +41,7 @@
desc = "You can breathe fire at a target."
school = "evocation"
charge_max = 600
- clothes_req = FALSE
+ clothes_req = NONE
range = 20
base_icon_state = "fireball"
action_icon_state = "fireball0"
@@ -121,7 +121,7 @@
name = "Convoke Void" //magic the gathering joke here
desc = "A rare genome that attracts odd forces not usually observed. May sometimes pull you in randomly."
school = "evocation"
- clothes_req = FALSE
+ clothes_req = NONE
charge_max = 600
invocation = "DOOOOOOOOOOOOOOOOOOOOM!!!"
invocation_type = "shout"
@@ -155,7 +155,7 @@
dropmessage = "You let the electricity from your hand dissipate."
hand_path = /obj/item/melee/touch_attack/shock
charge_max = 400
- clothes_req = FALSE
+ clothes_req = NONE
action_icon_state = "zap"
/obj/item/melee/touch_attack/shock
@@ -211,7 +211,7 @@
name = "Remember the Scent"
desc = "Get a scent off of the item you're currently holding to track it. With an empty hand, you'll track the scent you've remembered."
charge_max = 100
- clothes_req = FALSE
+ clothes_req = NONE
range = -1
include_user = TRUE
action_icon_state = "nose"
@@ -289,8 +289,7 @@
/obj/effect/proc_holder/spell/self/self_amputation
name = "Drop a limb"
desc = "Concentrate to make a random limb pop right off your body."
- clothes_req = FALSE
- human_req = FALSE
+ clothes_req = NONE
charge_max = 100
action_icon_state = "autotomy"
@@ -327,8 +326,7 @@
/obj/effect/proc_holder/spell/self/lay_genetic_web
name = "Lay Web"
desc = "Drops a web. Only you will be able to traverse your web easily, making it pretty good for keeping you safe."
- clothes_req = FALSE
- human_req = FALSE
+ clothes_req = NONE
charge_max = 4 SECONDS //the same time to lay a web
action_icon = 'icons/mob/actions/actions_genetic.dmi'
action_icon_state = "lay_web"
@@ -369,8 +367,7 @@
/obj/effect/proc_holder/spell/self/tongue_spike
name = "Launch spike"
desc = "Shoot your tongue out in the direction you're facing, embedding it and dealing damage until they remove it."
- clothes_req = FALSE
- human_req = TRUE
+ clothes_req = NONE
charge_max = 100
action_icon = 'icons/mob/actions/actions_genetic.dmi'
action_icon_state = "spike"
diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm
index cc286058f1..ab7fe986fb 100644
--- a/code/datums/mutations/body.dm
+++ b/code/datums/mutations/body.dm
@@ -75,20 +75,21 @@
quality = POSITIVE
difficulty = 16
instability = 5
+ conflicts = list(GIGANTISM)
locked = TRUE // Default intert species for now, so locked from regular pool.
/datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
owner.transform = owner.transform.Scale(1, 0.8)
- owner.pass_flags |= PASSTABLE
+ passtable_on(owner, GENETIC_MUTATION)
owner.visible_message("[owner] suddenly shrinks! ", "Everything around you seems to grow.. ")
/datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner)
if(..())
return
owner.transform = owner.transform.Scale(1, 1.25)
- owner.pass_flags &= ~PASSTABLE
+ passtable_off(owner, GENETIC_MUTATION)
owner.visible_message("[owner] suddenly grows! ", "Everything around you seems to shrink.. ")
@@ -333,6 +334,7 @@
desc = "The cells within the subject spread out to cover more area, making the subject appear larger."
quality = MINOR_NEGATIVE
difficulty = 12
+ conflicts = list(DWARFISM)
/datum/mutation/human/gigantism/on_acquiring(mob/living/carbon/human/owner)
if(..())
diff --git a/code/datums/mutations/combined.dm b/code/datums/mutations/combined.dm
index d3cc83f9c0..465706c897 100644
--- a/code/datums/mutations/combined.dm
+++ b/code/datums/mutations/combined.dm
@@ -26,3 +26,7 @@
/datum/generecipe/tonguechem
required = "/datum/mutation/human/tongue_spike; /datum/mutation/human/stimmed"
result = TONGUESPIKECHEM
+
+/datum/generecipe/hulk
+ required = "/datum/mutation/human/strong; /datum/mutation/human/radioactive"
+ result = HULK
diff --git a/code/datums/radiation_wave.dm b/code/datums/radiation_wave.dm
index 4795f8da60..5dce5791c2 100644
--- a/code/datums/radiation_wave.dm
+++ b/code/datums/radiation_wave.dm
@@ -117,7 +117,7 @@
continue
contam_atoms += thing
var/did_contam = 0
- if(length(can_contam))
+ if(can_contam)
var/rad_strength = ((strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT)/contam_atoms.len
for(var/k in 1 to contam_atoms.len)
var/atom/thing = contam_atoms[k]
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 5a69ebe427..69b74841df 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -113,20 +113,25 @@
duration = set_duration
. = ..()
-/datum/status_effect/no_combat_mode/mesmerize
+/datum/status_effect/mesmerize
id = "Mesmerize"
alert_type = /obj/screen/alert/status_effect/mesmerized
-/datum/status_effect/no_combat_mode/mesmerize/on_creation(mob/living/new_owner, set_duration)
+/datum/status_effect/mesmerize/on_creation(mob/living/new_owner, set_duration)
. = ..()
ADD_TRAIT(owner, TRAIT_MUTE, "mesmerize")
owner.add_movespeed_modifier("[STATUS_EFFECT_MESMERIZE]_[id]", TRUE, priority = 64, override = TRUE, multiplicative_slowdown = 5, blacklisted_movetypes = FALSE? NONE : CRAWLING)
-/datum/status_effect/no_combat_mode/mesmerize/on_remove()
+/datum/status_effect/mesmerize/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_MUTE, "mesmerize")
owner.remove_movespeed_modifier("[STATUS_EFFECT_MESMERIZE]_[id]")
+/datum/status_effect/mesmerize/on_creation(mob/living/new_owner, set_duration)
+ if(isnum(set_duration))
+ duration = set_duration
+ . = ..()
+
/obj/screen/alert/status_effect/mesmerized
name = "Mesmerized"
desc = "You cant tear your sight from who is in front of you... their gaze is simply too enthralling.."
diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm
index d4a5dcdeb3..ad24126e45 100644
--- a/code/datums/wires/_wires.dm
+++ b/code/datums/wires/_wires.dm
@@ -38,7 +38,6 @@
..()
if(!istype(holder, holder_type))
CRASH("Wire holder is not of the expected type!")
- return
src.holder = holder
if(randomize)
diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm
index bc034db718..cbad2f7ab0 100644
--- a/code/game/area/Space_Station_13_areas.dm
+++ b/code/game/area/Space_Station_13_areas.dm
@@ -324,6 +324,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Service Hallway"
icon_state = "hall_service"
+/area/hallway/secondary/civilian
+ name = "Civilian Wing"
+ icon_state = "hallFS"
+
+
//Command
/area/bridge
@@ -1046,7 +1051,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Monastery Garden"
icon_state = "hydro"
-
//Science
/area/science
@@ -1393,3 +1397,199 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/crew_quarters/fitness/pool
name = "Pool Area"
icon_state = "pool"
+
+/area/crew_quarters/dorms/blue
+ name = "Blue Dorms"
+ icon_state = "Sleep"
+ nightshift_public_area = NIGHTSHIFT_AREA_NONE
+
+/area/crew_quarters/dorms/purple
+ name = "Purple Dorms"
+ icon_state = "Sleep"
+ nightshift_public_area = NIGHTSHIFT_AREA_NONE
+
+/area/crew_quarters/lounge/jazz
+ name = "Jazz Lounge"
+ icon_state = "yellow"
+ ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg')
+ nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
+
+
+/area/crew_quarters/fitness/recreation
+ name = "Recreation Area"
+ icon_state = "fitness"
+ nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
+
+/area/crew_quarters/fitness/cogpool
+ name = "Pool"
+ icon_state = "fitness"
+ clockwork_warp_fail = "Pool's closed."
+ nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
+
+/area/crew_quarters/barbershop
+ name = "Barbershop"
+ icon_state = "blue"
+ nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
+
+/area/crew_quarters/observatory
+ name = "Observatory"
+ icon_state = "Sleep"
+
+//Engineering
+
+/area/engine/teg_hot
+ name = "Hot Loop"
+ icon_state = "red"
+
+/area/engine/teg_cold
+ name = "Cold Loop"
+ icon_state = "blue"
+
+/area/engine/workshop
+ name = "Engineering Workshop"
+ icon_state = "engine"
+
+/area/security/courtroom/jury
+ name = "Jury Room"
+ icon_state = "courtroom"
+
+/area/quartermaster/miningdock/airless
+ name = "Mining Dock"
+ icon_state = "mining"
+ has_gravity = STANDARD_GRAVITY
+ valid_territory = FALSE
+ outdoors = TRUE
+ ambientsounds = SPACE
+ blob_allowed = FALSE //While part of the station, what good will it do you?
+
+/area/quartermaster/miningdock/airless/no_grav
+ name = "Mining Dock"
+ icon_state = "mining"
+ dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
+ power_light = FALSE
+ power_equip = FALSE
+ power_environ = FALSE
+ valid_territory = FALSE
+ outdoors = TRUE
+ ambientsounds = SPACE
+ blob_allowed = FALSE //While part of the station, what good will it do you?
+
+/area/janitor/aux
+ name = "Auxiliary Custodial Closet"
+ icon_state = "janitor"
+ flags_1 = NONE
+
+/area/hydroponics/lobby
+ name = "Hydroponics Lobby"
+ icon_state = "hydro"
+
+//Storage
+
+/area/storage/emergency/generic
+ name = "Emergency Storage"
+ icon_state = "emergencystorage"
+
+//Construction
+
+/area/construction
+ name = "Construction Area"
+ icon_state = "yellow"
+ ambientsounds = ENGINEERING
+
+/area/construction/secondary
+ name = "Secondary Construction Area"
+ icon_state = "yellow"
+
+/area/construction/minisat_exterior
+ name = "Minisat Exterior"
+ icon_state = "yellow"
+
+/area/construction/mining/aux_base
+ name = "Auxiliary Base Construction"
+ icon_state = "yellow"
+
+/area/construction/mining/aux_base/closet
+ name = "Auxiliary Closet Construction"
+ icon_state = "yellow"
+
+/area/construction/supplyshuttle
+ name = "Supply Shuttle"
+ icon_state = "yellow"
+
+/area/construction/quarters
+ name = "Engineers' Quarters"
+ icon_state = "yellow"
+
+/area/construction/qmaint
+ name = "Maintenance"
+ icon_state = "yellow"
+
+/area/construction/hallway
+ name = "Hallway"
+ icon_state = "yellow"
+
+/area/construction/solars
+ name = "Solar Panels"
+ icon_state = "yellow"
+
+/area/construction/solarscontrol
+ name = "Solar Panel Control"
+ icon_state = "yellow"
+
+/area/construction/storage
+ name = "Construction Site Storage"
+ icon_state = "yellow"
+
+/area/construction/storage/wing
+ name = "Storage Wing"
+ icon_state = "storage_wing"
+
+//Routers
+
+/area/router
+ name = "Router"
+ icon_state = "yellow"
+ ambientsounds = ENGINEERING
+
+/area/router/service
+ name = "Service Router"
+ icon_state = "green"
+
+/area/router/public
+ name = "Public Router"
+ icon_state = "yellow"
+
+/area/router/sec
+ name = "Security Router"
+ icon_state = "blue"
+
+/area/router/medsci
+ name = "MedSci Router"
+ icon_state = "yellow"
+
+/area/router/eva
+ name = "EVA Router"
+ icon_state = "yellow"
+
+/area/router/air
+ name = "Airbridge Router"
+ icon_state = "red"
+
+/area/router/eng
+ name = "Engineering Router"
+ icon_state = "yellow"
+
+/area/router/aux
+ name = "Routing System"
+ icon_state = "yellow"
+ requires_power = FALSE
+ has_gravity = STANDARD_GRAVITY
+ always_unpowered = TRUE
+ dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
+ power_light = FALSE
+ power_equip = FALSE
+ power_environ = FALSE
+ valid_territory = FALSE
+ outdoors = TRUE
+ ambientsounds = SPACE
+ blob_allowed = FALSE //While part of the station, what good will it do you?
\ No newline at end of file
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index ac56d6f17c..fe9f2a676e 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -63,6 +63,7 @@
var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default?
var/list/canSmoothWithAreas //typecache to limit the areas that atoms in this area can smooth with
+
/// Color on minimaps, if it's null (which is default) it makes one at random.
var/minimap_color
diff --git a/code/game/area/areas/holodeck.dm b/code/game/area/areas/holodeck.dm
index 10e3249d64..75ed2b656c 100644
--- a/code/game/area/areas/holodeck.dm
+++ b/code/game/area/areas/holodeck.dm
@@ -6,6 +6,8 @@
hidden = TRUE
var/obj/machinery/computer/holodeck/linked
+ var/list/compatible_holodeck_comps
+ var/abstract_type = /area/holodeck
var/restricted = 0 // if true, program goes on emag list
/*
@@ -53,6 +55,8 @@
*/
/area/holodeck/rec_center
name = "\improper Recreational Holodeck"
+ compatible_holodeck_comps = list(/obj/machinery/computer/holodeck)
+ abstract_type = /area/holodeck/rec_center
/area/holodeck/rec_center/offline
name = "Holodeck - Offline"
@@ -99,6 +103,9 @@
/area/holodeck/rec_center/winterwonderland
name = "Holodeck - Winter Wonderland"
+/area/holodeck/rec_center/wrestlingarena
+ name = "Holodeck - Wrestling Arena"
+
// Bad programs
/area/holodeck/rec_center/burn
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index d8d7ce3d91..266d5b5bb5 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -694,14 +694,64 @@
/atom/vv_get_dropdown()
. = ..()
- . += "---"
- var/turf/curturf = get_turf(src)
- if (curturf)
- .["Jump to"] = "?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]"
- .["Modify Transform"] = "?_src_=vars;[HrefToken()];modtransform=[REF(src)]"
- .["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=[REF(src)]"
- .["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=[REF(src)]"
- .["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=[REF(src)]"
+ VV_DROPDOWN_OPTION("", "---------")
+ if(!ismovableatom(src))
+ var/turf/curturf = get_turf(src)
+ if(curturf)
+ . += "Jump To "
+ VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRANSFORM, "Modify Transform")
+ VV_DROPDOWN_OPTION(VV_HK_ADD_REAGENT, "Add Reagent")
+ VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EMP, "EMP Pulse")
+ VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EXPLOSION, "Explosion")
+
+/atom/vv_do_topic(list/href_list)
+ . = ..()
+ if(href_list[VV_HK_ADD_REAGENT] && check_rights(R_VAREDIT))
+ if(!reagents)
+ var/amount = input(usr, "Specify the reagent size of [src]", "Set Reagent Size", 50) as num
+ if(amount)
+ create_reagents(amount)
+
+ if(reagents)
+ var/chosen_id = choose_reagent_id(usr)
+ if(chosen_id)
+ var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", reagents.maximum_volume) as num
+ if(amount)
+ reagents.add_reagent(chosen_id, amount)
+ log_admin("[key_name(usr)] has added [amount] units of [chosen_id] to [src]")
+ message_admins("[key_name(usr)] has added [amount] units of [chosen_id] to [src] ")
+ if(href_list[VV_HK_TRIGGER_EXPLOSION] && check_rights(R_FUN))
+ usr.client.cmd_admin_explosion(src)
+ if(href_list[VV_HK_TRIGGER_EMP] && check_rights(R_FUN))
+ usr.client.cmd_admin_emp(src)
+ if(href_list[VV_HK_MODIFY_TRANSFORM] && check_rights(R_VAREDIT))
+ var/result = input(usr, "Choose the transformation to apply","Transform Mod") as null|anything in list("Scale","Translate","Rotate")
+ var/matrix/M = transform
+ switch(result)
+ if("Scale")
+ var/x = input(usr, "Choose x mod","Transform Mod") as null|num
+ var/y = input(usr, "Choose y mod","Transform Mod") as null|num
+ if(!isnull(x) && !isnull(y))
+ transform = M.Scale(x,y)
+ if("Translate")
+ var/x = input(usr, "Choose x mod","Transform Mod") as null|num
+ var/y = input(usr, "Choose y mod","Transform Mod") as null|num
+ if(!isnull(x) && !isnull(y))
+ transform = M.Translate(x,y)
+ if("Rotate")
+ var/angle = input(usr, "Choose angle to rotate","Transform Mod") as null|num
+ if(!isnull(angle))
+ transform = M.Turn(angle)
+ if(href_list[VV_HK_AUTO_RENAME] && check_rights(R_VAREDIT))
+ var/newname = input(usr, "What do you want to rename this to?", "Automatic Rename") as null|text
+ if(newname)
+ vv_auto_rename(newname)
+
+/atom/vv_get_header()
+ . = ..()
+ var/refid = REF(src)
+ . += "[VV_HREF_TARGETREF(refid, VV_HK_AUTO_RENAME, "[src] ")]"
+ . += "<< [dir2text(dir) || dir] >> "
/atom/proc/drop_location()
var/atom/L = loc
@@ -709,6 +759,9 @@
return null
return L.AllowDrop() ? L : L.drop_location()
+/atom/proc/vv_auto_rename(newname)
+ name = newname
+
/atom/Entered(atom/movable/AM, atom/oldLoc)
SEND_SIGNAL(src, COMSIG_ATOM_ENTERED, AM, oldLoc)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index d8f54e9993..6089d11d6c 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -468,9 +468,8 @@
/atom/movable/vv_get_dropdown()
. = ..()
- . -= "Jump to"
- .["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=[REF(src)]"
- .["Get"] = "?_src_=holder;[HrefToken()];admingetmovable=[REF(src)]"
+ . += "Follow "
+ . += "Get "
/atom/movable/proc/ex_check(ex_id)
if(!ex_id)
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 1a57cf5051..413484b99b 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -147,7 +147,6 @@
return "health-85"
else
return "health-100"
- return "0"
//HOOKS
@@ -323,7 +322,6 @@
return "crit"
else
return "dead"
- return "dead"
//Sillycone hooks
/mob/living/silicon/proc/diag_hud_set_health()
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 4db8f4129a..8029685bf7 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -119,7 +119,6 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th
C.appearance = chosen_prof.appearance_list[slot]
C.name = chosen_prof.name_list[slot]
C.flags_cover = chosen_prof.flags_cover_list[slot]
- C.item_color = chosen_prof.item_color_list[slot]
C.item_state = chosen_prof.item_state_list[slot]
if(equip)
user.equip_to_slot_or_del(C, GLOB.slot2slot[slot])
diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm
index 15d7744205..7b798f19e4 100644
--- a/code/game/gamemodes/clock_cult/clock_cult.dm
+++ b/code/game/gamemodes/clock_cult/clock_cult.dm
@@ -45,8 +45,11 @@ Credit where due:
// PROCS //
///////////
-/proc/is_servant_of_ratvar(mob/M)
- return istype(M) && !isobserver(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/clockcult)
+/proc/is_servant_of_ratvar(mob/M, require_full_power = FALSE, holy_water_check = FALSE)
+ if(!istype(M) || isobserver(M))
+ return FALSE
+ var/datum/antagonist/clockcult/D = M?.mind?.has_antag_datum(/datum/antagonist/clockcult)
+ return D && (!require_full_power || !D.neutered) && (!holy_water_check || !D.ignore_holy_water)
/proc/is_eligible_servant(mob/M)
if(!istype(M))
@@ -70,12 +73,14 @@ Credit where due:
return TRUE
return FALSE
-/proc/add_servant_of_ratvar(mob/L, silent = FALSE, create_team = TRUE)
+/proc/add_servant_of_ratvar(mob/L, silent = FALSE, create_team = TRUE, override_type)
if(!L || !L.mind)
return
var/update_type = /datum/antagonist/clockcult
if(silent)
update_type = /datum/antagonist/clockcult/silent
+ if(override_type) //prioritizes
+ update_type = override_type
var/datum/antagonist/clockcult/C = new update_type(L.mind)
C.make_team = create_team
C.show_in_roundend = create_team //tutorial scarabs begone
@@ -105,9 +110,6 @@ Credit where due:
L.playsound_local(get_turf(L), 'sound/ambience/antag/clockcultalr.ogg', 40, TRUE, frequency = 100000, pressure_affected = FALSE)
flash_color(L, flash_color = list("#BE8700", "#BE8700", "#BE8700", rgb(0,0,0)), flash_time = 5)
-
-
-
/proc/remove_servant_of_ratvar(mob/L, silent = FALSE)
if(!L || !L.mind)
return
diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm
index 0a231a5ff1..4d3ea2d02e 100644
--- a/code/game/gamemodes/clown_ops/clown_weapons.dm
+++ b/code/game/gamemodes/clown_ops/clown_weapons.dm
@@ -63,7 +63,7 @@
attack_verb_on = list("slipped")
clumsy_check = FALSE
sharpness = IS_BLUNT
- item_color = "yellow"
+ sword_color = "yellow"
heat = 0
light_color = "#ffff00"
var/next_trombone_allowed = 0
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 497cc2f1c3..8ec4123201 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -3,8 +3,11 @@
/datum/game_mode
var/list/datum/mind/cult = list()
-/proc/iscultist(mob/living/M)
- return istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/cult)
+/proc/iscultist(mob/living/M, require_full_power = FALSE, holy_water_check = FALSE)
+ if(!istype(M))
+ return FALSE
+ var/datum/antagonist/cult/D = M?.mind?.has_antag_datum(/datum/antagonist/cult)
+ return D && (!require_full_power || !D.neutered) && (!holy_water_check || !D.ignore_holy_water)
/datum/team/cult/proc/is_sacrifice_target(datum/mind/mind)
for(var/datum/objective/sacrifice/sac_objective in objectives)
@@ -93,7 +96,7 @@
add_cultist(cult_mind, 0, equip=TRUE)
if(!main_cult)
var/datum/antagonist/cult/C = cult_mind.has_antag_datum(/datum/antagonist/cult,TRUE)
- if(C && C.cult_team)
+ if(C?.cult_team)
main_cult = C.cult_team
..()
diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm
index de57bf0402..d548f373db 100644
--- a/code/game/gamemodes/dynamic/dynamic.dm
+++ b/code/game/gamemodes/dynamic/dynamic.dm
@@ -54,12 +54,18 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
// Current storyteller
var/datum/dynamic_storyteller/storyteller = null
// Threat logging vars
+ /// Starting threat level, for things that increase it but can bring it back down.
+ var/initial_threat_level = 0
/// Target threat level right now. Events and antags will try to keep the round at this level.
var/threat_level = 0
/// The current antag threat. Recalculated every time a ruletype starts or ends.
var/threat = 0
- /// Starting threat level, for things that increase it but can bring it back down.
- var/initial_threat_level = 0
+ /// Threat average over the course of the round, for endgame logs.
+ var/threat_average = 0
+ /// Number of times threat average has been calculated, for calculating above.
+ var/threat_average_weight = 0
+ /// Last time a threat average sample was taken. Used for weighting the rolling average.
+ var/last_threat_sample_time = 0
/// Things that cause a rolling threat adjustment to be displayed at roundend.
var/list/threat_tallies = list()
/// Running information about the threat. Can store text or datum entries.
@@ -199,7 +205,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
if(threatadd > 0)
create_threat(threatadd)
else
- spend_threat(-threatadd)
+ remove_threat(threatadd)
else if (href_list["injectlate"])
latejoin_injection_cooldown = 0
forced_injection = TRUE
@@ -241,6 +247,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
. += "Peaceful Waypoint "
. += "Your station orbits deep within controlled, core-sector systems and serves as a waypoint for routine traffic through Nanotrasen's trade empire. Due to the combination of high security, interstellar traffic, and low strategic value, it makes any direct threat of violence unlikely. Your primary enemies will be incompetence and bored crewmen: try to organize team-building events to keep staffers interested and productive. However, even deep in our territory there may be subversive elements, especially for such a high-value target as your station. Keep an eye out, but don't expect much trouble."
set_security_level(SEC_LEVEL_GREEN)
+ station_goals.len = 0
for(var/T in subtypesof(/datum/station_goal))
var/datum/station_goal/G = new T
if(!(G in station_goals))
@@ -251,6 +258,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
. += "Core Territory "
. += "Your station orbits within reliably mundane, secure space. Although Nanotrasen has a firm grip on security in your region, the valuable resources and strategic position aboard your station make it a potential target for infiltrations. Monitor crew for non-loyal behavior, but expect a relatively tame shift free of large-scale destruction. We expect great things from your station."
set_security_level(SEC_LEVEL_GREEN)
+ station_goals.len = 0
for(var/T in subtypesof(/datum/station_goal))
var/datum/station_goal/G = new T
if(!(G in station_goals))
@@ -490,7 +498,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
starting_rule = pickweight(drafted_rules)
// Check if the ruleset is highlander and if a highlander ruleset has been executed
else if(starting_rule.flags & HIGHLANDER_RULESET) // Should already be filtered out, but making sure. Check filtering at end of proc if reported.
- if(threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking)
+ if(threat_level <= GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking)
if(highlander_executed)
drafted_rules -= starting_rule
if(drafted_rules.len <= 0)
@@ -511,7 +519,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
drafted_rules -= starting_rule
starting_rule.trim_candidates()
- starting_rule.scale_up(extra_rulesets_amount, threat)
+ starting_rule.scale_up(extra_rulesets_amount, threat_level)
if (starting_rule.pre_execute())
log_threat("[starting_rule.ruletype] - [starting_rule.name] [starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat", verbose = TRUE)
if(starting_rule.flags & HIGHLANDER_RULESET)
@@ -715,6 +723,16 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
continue
current_players[CURRENT_DEAD_PLAYERS].Add(M) // Players who actually died (and admins who ghosted, would be nice to avoid counting them somehow)
threat = storyteller.calculate_threat() + added_threat
+ if(threat_average_weight)
+ var/cur_sample_weight = world.time - last_threat_sample_time
+ threat_average = ((threat_average * threat_average_weight) + (threat * cur_sample_weight)) / (threat_average_weight + cur_sample_weight)
+ threat_average_weight += cur_sample_weight
+ last_threat_sample_time = world.time
+ else
+ threat_average = threat
+ threat_average_weight++
+ last_threat_sample_time = world.time
+
/// Removes type from the list
/datum/game_mode/dynamic/proc/remove_from_list(list/type_list, type)
for(var/I in type_list)
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm
index f6755057e2..da33da5f43 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm
@@ -222,6 +222,26 @@
message_admins("[M.name] was made into a bloodsucker by dynamic.")
return TRUE
+//////////////////////////////////////////////
+// //
+// CHANGELINGS //
+// //
+//////////////////////////////////////////////
+
+/datum/dynamic_ruleset/latejoin/changeling
+ name = "Changeling Infiltrator"
+ config_tag = "latejoin_changeling"
+ antag_flag = ROLE_CHANGELING
+ antag_datum = /datum/antagonist/changeling
+ restricted_roles = list("AI", "Cyborg")
+ protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster")
+ required_candidates = 1
+ weight = 3
+ cost = 15
+ requirements = list(101,101,101,101,101,101,101,101,101,101)
+ property_weights = list("trust" = -2, "valid" = 2)
+ high_population_requirement = 101
+
//////////////////////////////////////////////
// //
// COLLECTOR //
@@ -241,5 +261,5 @@
requirements = list(10,10,10,10,10,10,10,10,10,10)
high_population_requirement = 10
repeatable = TRUE
- flags = TRAITOR_RULESET
+ flags = TRAITOR_RULESET | MINOR_RULESET
property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 2)
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
index b746100f27..48e306b2b5 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
@@ -34,8 +34,7 @@
living_players = trim_list(mode.current_players[CURRENT_LIVING_PLAYERS])
living_antags = trim_list(mode.current_players[CURRENT_LIVING_ANTAGS])
list_observers = trim_list(mode.current_players[CURRENT_OBSERVERS])
- var/datum/element/ghost_role_eligibility/eligibility = SSdcs.GetElement(list(/datum/element/ghost_role_eligibility))
- ghost_eligible = trim_list(eligibility.get_all_ghost_role_eligible())
+ ghost_eligible = trim_list(get_all_ghost_role_eligible())
/datum/dynamic_ruleset/midround/proc/trim_list(list/L = list())
var/list/trimmed_list = L.Copy()
diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm
index 71eb7ec533..c37eb9bc2a 100644
--- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm
+++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm
@@ -11,6 +11,7 @@
WAROPS_ALWAYS_ALLOWED: Can always do warops, regardless of threat level.
USE_PREF_WEIGHTS: Will use peoples' preferences to change the threat centre.
FORCE_IF_WON: If this mode won the vote, forces it
+ USE_PREV_ROUND_WEIGHTS: Changes its threat centre based on the average chaos of previous rounds.
*/
var/flags = 0
var/dead_player_weight = 1 // How much dead players matter for threat calculation
@@ -53,6 +54,8 @@ Property weights are:
var/turf/T = get_turf(H)
if(H.stat != DEAD && is_station_level(T.z) && !("Station" in H.faction))
threat += H.threat()
+ for(var/obj/item/phylactery/P in GLOB.poi_list)
+ threat += 25 // can't be giving them too much of a break
for (var/mob/M in mode.current_players[CURRENT_LIVING_PLAYERS])
if (M?.mind?.assigned_role && M.stat != DEAD)
var/datum/job/J = SSjob.GetJob(M.mind.assigned_role)
@@ -90,6 +93,8 @@ Property weights are:
mean += 5
if(voters)
GLOB.dynamic_curve_centre += (mean/voters)
+ if(flags & USE_PREV_ROUND_WEIGHTS)
+ GLOB.dynamic_curve_centre += (50 - SSpersistence.average_dynamic_threat) / 10
GLOB.dynamic_forced_threat_level = forced_threat_level
/datum/dynamic_storyteller/proc/get_midround_cooldown()
@@ -135,17 +140,19 @@ Property weights are:
if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET)))
continue
rule.trim_candidates()
- var/cost_difference = abs(rule.cost-(mode.threat_level-mode.threat))
- /* Basically, the closer the cost is to the current threat-level-away-from-threat, the more likely it is to
- pick this particular ruleset.
- Let's use a toy example: there's 60 threat level and 10 threat spent.
- We want to pick a ruleset that's close to that, so we run the below equation, on two rulesets.
- Ruleset 1 has 30 cost, ruleset 2 has 5 cost.
- When we do the math, ruleset 1's threat_weight is 0.538, and ruleset 2's is 0.238, meaning ruleset 1
- is 2.26 times as likely to be picked, all other things considered.
- Of course, we don't want it to GUARANTEE the closest, that's no fun, so it's just a weight.
- */
- var/threat_weight = 1-abs(1-LOGISTIC_FUNCTION(2,0.05,cost_difference,0))
+ var/threat_weight = 1
+ if(!(rule.flags & MINOR_RULESET)) // makes the traitor rulesets always possible anyway
+ var/cost_difference = abs(rule.cost-(mode.threat_level-mode.threat))
+ /* Basically, the closer the cost is to the current threat-level-away-from-threat, the more likely it is to
+ pick this particular ruleset.
+ Let's use a toy example: there's 60 threat level and 10 threat spent.
+ We want to pick a ruleset that's close to that, so we run the below equation, on two rulesets.
+ Ruleset 1 has 30 cost, ruleset 2 has 5 cost.
+ When we do the math, ruleset 1's threat_weight is 0.538, and ruleset 2's is 0.238, meaning ruleset 1
+ is 2.26 times as likely to be picked, all other things considered.
+ Of course, we don't want it to GUARANTEE the closest, that's no fun, so it's just a weight.
+ */
+ threat_weight = 1-abs(1-LOGISTIC_FUNCTION(2,0.05,cost_difference,0))
if (rule.ready())
var/property_weight = 0
for(var/property in property_weights)
@@ -168,8 +175,10 @@ Property weights are:
rule.candidates = list(newPlayer)
rule.trim_candidates()
- var/cost_difference = abs(rule.cost-(mode.threat_level-mode.threat))
- var/threat_weight = 1-abs(1-(LOGISTIC_FUNCTION(2,0.05,cost_difference,0)))
+ var/threat_weight = 1
+ if(!(rule.flags & MINOR_RULESET))
+ var/cost_difference = abs(rule.cost-(mode.threat_level-mode.threat))
+ threat_weight = 1-abs(1-(LOGISTIC_FUNCTION(2,0.05,cost_difference,0)))
if (rule.ready())
var/property_weight = 0
for(var/property in property_weights)
@@ -200,7 +209,7 @@ Property weights are:
weight = 1
event_frequency_lower = 2 MINUTES
event_frequency_upper = 10 MINUTES
- flags = WAROPS_ALWAYS_ALLOWED | FORCE_IF_WON
+ flags = WAROPS_ALWAYS_ALLOWED
min_players = 40
var/refund_cooldown = 0
@@ -224,7 +233,7 @@ Property weights are:
curve_width = 1.5
weight = 2
min_players = 30
- flags = WAROPS_ALWAYS_ALLOWED
+ flags = WAROPS_ALWAYS_ALLOWED | USE_PREV_ROUND_WEIGHTS
property_weights = list("valid" = 3, "trust" = 5)
/datum/dynamic_storyteller/team/get_injection_chance(dry_run = FALSE)
@@ -245,7 +254,10 @@ Property weights are:
config_tag = "random"
weight = 1
desc = "No weighting at all; every ruleset has the same chance of happening. Cooldowns vary wildly. As random as it gets."
- forced_threat_level = 100
+
+/datum/dynamic_storyteller/random/on_start()
+ ..()
+ GLOB.dynamic_forced_threat_level = rand(0,100)
/datum/dynamic_storyteller/random/get_midround_cooldown()
return rand(GLOB.dynamic_midround_delay_min/2, GLOB.dynamic_midround_delay_max*2)
@@ -259,9 +271,6 @@ Property weights are:
/datum/dynamic_storyteller/random/get_injection_chance()
return 50 // i would do rand(0,100) but it's actually the same thing when you do the math
-/datum/dynamic_storyteller/random/calculate_threat()
- return 0 // what IS threat
-
/datum/dynamic_storyteller/random/roundstart_draft()
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/roundstart/rule in mode.roundstart_rules)
@@ -315,18 +324,20 @@ Property weights are:
desc = "Antags with options for loadouts and gimmicks. Traitor, wizard, nukies. Has a buildup-climax-falling action threat curve."
weight = 2
curve_width = 2
+ flags = USE_PREV_ROUND_WEIGHTS
property_weights = list("story_potential" = 2)
-/datum/dynamic_storyteller/story/do_process()
+/datum/dynamic_storyteller/story/calculate_threat()
var/current_time = (world.time / SSautotransfer.targettime)*180
- mode.threat_level = round(mode.initial_threat_level*(sin(current_time)+0.5),0.1)
+ mode.threat_level = round(mode.initial_threat_level*(sin(current_time)+0.25),0.1)
+ ..()
/datum/dynamic_storyteller/classic
name = "Classic"
config_tag = "classic"
desc = "No special antagonist weights. Good variety, but not like random. Uses your chaos preference to weight."
- flags = USE_PREF_WEIGHTS
+ flags = USE_PREF_WEIGHTS | USE_PREV_ROUND_WEIGHTS
/datum/dynamic_storyteller/suspicion
name = "Intrigue"
@@ -335,6 +346,7 @@ Property weights are:
weight = 2
curve_width = 2
dead_player_weight = 2
+ flags = USE_PREV_ROUND_WEIGHTS
property_weights = list("trust" = -3)
/datum/dynamic_storyteller/liteextended
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index b42b41aba4..4497f9faef 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -663,7 +663,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
if(count)
target_amount = count
update_explanation_text()
-
+/*
/datum/objective/capture
name = "capture"
var/captured_amount = 0
@@ -709,7 +709,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
if(count)
target_amount = count
update_explanation_text()
-
+*/
//Changeling Objectives
/datum/objective/absorb
diff --git a/code/game/gamemodes/objective_sabotage.dm b/code/game/gamemodes/objective_sabotage.dm
index 3cc5bc4aa8..d2cdd2e029 100644
--- a/code/game/gamemodes/objective_sabotage.dm
+++ b/code/game/gamemodes/objective_sabotage.dm
@@ -77,14 +77,14 @@
/datum/sabotage_objective/processing/supermatter/can_run()
return (locate(/obj/machinery/power/supermatter_crystal) in GLOB.machines)
-
+/*
/datum/sabotage_objective/station_integrity
name = "Make sure the station is at less than 80% integrity by the end. Smash walls, windows etc. to reach this goal."
sabotage_type = "integrity"
/datum/sabotage_objective/station_integrity/check_conditions()
return 5-(max(SSticker.station_integrity*4,320)/80)
-
+*/
/datum/sabotage_objective/cloner
name = "Destroy all Nanotrasen cloning machines."
sabotage_type = "cloner"
@@ -98,6 +98,9 @@
special_equipment = list(/obj/item/aiModule/syndicate)
excludefromjob = list("Chief Engineer","Research Director","Head of Personnel","Captain","Chief Medical Officer","Head Of Security")
+/datum/sabotage_objective/ai_law/can_run()
+ return length(active_ais())
+
/datum/sabotage_objective/ai_law/check_conditions()
for (var/i in GLOB.ai_list)
var/mob/living/silicon/ai/aiPlayer = i
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index cdae0ea713..42904383bb 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -207,11 +207,14 @@
/obj/machinery/sleeper/ui_data()
var/list/data = list()
+ var/chemical_list = list()
+ var/blood_percent = 0
+
data["occupied"] = occupant ? 1 : 0
data["open"] = state_open
- data["efficiency"] = efficiency
- data["current_vol"] = reagents.total_volume
- data["tot_capacity"] = reagents.maximum_volume
+ data["blood_levels"] = blood_percent
+ data["blood_status"] = "Patient either has no blood, or does not require it to function."
+ data["chemical_list"] = chemical_list
data["chems"] = list()
for(var/chem in available_chems)
@@ -247,10 +250,13 @@
data["occupant"]["fireLoss"] = mob_occupant.getFireLoss()
data["occupant"]["cloneLoss"] = mob_occupant.getCloneLoss()
data["occupant"]["brainLoss"] = mob_occupant.getOrganLoss(ORGAN_SLOT_BRAIN)
- data["occupant"]["reagents"] = list()
- if(mob_occupant.reagents && mob_occupant.reagents.reagent_list.len)
+
+ if(mob_occupant.reagents.reagent_list.len)
for(var/datum/reagent/R in mob_occupant.reagents.reagent_list)
- data["occupant"]["reagents"] += list(list("name" = R.name, "volume" = R.volume))
+ chemical_list += list(list("name" = R.name, "volume" = R.volume))
+ else
+ chemical_list = "Patient has no reagents."
+
data["occupant"]["failing_organs"] = list()
var/mob/living/carbon/C = mob_occupant
if(C)
@@ -259,21 +265,25 @@
continue
data["occupant"]["failing_organs"] += list(list("name" = Or.name))
- if(mob_occupant.has_dna()) // Blood-stuff is mostly a copy-paste from the healthscanner.
- var/blood_id = C.get_blood_id()
- if(blood_id)
- data["occupant"]["blood"] = list() // We can start populating this list.
- var/blood_type = C.dna.blood_type
- if(!(blood_id in GLOB.blood_reagent_types)) // special blood substance
- var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
- if(R)
- blood_type = R.name
- else
- blood_type = blood_id
- data["occupant"]["blood"]["maxBloodVolume"] = (BLOOD_VOLUME_NORMAL*C.blood_ratio)
- data["occupant"]["blood"]["currentBloodVolume"] = C.blood_volume
- data["occupant"]["blood"]["dangerBloodVolume"] = BLOOD_VOLUME_SAFE
- data["occupant"]["blood"]["bloodType"] = blood_type
+ if(istype(C)) //Non-carbons shouldn't be able to enter sleepers, but this is to prevent runtimes if something ever breaks
+ if(mob_occupant.has_dna()) // Blood-stuff is mostly a copy-paste from the healthscanner.
+ blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL)*100)
+ var/blood_id = C.get_blood_id()
+ var/blood_warning = ""
+ if(blood_percent < 80)
+ blood_warning = "Patient has low blood levels."
+ if(blood_percent < 60)
+ blood_warning = "Patient has DANGEROUSLY low blood levels."
+ if(blood_id)
+ var/blood_type = C.dna.blood_type
+ if(!(blood_id in GLOB.blood_reagent_types)) // special blood substance
+ var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
+ if(R)
+ blood_type = R.name
+ else
+ blood_type = blood_id
+ data["blood_status"] = "Patient has [blood_type] type blood. [blood_warning]"
+ data["blood_levels"] = blood_percent
return data
/obj/machinery/sleeper/ui_act(action, params)
@@ -309,14 +319,14 @@
if(allowed(usr))
if(!is_operational())
return
- reagents.remove_reagent(chem, 10)
+ reagents.remove_reagent(chem, 1000)
return
if(chem in available_chems)
if(!is_operational())
return
/*var/datum/reagent/R = reagents.has_reagent(chem) //For when purity effects are in
if(R.purity < 0.8)*/
- reagents.remove_reagent(chem, 10)
+ reagents.remove_reagent(chem, 1000)
else
visible_message("Access Denied. ")
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index c8b8e7c9cd..e386674b9e 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -381,14 +381,12 @@
for(var/obj/machinery/camera/C in oview(4, M))
if(C.can_use()) // check if camera disabled
return C
- break
return null
/proc/near_range_camera(var/mob/M)
for(var/obj/machinery/camera/C in range(4, M))
if(C.can_use()) // check if camera disabled
return C
- break
return null
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index b561224668..f78a05244e 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -55,7 +55,7 @@
/obj/item/stack/tile/fakespace/loaded = ARCADE_WEIGHT_TRICK,
/obj/item/stack/tile/fakepit/loaded = ARCADE_WEIGHT_TRICK,
/obj/item/restraints/handcuffs/fake = ARCADE_WEIGHT_TRICK,
- /obj/item/clothing/gloves/rapid/hug = ARCADE_WEIGHT_TRICK,
+ /obj/item/clothing/gloves/fingerless/pugilist/rapid/hug = ARCADE_WEIGHT_TRICK,
/obj/item/grenade/chem_grenade/glitter/pink = ARCADE_WEIGHT_TRICK,
/obj/item/grenade/chem_grenade/glitter/blue = ARCADE_WEIGHT_TRICK,
diff --git a/code/game/machinery/computer/arcade/minesweeper.dm b/code/game/machinery/computer/arcade/minesweeper.dm
index 3e32c4ceeb..370f85b4b9 100644
--- a/code/game/machinery/computer/arcade/minesweeper.dm
+++ b/code/game/machinery/computer/arcade/minesweeper.dm
@@ -159,6 +159,8 @@
if(CHECK_BITFIELD(obj_flags, EMAGGED) && !exploding_hell)
exploding_hell = TRUE
explode_EVERYTHING()
+ if(QDELETED(src))
+ return
if(mine_sound)
switch(rand(1,3)) //Play every time a mine is hit
if(1)
@@ -367,10 +369,10 @@
var/row_limit = rows-1
var/column_limit = columns-1
var/mine_limit_v2 = mine_limit
- if(rows > 11)
- row_limit = 10
- if(columns > 11)
- column_limit = 10
+ if(rows > 21)
+ row_limit = 20
+ if(columns > 21)
+ column_limit = 20
if(mine_limit > (rows*columns) * 0.25)
mine_limit_v2 = 24
message_admins("[key_name_admin(user)] failed an emagged Minesweeper arcade and has unleashed an explosion armageddon of size [row_limit],[column_limit] around [ADMIN_LOOKUPFLW(user.loc)]!")
@@ -378,15 +380,38 @@
explosion(loc, 2, 5, 10, 15) //Thought you could survive by putting as few mines as possible, huh??
else
explosion(loc, 1, 3, rand(1,5), rand(1,10))
- for(var/y69=y-row_limit;y69Message transmitted to Central Command. ")
+ for(var/client/X in GLOB.admins)
+ if(X.prefs.toggles & SOUND_ADMINHELP)
+ SEND_SOUND(X, sound('sound/effects/printer.ogg'))
+ window_flash(X, ignorepref = FALSE)
usr.log_talk(input, LOG_SAY, tag="CentCom announcement")
deadchat_broadcast("[usr.real_name] has messaged CentCom, \"[input]\" at [get_area_name(usr, TRUE)] . ", usr)
CM.lastTimeUsed = world.time
@@ -309,6 +313,10 @@
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
Syndicate_announce(input, usr)
to_chat(usr, "SYSERR @l(19833)of(transmit.dm): !@$ MESSAGE TRANSMITTED TO SYNDICATE COMMAND. ")
+ for(var/client/X in GLOB.admins)
+ if(X.prefs.toggles & SOUND_ADMINHELP)
+ SEND_SOUND(X, sound('sound/effects/printer.ogg'))
+ window_flash(X, ignorepref = FALSE)
usr.log_talk(input, LOG_SAY, tag="Syndicate announcement")
deadchat_broadcast("[usr.real_name] has messaged the Syndicate, \"[input]\" at [get_area_name(usr, TRUE)] . ", usr)
CM.lastTimeUsed = world.time
diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm
index 0f5e51215d..d01f7e3e40 100644
--- a/code/game/machinery/launch_pad.dm
+++ b/code/game/machinery/launch_pad.dm
@@ -57,7 +57,7 @@
var/turf/target = locate(target_x, target_y, z)
ghost.forceMove(target)
-/obj/machinery/launchpad/proc/isAvailable()
+/obj/machinery/launchpad/proc/isAvailable(silent = FALSE)
if(stat & NOPOWER)
return FALSE
if(panel_open)
@@ -198,7 +198,7 @@
QDEL_NULL(briefcase)
return ..()
-/obj/machinery/launchpad/briefcase/isAvailable()
+/obj/machinery/launchpad/briefcase/isAvailable(silent = FALSE)
if(closed)
return FALSE
return ..()
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index c05fbe229c..000585a4be 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -469,7 +469,6 @@ GLOBAL_LIST_EMPTY(allConsoles)
if(newmessagepriority < EXTREME_MESSAGE_PRIORITY)
newmessagepriority = EXTREME_MESSAGE_PRIORITY
update_icon()
- if(1)
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
say(title)
messages += "!!!Extreme Priority!!! From: [linkedsender] [message]"
diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm
index 6b03bcc880..d16835eee7 100644
--- a/code/game/machinery/telecomms/machines/broadcaster.dm
+++ b/code/game/machinery/telecomms/machines/broadcaster.dm
@@ -17,6 +17,11 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
idle_power_usage = 25
circuit = /obj/item/circuitboard/machine/telecomms/broadcaster
+/obj/machinery/telecomms/broadcaster/RefreshParts()
+ idle_power_usage = 25
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ idle_power_usage -= (P.rating * 1.5) //Has 2 manipulators
+
/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from)
// Don't broadcast rejected signals
if(!istype(signal))
diff --git a/code/game/machinery/telecomms/machines/bus.dm b/code/game/machinery/telecomms/machines/bus.dm
index ce5ed31094..4732c5bddd 100644
--- a/code/game/machinery/telecomms/machines/bus.dm
+++ b/code/game/machinery/telecomms/machines/bus.dm
@@ -19,6 +19,11 @@
circuit = /obj/item/circuitboard/machine/telecomms/bus
var/change_frequency = 0
+/obj/machinery/telecomms/bus/RefreshParts()
+ idle_power_usage = 50
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ idle_power_usage -= (P.rating * 2) //Has 2 manipulators
+
/obj/machinery/telecomms/bus/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from)
if(!istype(signal) || !is_freq_listening(signal))
return
diff --git a/code/game/machinery/telecomms/machines/hub.dm b/code/game/machinery/telecomms/machines/hub.dm
index e7e3788774..e960dab422 100644
--- a/code/game/machinery/telecomms/machines/hub.dm
+++ b/code/game/machinery/telecomms/machines/hub.dm
@@ -19,6 +19,11 @@
netspeed = 40
circuit = /obj/item/circuitboard/machine/telecomms/hub
+/obj/machinery/telecomms/hub/RefreshParts()
+ idle_power_usage = 80
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ idle_power_usage -= (P.rating * 5) //Has 2 manipulators
+
/obj/machinery/telecomms/hub/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(!is_freq_listening(signal))
return
diff --git a/code/game/machinery/telecomms/machines/processor.dm b/code/game/machinery/telecomms/machines/processor.dm
index a09b3ca8fb..269f5269f3 100644
--- a/code/game/machinery/telecomms/machines/processor.dm
+++ b/code/game/machinery/telecomms/machines/processor.dm
@@ -16,6 +16,11 @@
circuit = /obj/item/circuitboard/machine/telecomms/processor
var/process_mode = 1 // 1 = Uncompress Signals, 0 = Compress Signals
+/obj/machinery/telecomms/processor/RefreshParts()
+ idle_power_usage = 30
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ idle_power_usage -= (P.rating * 1.5) //Has 2 manipulators
+
/obj/machinery/telecomms/processor/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from)
if(!is_freq_listening(signal))
return
diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm
index 4dd3af036c..0e443bad8f 100644
--- a/code/game/machinery/telecomms/machines/receiver.dm
+++ b/code/game/machinery/telecomms/machines/receiver.dm
@@ -15,6 +15,11 @@
idle_power_usage = 30
circuit = /obj/item/circuitboard/machine/telecomms/receiver
+/obj/machinery/telecomms/receiver/RefreshParts()
+ idle_power_usage = 30
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ idle_power_usage -= (P.rating * 1.5) //Has 2 manipulators
+
/obj/machinery/telecomms/receiver/receive_signal(datum/signal/subspace/signal)
if(!on || !istype(signal) || !check_receive_level(signal) || signal.transmission_method != TRANSMISSION_SUBSPACE)
return
diff --git a/code/game/machinery/telecomms/machines/relay.dm b/code/game/machinery/telecomms/machines/relay.dm
index 65f70a4f23..10328f0788 100644
--- a/code/game/machinery/telecomms/machines/relay.dm
+++ b/code/game/machinery/telecomms/machines/relay.dm
@@ -19,6 +19,11 @@
var/broadcasting = 1
var/receiving = 1
+/obj/machinery/telecomms/relay/RefreshParts()
+ idle_power_usage = 30
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ idle_power_usage -= (P.rating * 1.5) //Has 2 manipulators
+
/obj/machinery/telecomms/relay/receive_information(datum/signal/subspace/signal, obj/machinery/telecomms/machine_from)
// Add our level and send it back
var/turf/T = get_turf(src)
diff --git a/code/game/machinery/telecomms/machines/server.dm b/code/game/machinery/telecomms/machines/server.dm
index 46b16252c5..ad4599b4c3 100644
--- a/code/game/machinery/telecomms/machines/server.dm
+++ b/code/game/machinery/telecomms/machines/server.dm
@@ -19,6 +19,11 @@
/obj/machinery/telecomms/server/Initialize()
. = ..()
+/obj/machinery/telecomms/server/RefreshParts()
+ idle_power_usage = 15
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ idle_power_usage -= (P.rating) //has 2 manipulators
+
/obj/machinery/telecomms/server/receive_information(datum/signal/subspace/vocal/signal, obj/machinery/telecomms/machine_from)
// can't log non-vocal signals
if(!istype(signal) || !signal.data["message"] || !is_freq_listening(signal))
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index ff5ba14810..26220d4d89 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -1,3 +1,111 @@
+//dye registry, add dye colors and their resulting output here if you want the sprite to change instead of just the color.
+GLOBAL_LIST_INIT(dye_registry, list(
+ DYE_REGISTRY_UNDER = list(
+ DYE_RED = /obj/item/clothing/under/color/red,
+ DYE_ORANGE = /obj/item/clothing/under/color/orange,
+ DYE_YELLOW = /obj/item/clothing/under/color/yellow,
+ DYE_GREEN = /obj/item/clothing/under/color/green,
+ DYE_BLUE = /obj/item/clothing/under/color/blue,
+ DYE_PURPLE = /obj/item/clothing/under/color/lightpurple,
+ DYE_BLACK = /obj/item/clothing/under/color/black,
+ DYE_WHITE = /obj/item/clothing/under/color/white,
+ DYE_RAINBOW = /obj/item/clothing/under/color/rainbow,
+ DYE_MIME = /obj/item/clothing/under/rank/civilian/mime,
+ DYE_CLOWN = /obj/item/clothing/under/rank/civilian/clown,
+ DYE_QM = /obj/item/clothing/under/rank/cargo/qm,
+ DYE_LAW = /obj/item/clothing/under/suit/black,
+ DYE_CAPTAIN = /obj/item/clothing/under/rank/captain,
+ DYE_HOP = /obj/item/clothing/under/rank/civilian/head_of_personnel,
+ DYE_HOS = /obj/item/clothing/under/rank/security/head_of_security,
+ DYE_CE = /obj/item/clothing/under/rank/engineering/chief_engineer,
+ DYE_RD = /obj/item/clothing/under/rank/rnd/research_director,
+ DYE_CMO = /obj/item/clothing/under/rank/medical/chief_medical_officer,
+ DYE_REDCOAT = /obj/item/clothing/under/costume/redcoat
+ ),
+ DYE_REGISTRY_JUMPSKIRT = list(
+ DYE_RED = /obj/item/clothing/under/color/jumpskirt/red,
+ DYE_ORANGE = /obj/item/clothing/under/color/jumpskirt/orange,
+ DYE_YELLOW = /obj/item/clothing/under/color/jumpskirt/yellow,
+ DYE_GREEN = /obj/item/clothing/under/color/jumpskirt/green,
+ DYE_BLUE = /obj/item/clothing/under/color/jumpskirt/blue,
+ DYE_PURPLE = /obj/item/clothing/under/color/jumpskirt/lightpurple,
+ DYE_BLACK = /obj/item/clothing/under/color/jumpskirt/black,
+ DYE_WHITE = /obj/item/clothing/under/color/jumpskirt/white,
+ DYE_RAINBOW = /obj/item/clothing/under/color/jumpskirt/rainbow
+ ),
+ DYE_REGISTRY_GLOVES = list(
+ DYE_RED = /obj/item/clothing/gloves/color/red,
+ DYE_ORANGE = /obj/item/clothing/gloves/color/orange,
+ DYE_YELLOW = /obj/item/clothing/gloves/color/yellow,
+ DYE_GREEN = /obj/item/clothing/gloves/color/green,
+ DYE_BLUE = /obj/item/clothing/gloves/color/blue,
+ DYE_PURPLE = /obj/item/clothing/gloves/color/purple,
+ DYE_BLACK = /obj/item/clothing/gloves/color/black,
+ DYE_WHITE = /obj/item/clothing/gloves/color/white,
+ DYE_RAINBOW = /obj/item/clothing/gloves/color/rainbow,
+ DYE_MIME = /obj/item/clothing/gloves/color/white,
+ DYE_CLOWN = /obj/item/clothing/gloves/color/rainbow,
+ DYE_QM = /obj/item/clothing/gloves/color/brown,
+ DYE_CAPTAIN = /obj/item/clothing/gloves/color/captain,
+ DYE_HOP = /obj/item/clothing/gloves/color/grey,
+ DYE_HOS = /obj/item/clothing/gloves/color/black,
+ DYE_CE = /obj/item/clothing/gloves/color/black,
+ DYE_RD = /obj/item/clothing/gloves/color/grey,
+ DYE_CMO = /obj/item/clothing/gloves/color/latex/nitrile,
+ DYE_REDCOAT = /obj/item/clothing/gloves/color/white
+ ),
+ DYE_REGISTRY_SNEAKERS = list(
+ DYE_RED = /obj/item/clothing/shoes/sneakers/red,
+ DYE_ORANGE = /obj/item/clothing/shoes/sneakers/orange,
+ DYE_YELLOW = /obj/item/clothing/shoes/sneakers/yellow,
+ DYE_GREEN = /obj/item/clothing/shoes/sneakers/green,
+ DYE_BLUE = /obj/item/clothing/shoes/sneakers/blue,
+ DYE_PURPLE = /obj/item/clothing/shoes/sneakers/purple,
+ DYE_BLACK = /obj/item/clothing/shoes/sneakers/black,
+ DYE_WHITE = /obj/item/clothing/shoes/sneakers/white,
+ DYE_RAINBOW = /obj/item/clothing/shoes/sneakers/rainbow,
+ DYE_MIME = /obj/item/clothing/shoes/sneakers/black,
+ DYE_QM = /obj/item/clothing/shoes/sneakers/brown,
+ DYE_CAPTAIN = /obj/item/clothing/shoes/sneakers/brown,
+ DYE_HOP = /obj/item/clothing/shoes/sneakers/brown,
+ DYE_CE = /obj/item/clothing/shoes/sneakers/brown,
+ DYE_RD = /obj/item/clothing/shoes/sneakers/brown,
+ DYE_CMO = /obj/item/clothing/shoes/sneakers/brown
+ ),
+ DYE_REGISTRY_FANNYPACK = list(
+ DYE_RED = /obj/item/storage/belt/fannypack/red,
+ DYE_ORANGE = /obj/item/storage/belt/fannypack/orange,
+ DYE_YELLOW = /obj/item/storage/belt/fannypack/yellow,
+ DYE_GREEN = /obj/item/storage/belt/fannypack/green,
+ DYE_BLUE = /obj/item/storage/belt/fannypack/blue,
+ DYE_PURPLE = /obj/item/storage/belt/fannypack/purple,
+ DYE_BLACK = /obj/item/storage/belt/fannypack/black,
+ DYE_WHITE = /obj/item/storage/belt/fannypack/white
+ ),
+ DYE_REGISTRY_BEDSHEET = list(
+ DYE_RED = /obj/item/bedsheet/red,
+ DYE_ORANGE = /obj/item/bedsheet/orange,
+ DYE_YELLOW = /obj/item/bedsheet/yellow,
+ DYE_GREEN = /obj/item/bedsheet/green,
+ DYE_BLUE = /obj/item/bedsheet/blue,
+ DYE_PURPLE = /obj/item/bedsheet/purple,
+ DYE_BLACK = /obj/item/bedsheet/black,
+ DYE_WHITE = /obj/item/bedsheet,
+ DYE_RAINBOW = /obj/item/bedsheet/rainbow,
+ DYE_MIME = /obj/item/bedsheet/mime,
+ DYE_CLOWN = /obj/item/bedsheet/clown,
+ DYE_QM = /obj/item/bedsheet/qm,
+ DYE_LAW = /obj/item/bedsheet/black,
+ DYE_CAPTAIN = /obj/item/bedsheet/captain,
+ DYE_HOP = /obj/item/bedsheet/hop,
+ DYE_HOS = /obj/item/bedsheet/hos,
+ DYE_CE = /obj/item/bedsheet/ce,
+ DYE_RD = /obj/item/bedsheet/rd,
+ DYE_CMO = /obj/item/bedsheet/cmo,
+ DYE_COSMIC = /obj/item/bedsheet/cosmos
+ )
+))
+
/obj/machinery/washing_machine
name = "washing machine"
desc = "Gets rid of those pesky bloodstains, or your money back!"
@@ -13,27 +121,22 @@
/obj/machinery/washing_machine/examine(mob/user)
. = ..()
- . += "Alt-click it to start a wash cycle. "
+ if(!busy)
+ . += "Alt-click it to start a wash cycle. "
/obj/machinery/washing_machine/AltClick(mob/user)
. = ..()
if(!user.canUseTopic(src))
return
-
if(busy)
return
-
if(state_open)
to_chat(user, "Close the door first ")
return TRUE
-
if(bloody_mess)
to_chat(user, "[src] must be cleaned up first. ")
return TRUE
- if(has_corgi)
- bloody_mess = 1
-
busy = TRUE
update_icon()
addtimer(CALLBACK(src, .proc/wash_cycle), 200)
@@ -76,6 +179,28 @@
color_source = null
update_icon()
+/obj/item/proc/dye_item(dye_color)
+ if(undyeable)
+ return FALSE
+ if(dying_key)
+ if(!GLOB.dye_registry[dying_key])
+ log_runtime("Item just tried to be dyed with an invalid registry key: [dying_key]")
+ return FALSE
+ var/obj/item/target_type = GLOB.dye_registry[dying_key][dye_color]
+ if(target_type)
+ icon = initial(target_type.icon)
+ icon_state = initial(target_type.icon_state)
+ lefthand_file = initial(target_type.lefthand_file)
+ righthand_file = initial(target_type.righthand_file)
+ item_state = initial(target_type.item_state)
+ mob_overlay_icon = initial(target_type.mob_overlay_icon)
+ inhand_x_dimension = initial(target_type.inhand_x_dimension)
+ inhand_y_dimension = initial(target_type.inhand_y_dimension)
+ name = initial(target_type.name)
+ desc = "[initial(target_type.desc)] The colors look a little dodgy."
+ return target_type //successfully "appearance copy" dyed something; returns the target type as a hacky way of extending
+ add_atom_colour(dye_color, FIXED_COLOUR_PRIORITY)
+ return FALSE
//what happens to this object when washed inside a washing machine
/atom/movable/proc/machine_wash(obj/machinery/washing_machine/WM)
@@ -89,105 +214,27 @@
new /obj/item/reagent_containers/food/snacks/meat/slab/corgi(loc)
qdel(src)
-/obj/item/paper/machine_wash(obj/machinery/washing_machine/WM)
- if(WM.color_source)
- if(istype(WM.color_source, /obj/item/toy/crayon))
- var/obj/item/toy/crayon/CR = WM.color_source
- add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY)
-
-/obj/item/reagents_containers/rag/towel/machine_wash(obj/machinery/washing_machine/WM)
- if(WM.color_source)
- if(istype(WM.color_source, /obj/item/toy/crayon))
- var/obj/item/toy/crayon/CR = WM.color_source
- add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY)
-
/mob/living/simple_animal/pet/dog/corgi/machine_wash(obj/machinery/washing_machine/WM)
gib()
-/obj/item/clothing/under/color/machine_wash(obj/machinery/washing_machine/WM)
- jumpsuit_wash(WM)
-
-/obj/item/clothing/under/rank/machine_wash(obj/machinery/washing_machine/WM)
- jumpsuit_wash(WM)
-
-/obj/item/clothing/under/proc/jumpsuit_wash(obj/machinery/washing_machine/WM)
+/obj/item/machine_wash(obj/machinery/washing_machine/WM)
if(WM.color_source)
- var/wash_color = WM.color_source.item_color
- var/obj/item/clothing/under/U
- for(var/T in typesof(/obj/item/clothing/under/color))
- var/obj/item/clothing/under/color/J = T
- if(wash_color == initial(J.item_color))
- U = J
- break
- if(!U)
- for(var/T in typesof(/obj/item/clothing/under/rank))
- var/obj/item/clothing/under/rank/R = T
- if(wash_color == initial(R.item_color))
- U = R
- break
- if(U)
- item_state = initial(U.item_state)
- icon_state = initial(U.icon_state)
- item_color = wash_color
- name = initial(U.name)
- desc = "The colors are a bit dodgy."
- can_adjust = initial(U.can_adjust)
- if(!can_adjust && adjusted) //we deadjust the uniform if it's now unadjustable
- toggle_jumpsuit_adjust()
+ dye_item(WM.color_source.dye_color)
-/obj/item/clothing/gloves/color/machine_wash(obj/machinery/washing_machine/WM)
- if(WM.color_source)
- var/wash_color = WM.color_source.item_color
- for(var/T in typesof(/obj/item/clothing/gloves/color))
- var/obj/item/clothing/gloves/color/G = T
- if(wash_color == initial(G.item_color))
- item_state = initial(G.item_state)
- icon_state = initial(G.icon_state)
- item_color = wash_color
- name = initial(G.name)
- desc = "The colors are a bit dodgy."
- break
+/obj/item/clothing/under/dye_item(dye_color, dye_key)
+ . = ..()
+ if(.)
+ var/obj/item/clothing/under/U = .
+ can_adjust = initial(U.can_adjust)
+ if(!can_adjust && adjusted) //we deadjust the uniform if it's now unadjustable
+ toggle_jumpsuit_adjust()
/obj/item/clothing/shoes/sneakers/machine_wash(obj/machinery/washing_machine/WM)
if(chained)
chained = 0
slowdown = SHOES_SLOWDOWN
new /obj/item/restraints/handcuffs(loc)
- if(WM.color_source)
- var/wash_color = WM.color_source.item_color
- for(var/T in typesof(/obj/item/clothing/shoes/sneakers))
- var/obj/item/clothing/shoes/sneakers/S = T
- if(wash_color == initial(S.item_color))
- icon_state = initial(S.icon_state)
- item_color = wash_color
- name = initial(S.name)
- desc = "The colors are a bit dodgy."
- break
-
-/obj/item/bedsheet/machine_wash(obj/machinery/washing_machine/WM)
- if(WM.color_source)
- var/wash_color = WM.color_source.item_color
- for(var/T in typesof(/obj/item/bedsheet))
- var/obj/item/bedsheet/B = T
- if(wash_color == initial(B.item_color))
- icon_state = initial(B.icon_state)
- item_color = wash_color
- name = initial(B.name)
- desc = "The colors are a bit dodgy."
- break
-
-/obj/item/clothing/head/soft/machine_wash(obj/machinery/washing_machine/WM)
- if(WM.color_source)
- var/wash_color = WM.color_source.item_color
- for(var/T in typesof(/obj/item/clothing/head/soft))
- var/obj/item/clothing/head/soft/H = T
- if(wash_color == initial(H.item_color))
- icon_state = initial(H.icon_state)
- item_color = wash_color
- name = initial(H.name)
- desc = "The colors are a bit dodgy."
- break
-
+ ..()
/obj/machinery/washing_machine/relaymove(mob/user)
container_resist(user)
@@ -223,27 +270,27 @@
if(istype(W, /obj/item/clothing/head/mob_holder))
to_chat(user, "It's too unwieldly to put in this way. ")
- return 1
+ return TRUE
else if(user.a_intent != INTENT_HARM)
if (!state_open)
to_chat(user, "Open the door first! ")
- return 1
+ return TRUE
if(bloody_mess)
to_chat(user, "[src] must be cleaned up first. ")
- return 1
+ return TRUE
if(contents.len >= max_wash_capacity)
to_chat(user, "The washing machine is full! ")
- return 1
+ return TRUE
if(!user.transferItemToLoc(W, src))
to_chat(user, "\The [W] is stuck to your hand, you cannot put it in the washing machine! ")
- return 1
+ return TRUE
- if(istype(W, /obj/item/toy/crayon) || istype(W, /obj/item/stamp))
+ if(W.dye_color)
color_source = W
update_icon()
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index 48cf0b4a8b..6b61eb2ebd 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -384,8 +384,8 @@
desc = "The POWER that gamers CRAVE! In partnership with Vlad's Salad."
icon_state = "poster39"
-/obj/structure/sign/poster/contraband/sun_kist
- name = "Sun-kist"
+/obj/structure/sign/poster/contraband/starkist
+ name = "Star-kist"
desc = "Drink the stars!"
icon_state = "poster40"
diff --git a/code/game/objects/effects/decals/vgdecals.dm b/code/game/objects/effects/decals/vgdecals.dm
new file mode 100644
index 0000000000..93db0075c8
--- /dev/null
+++ b/code/game/objects/effects/decals/vgdecals.dm
@@ -0,0 +1,119 @@
+// Full credit goes to VG station for these assets. https://github.com/vgstation-coders/vgstation13
+// All items in this .dm and the associated .dmi were made by VG station and all credit should go to them.
+
+// -<| IMPORTANT MAPPER NOTE |>-
+// Change the 'color' variable on any white sprite to simply recolour it!
+
+/obj/effect/turf_decal/vg_decals
+ icon = 'icons/turf/vgstation_decals.dmi'
+ icon_state = "no"
+
+// NUMBERS START
+
+/obj/effect/turf_decal/vg_decals/numbers
+ icon_state = "no"
+
+/obj/effect/turf_decal/vg_decals/numbers/one
+ icon_state = "1"
+
+/obj/effect/turf_decal/vg_decals/numbers/two
+ icon_state = "2"
+
+/obj/effect/turf_decal/vg_decals/numbers/three
+ icon_state = "3"
+
+/obj/effect/turf_decal/vg_decals/numbers/four
+ icon_state = "4"
+
+/obj/effect/turf_decal/vg_decals/numbers/five
+ icon_state = "5"
+
+/obj/effect/turf_decal/vg_decals/numbers/six
+ icon_state = "6"
+
+/obj/effect/turf_decal/vg_decals/numbers/seven
+ icon_state = "7"
+
+/obj/effect/turf_decal/vg_decals/numbers/eight
+ icon_state = "8"
+
+/obj/effect/turf_decal/vg_decals/numbers/nine
+ icon_state = "9"
+
+/obj/effect/turf_decal/vg_decals/numbers/zero
+ icon_state = "0"
+
+// NUMBERS END
+
+// ATMOS START
+
+/obj/effect/turf_decal/vg_decals/atmos
+ icon_state = "no"
+
+/obj/effect/turf_decal/vg_decals/atmos/oxygen
+ icon_state = "oxygen"
+
+/obj/effect/turf_decal/vg_decals/atmos/carbon_dioxide
+ icon_state = "carbon_dioxide"
+
+/obj/effect/turf_decal/vg_decals/atmos/nitrogen
+ icon_state = "nitrogen"
+
+/obj/effect/turf_decal/vg_decals/atmos/air
+ icon_state = "air"
+
+/obj/effect/turf_decal/vg_decals/atmos/nitrous_oxide
+ icon_state = "nitrous_oxide"
+
+/obj/effect/turf_decal/vg_decals/atmos/plasma
+ icon_state = "plasma"
+
+/obj/effect/turf_decal/vg_decals/atmos/mix
+ icon_state = "mix"
+
+// ATMOS END
+
+// DEPARTMENT START
+
+/obj/effect/turf_decal/vg_decals/department/hop
+ icon_state = "hop"
+
+/obj/effect/turf_decal/vg_decals/department/bar
+ icon_state = "bar"
+
+/obj/effect/turf_decal/vg_decals/department/cargo
+ icon_state = "cargo"
+
+/obj/effect/turf_decal/vg_decals/department/med
+ icon_state = "med"
+
+/obj/effect/turf_decal/vg_decals/department/sci
+ icon_state = "sci"
+
+/obj/effect/turf_decal/vg_decals/department/sec
+ icon_state = "sec"
+
+/obj/effect/turf_decal/vg_decals/department/mining
+ icon_state = "mine"
+
+/obj/effect/turf_decal/vg_decals/department/zoo
+ icon_state = "zoo"
+
+// DEPARTMENT END
+
+// MISC START
+
+/obj/effect/turf_decal/vg_decals/no
+ icon = 'icons/turf/vgstation_decals.dmi'
+ icon_state = "no"
+
+/obj/effect/turf_decal/vg_decals/radiation_huge
+ icon_state = "radiation_huge"
+
+/obj/effect/turf_decal/vg_decals/radiation
+ icon_state = "radiation"
+
+/obj/effect/turf_decal/vg_decals/radiation_custom
+ icon_state = "radiation-w"
+
+// MISC END
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 71c394a404..d79fba7172 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -45,7 +45,6 @@
/obj/effect/spawner/lootdrop/armory_contraband
name = "armory contraband gun spawner"
lootdoubles = FALSE
-
loot = list(
/obj/item/gun/ballistic/automatic/pistol = 8,
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
@@ -129,7 +128,6 @@
loot = typesof(/obj/item/flashlight/glowstick)
. = ..()
-
/obj/effect/spawner/lootdrop/gloves
name = "random gloves"
desc = "These gloves are supposed to be a random color..."
@@ -150,7 +148,6 @@
/obj/effect/spawner/lootdrop/crate_spawner
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
lootdoubles = FALSE
-
loot = list(
/obj/structure/closet/crate/secure/loot = 20,
"" = 80
@@ -386,3 +383,141 @@
/obj/structure/reagent_dispensers/keg/aphro = 2,
/obj/structure/reagent_dispensers/keg/aphro/strong = 2,
/obj/structure/reagent_dispensers/keg/gargle = 1)
+
+/obj/effect/spawner/lootdrop/coin
+ lootcount = 1
+ loot = list(
+ /obj/item/coin/silver = 30,
+ /obj/item/coin/iron = 30,
+ /obj/item/coin/gold = 10,
+ /obj/item/coin/diamond = 10,
+ /obj/item/coin/plasma = 10,
+ /obj/item/coin/uranium = 10,
+ )
+
+/obj/effect/spawner/lootdrop/cig_packs
+ lootcount = 1
+ loot = list(
+ /obj/item/storage/fancy/cigarettes = 20,
+ /obj/item/storage/fancy/cigarettes/dromedaryco = 10,
+ /obj/item/storage/fancy/cigarettes/cigpack_robust = 5,
+ /obj/item/storage/fancy/cigarettes/cigpack_robustgold = 5,
+ /obj/item/storage/fancy/cigarettes/cigpack_carp = 15,
+ /obj/item/storage/fancy/cigarettes/cigpack_syndicate = 2,
+ /obj/item/storage/fancy/cigarettes/cigpack_midori = 10,
+ /obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 5,
+ /obj/item/storage/fancy/cigarettes/cigpack_xeno = 3,
+ /obj/item/storage/fancy/cigarettes/cigpack_cannabis = 10,
+ /obj/item/storage/fancy/cigarettes/cigpack_mindbreaker = 10,
+ /obj/item/storage/fancy/rollingpapers = 10
+ )
+
+/obj/effect/spawner/lootdrop/cigars_cases
+ lootcount = 1
+ loot = list(
+ /obj/item/storage/fancy/cigarettes/cigars = 50,
+ /obj/item/storage/fancy/cigarettes/cigars/cohiba = 25,
+ /obj/item/storage/fancy/cigarettes/cigars/havana = 25,
+ )
+
+/obj/effect/spawner/lootdrop/space_cash
+ lootcount = 1
+ loot = list(
+ /obj/item/stack/spacecash/c1 = 1,
+ /obj/item/stack/spacecash/c10 = 9,
+ /obj/item/stack/spacecash/c20 = 10,
+ /obj/item/stack/spacecash/c50 = 15,
+ /obj/item/stack/spacecash/c100 = 25,
+ /obj/item/stack/spacecash/c200 = 20,
+ /obj/item/stack/spacecash/c500 = 19,
+ /obj/item/stack/spacecash/c1000 = 1,
+ )
+
+/obj/effect/spawner/lootdrop/druggie_pill
+ lootcount = 1
+ loot = list(
+ /obj/item/reagent_containers/pill/stimulant = 1,
+ /obj/item/reagent_containers/pill/zoom = 9,
+ /obj/item/reagent_containers/pill/happy = 10,
+ /obj/item/reagent_containers/pill/lsd = 15,
+ /obj/item/reagent_containers/pill/aranesp = 25,
+ /obj/item/reagent_containers/pill/psicodine = 20,
+ /obj/item/reagent_containers/pill/mannitol = 19,
+ /obj/item/reagent_containers/pill/happiness = 1,
+ )
+
+/obj/effect/spawner/lootdrop/low_loot_toilet
+ name = "random low toilet spawner"
+ lootcount = 1
+//Note this is out of a 100 - Meaning the number you see is also the percent its going to pick that
+//This is ment for "low" loot that anyone could fine in a toilet, for better gear use high loot toilet
+ loot = list("" = 30,
+ /obj/item/lighter = 2,
+ /obj/item/tape/random = 1,
+ /obj/item/poster/random_contraband = 1,
+ /obj/item/clothing/glasses/sunglasses/blindfold = 4,
+ /obj/item/clothing/glasses/sunglasses = 1,
+ /obj/item/toy/plush/random = 5,
+ /obj/effect/spawner/lootdrop/gloves = 5,
+ /obj/effect/spawner/lootdrop/glowstick = 5,
+ /obj/effect/spawner/lootdrop/coin = 3,
+ /obj/effect/spawner/lootdrop/cig_packs = 10,
+ /obj/effect/spawner/lootdrop/cigars_cases = 2,
+ /obj/effect/spawner/lootdrop/space_cash = 5,
+ /obj/item/reagent_containers/food/snacks/grown/cannabis = 5,
+ /obj/item/storage/pill_bottle/dice = 5,
+ /obj/item/toy/cards/deck = 5,
+ /obj/effect/spawner/lootdrop/druggie_pill = 5
+ )
+
+/obj/effect/spawner/lootdrop/prison_loot_toilet
+ name = "random prison toilet spawner"
+ lootcount = 1
+//Note this is out of a 100 - Meaning the number you see is also the percent its going to pick that
+//This is ment for "prison" loot that is rather rare and ment for "prisoners if they get a crowbar to fine, or sec.
+ loot = list("" = 10,
+ /obj/item/lighter = 5,
+ /obj/item/poster/random_contraband = 5,
+ /obj/item/clothing/glasses/sunglasses = 5,
+ /obj/effect/spawner/lootdrop/coin = 5,
+ /obj/effect/spawner/lootdrop/cig_packs = 10,
+ /obj/effect/spawner/lootdrop/cigars_cases = 5,
+ /obj/item/reagent_containers/food/snacks/grown/cannabis = 5,
+ /obj/item/storage/pill_bottle/dice = 5,
+ /obj/item/toy/cards/deck = 5,
+ /obj/effect/spawner/lootdrop/druggie_pill = 5,
+ /obj/item/kitchen/knife = 5,
+ /obj/item/screwdriver = 5,
+ /obj/item/crowbar/red = 0.5, //Dont you need a crowbar to open this?
+ /obj/item/stack/medical/bruise_pack = 3,
+ /obj/item/reagent_containers/food/drinks/bottle/vodka = 2,
+ /obj/item/radio = 5,
+ /obj/item/flashlight = 4.5,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/tank/internals/emergency_oxygen = 3,
+ /obj/item/storage/box/mre/menu4/safe = 3,
+ /obj/item/grenade/smokebomb = 2
+ )
+
+/obj/effect/spawner/lootdrop/high_loot_toilet
+ name = "random high toilet spawner"
+ lootcount = 1
+//Note this is out of a 100 - Meaning the number you see is also the percent its going to pick that
+//The items inside are always going to be something usefull, illegal and likely traitorous.
+ loot = list(
+ /obj/item/clothing/glasses/sunglasses = 5,
+ /obj/effect/spawner/lootdrop/coin = 5,
+ /obj/effect/spawner/lootdrop/space_cash = 5,
+ /obj/effect/spawner/lootdrop/druggie_pill = 5,
+ /obj/item/storage/fancy/cigarettes/cigpack_syndicate = 5,
+ /obj/item/suppressor = 5,
+ /obj/item/toy/cards/deck/syndicate = 5,
+ /obj/item/clothing/under/syndicate = 5,
+ /obj/item/clothing/mask/gas/syndicate = 5,
+ /obj/item/grenade/smokebomb = 10,
+ /obj/item/gun/ballistic/automatic/toy/pistol = 5,
+ /obj/item/firing_pin = 5,
+ /obj/item/grenade/empgrenade = 15,
+ /obj/item/clothing/gloves/combat = 10,
+ /obj/item/clothing/shoes/sneakers/noslip = 10
+ )
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 222b82d134..271bb7a385 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -8,9 +8,20 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
name = "item"
icon = 'icons/obj/items_and_weapons.dmi'
blocks_emissive = EMISSIVE_BLOCK_GENERIC
+
+ ///icon state name for inhand overlays
var/item_state = null
+ ///Icon file for left hand inhand overlays
var/lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ ///Icon file for right inhand overlays
var/righthand_file = 'icons/mob/inhands/items_righthand.dmi'
+
+ ///Icon file for mob worn overlays.
+ ///no var for state because it should *always* be the same as icon_state
+ var/icon/mob_overlay_icon
+ //Forced mob worn layer instead of the standard preferred ssize.
+ var/alternate_worn_layer
+
var/list/alternate_screams = list() //REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
//Dimensions of the icon file used when this item is worn, eg: hats.dmi
@@ -22,10 +33,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/inhand_x_dimension = 32
var/inhand_y_dimension = 32
- //Not on /clothing because for some reason any /obj/item can technically be "worn" with enough fuckery.
- var/icon/alternate_worn_icon = null//If this is set, update_icons() will find on mob (WORN, NOT INHANDS) states in this file instead, primary use: badminnery/events
- var/alternate_worn_layer = null//If this is set, update_icons() will force the on mob state (WORN, NOT INHANDS) onto this layer, instead of it's default
-
max_integrity = 200
obj_flags = NONE
@@ -61,8 +68,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
//Citadel Edit for digitigrade stuff
var/mutantrace_variation = NONE //Are there special sprites for specific situations? Don't use this unless you need to.
- var/item_color = null //this needs deprecating, soonish
-
var/body_parts_covered = 0 //see setup.dm for appropriate bit flags
var/gas_transfer_coefficient = 1 // for leaking gas from turf to mask and vice-versa (for masks right now, but at some point, i'd like to include space helmets)
var/permeability_coefficient = 1 // for chemicals/diseases
@@ -93,8 +98,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/tool_behaviour = NONE
var/toolspeed = 1
- var/block_chance = 0
- var/hit_reaction_chance = 0 //If you want to have something unrelated to blocking/armour piercing etc. Maybe not needed, but trying to think ahead/allow more freedom
var/reach = 1 //In tiles, how far this weapon can reach; 1 for adjacent, which is default
//The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot.
@@ -111,6 +114,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/trigger_guard = TRIGGER_GUARD_NONE
+ ///Used as the dye color source in the washing machine only (at the moment). Can be a hex color or a key corresponding to a registry entry, see washing_machine.dm
+ var/dye_color
+ ///Whether the item is unaffected by standard dying.
+ var/undyeable = FALSE
+ ///What dye registry should be looked at when dying this item; see washing_machine.dm
+ var/dying_key
+
//Grinder vars
var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder!
@@ -365,13 +375,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
// afterattack() and attack() prototypes moved to _onclick/item_attack.dm for consistency
-/obj/item/proc/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- SEND_SIGNAL(src, COMSIG_ITEM_HIT_REACT, args)
- if(prob(final_block_chance))
- owner.visible_message("[owner] blocks [attack_text] with [src]! ")
- return 1
- return 0
-
/obj/item/proc/talk_into(mob/M, input, channel, spans, datum/language/language)
return ITALICS | REDUCE_RANGE
@@ -431,6 +434,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
item_flags |= IN_INVENTORY
user.update_equipment_speed_mods()
+//Overlays for the worn overlay so you can overlay while you overlay
+//eg: ammo counters, primed grenade flashing, etc.
+//"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file
+/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = list()
+ SEND_SIGNAL(src, COMSIG_ITEM_WORN_OVERLAYS, isinhands, icon_file, used_state, style_flags, .)
+
//sometimes we only want to grant the item's action if it's equipped in a specific slot.
/obj/item/proc/item_action_slot_check(slot, mob/user, datum/action/A)
if(slot == SLOT_IN_BACKPACK || slot == SLOT_LEGCUFFED) //these aren't true slots, so avoid granting actions there
@@ -464,9 +474,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item/proc/ui_action_click(mob/user, actiontype)
attack_self(user)
-/obj/item/proc/IsReflect(var/def_zone) //This proc determines if and at what% an object will reflect energy projectiles if it's in l_hand,r_hand or wear_suit
- return 0
-
/obj/item/proc/eyestab(mob/living/carbon/M, mob/living/carbon/user)
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "You don't want to harm [M]! ")
diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm
index 72e6ccbbe2..f3ea461c74 100644
--- a/code/game/objects/items/RCL.dm
+++ b/code/game/objects/items/RCL.dm
@@ -113,7 +113,7 @@
cable_overlay.color = GLOB.cable_colors[colors[current_color_index]]
. += cable_overlay
-/obj/item/twohanded/rcl/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/twohanded/rcl/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands || !(loaded?.amount))
return
@@ -201,7 +201,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
return //If we've run out, display message and exit
else
last = null
- loaded.item_color = colors[current_color_index]
+ loaded.color = colors[current_color_index]
last = loaded.place_turf(get_turf(src), user, turn(user.dir, 180))
is_empty(user) //If we've run out, display message
update_icon()
@@ -223,7 +223,6 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
continue
if(C.d1 == 0)
return C
- break
return
@@ -277,7 +276,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
if(T.intact || !T.can_have_cabling())
return
- loaded.item_color = colors[current_color_index]
+ loaded.color = colors[current_color_index]
var/obj/structure/cable/linkingCable = findLinkingCable(user)
if(linkingCable)
@@ -299,7 +298,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
var/cwname = colors[current_color_index]
to_chat(user, "Color changed to [cwname]!")
if(loaded)
- loaded.item_color= colors[current_color_index]
+ loaded.color = colors[current_color_index]
update_icon()
if(wiring_gui_menu)
wiringGuiUpdate(user)
diff --git a/code/game/objects/items/balls.dm b/code/game/objects/items/balls.dm
index c24f58208b..2e5a385ead 100644
--- a/code/game/objects/items/balls.dm
+++ b/code/game/objects/items/balls.dm
@@ -15,7 +15,7 @@
lefthand_file = 'modular_citadel/icons/mob/inhands/balls_left.dmi'
righthand_file = 'modular_citadel/icons/mob/inhands/balls_right.dmi'
item_state = "tennis_classic"
- alternate_worn_icon = 'modular_citadel/icons/mob/mouthball.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/mouthball.dmi'
slot_flags = ITEM_SLOT_HEAD | ITEM_SLOT_NECK | ITEM_SLOT_EARS //Fluff item, put it wherever you want!
throw_range = 14
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index e93bfb9976..dbc66b1899 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -38,7 +38,6 @@
/obj/item/bodybag/bluespace
name = "bluespace body bag"
desc = "A folded bluespace body bag designed for the storage and transportation of cadavers."
- icon = 'icons/obj/bodybag.dmi'
icon_state = "bluebodybag_folded"
unfoldedbag_path = /obj/structure/closet/body_bag/bluespace
w_class = WEIGHT_CLASS_SMALL
@@ -81,3 +80,13 @@
return
loc.visible_message("[user] suddenly appears in front of [loc]! ", "[user] breaks free of [src]! ")
qdel(src)
+
+// Containment bodybag
+
+/obj/item/bodybag/containment
+ name = "radiation containment body bag"
+ desc = "A folded heavy body bag designed for the storage and transportation of heavily irradiated cadavers."
+ icon_state = "radbodybag_folded"
+ unfoldedbag_path = /obj/structure/closet/body_bag/containment
+ w_class = WEIGHT_CLASS_NORMAL
+ rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index 11ab008c41..a3366e714e 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -13,6 +13,7 @@
var/lit = FALSE
var/infinite = FALSE
var/start_lit = FALSE
+ var/heats_space = TRUE
/obj/item/candle/Initialize()
. = ..()
@@ -35,7 +36,7 @@
return ..()
/obj/item/candle/get_temperature()
- return lit * heat
+ return lit * heat * heats_space
/obj/item/candle/proc/light(show_message)
if(!lit)
@@ -67,7 +68,8 @@
new /obj/item/trash/candle(loc)
qdel(src)
update_icon()
- open_flame()
+ if(heats_space)
+ open_flame()
/obj/item/candle/attack_self(mob/user)
if(put_out_candle())
@@ -77,4 +79,7 @@
infinite = TRUE
start_lit = TRUE
+/obj/item/candle/infinite/hugbox
+ heats_space = FALSE
+
#undef CANDLE_LUMINOSITY
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index 5b7c70b1b6..2303278f5c 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -706,11 +706,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "\improper E-Cigarette"
desc = "A classy and highly sophisticated electronic cigarette, for classy and dignified gentlemen. A warning label reads \"Warning: Do not fill with flammable materials.\""//<<< i'd vape to that.
icon = 'icons/obj/clothing/masks.dmi'
- icon_state = null
- item_state = null
+ icon_state = "black_vape"
+ item_state = "black_vape"
w_class = WEIGHT_CLASS_TINY
var/chem_volume = 100
- var/vapetime = FALSE //this so it won't puff out clouds every tick
+ var/vapetime = FALSE //this so it won't puff out clouds every tick
var/screw = FALSE // kinky
var/super = FALSE //for the fattest vapes dude.
@@ -723,11 +723,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
. = ..()
create_reagents(chem_volume, NO_REACT, NO_REAGENTS_VALUE) // so it doesn't react until you light it
reagents.add_reagent(/datum/reagent/drug/nicotine, 50)
- if(!icon_state)
- if(!param_color)
- param_color = pick("red","blue","black","white","green","purple","yellow","orange")
- icon_state = "[param_color]_vape"
- item_state = "[param_color]_vape"
+ if(!param_color)
+ param_color = pick("red","blue","black","white","green","purple","yellow","orange")
+ icon_state = "[param_color]_vape"
+ item_state = "[param_color]_vape"
/obj/item/clothing/mask/vape/attackby(obj/item/O, mob/user, params)
if(O.tool_behaviour == TOOL_SCREWDRIVER)
@@ -1067,4 +1066,4 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "coconut bong"
icon_off = "coconut_bong"
icon_on = "coconut_bong_lit"
- desc = "A water bong used for smoking dried plants. This one's made out of a coconut and some bamboo."
\ No newline at end of file
+ desc = "A water bong used for smoking dried plants. This one's made out of a coconut and some bamboo."
diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm
index 8400b6fa5c..32c879e2d2 100644
--- a/code/game/objects/items/circuitboards/computer_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm
@@ -293,10 +293,6 @@
name = "Mining Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/mining
-/obj/item/circuitboard/computer/mining_shuttle/common
- name = "Lavaland Shuttle (Computer Board)"
- build_path = /obj/machinery/computer/shuttle/mining/common
-
/obj/item/circuitboard/computer/white_ship
name = "White Ship (Computer Board)"
build_path = /obj/machinery/computer/shuttle/white_ship
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index f5b13d4e3e..09c045497c 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -26,7 +26,7 @@
var/icon_uncapped
var/use_overlays = FALSE
- item_color = "red"
+ var/crayon_color = "red"
w_class = WEIGHT_CLASS_TINY
attack_verb = list("attacked", "coloured")
grind_results = list()
@@ -83,7 +83,9 @@
. = ..()
// Makes crayons identifiable in things like grinders
if(name == "crayon")
- name = "[item_color] crayon"
+ name = "[crayon_color] crayon"
+
+ dye_color = crayon_color
drawtype = pick(all_drawables)
@@ -484,65 +486,75 @@
/obj/item/toy/crayon/red
icon_state = "crayonred"
paint_color = "#DA0000"
- item_color = "red"
+ crayon_color = "red"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/red = 1)
+ dye_color = DYE_RED
/obj/item/toy/crayon/orange
icon_state = "crayonorange"
paint_color = "#FF9300"
- item_color = "orange"
+ crayon_color = "orange"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/orange = 1)
+ dye_color = DYE_ORANGE
/obj/item/toy/crayon/yellow
icon_state = "crayonyellow"
paint_color = "#FFF200"
- item_color = "yellow"
+ crayon_color = "yellow"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 1)
+ dye_color = DYE_YELLOW
/obj/item/toy/crayon/green
icon_state = "crayongreen"
paint_color = "#A8E61D"
- item_color = "green"
+ crayon_color = "green"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/green = 1)
+ dye_color = DYE_GREEN
/obj/item/toy/crayon/blue
icon_state = "crayonblue"
paint_color = "#00B7EF"
- item_color = "blue"
+ crayon_color = "blue"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1)
+ dye_color = DYE_BLUE
/obj/item/toy/crayon/purple
icon_state = "crayonpurple"
paint_color = "#DA00FF"
- item_color = "purple"
+ crayon_color = "purple"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/purple = 1)
+ dye_color = DYE_PURPLE
/obj/item/toy/crayon/black
icon_state = "crayonblack"
paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black.
- item_color = "black"
+ crayon_color = "black"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1)
+ dye_color = DYE_BLACK
/obj/item/toy/crayon/white
icon_state = "crayonwhite"
paint_color = "#FFFFFF"
- item_color = "white"
+ crayon_color = "white"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/white = 1)
+ dye_color = DYE_WHITE
/obj/item/toy/crayon/mime
icon_state = "crayonmime"
desc = "A very sad-looking crayon."
paint_color = "#FFFFFF"
- item_color = "mime"
+ crayon_color = "mime"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 1)
charges = -1
+ dye_color = DYE_MIME
/obj/item/toy/crayon/rainbow
icon_state = "crayonrainbow"
paint_color = "#FFF000"
- item_color = "rainbow"
+ crayon_color = "rainbow"
reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1)
drawtype = RANDOM_ANY // just the default starter.
+ dye_color = DYE_RAINBOW
charges = -1
@@ -580,12 +592,12 @@
/obj/item/storage/crayons/update_overlays()
. = ..()
for(var/obj/item/toy/crayon/crayon in contents)
- add_overlay(mutable_appearance('icons/obj/crayons.dmi', crayon.item_color))
+ add_overlay(mutable_appearance('icons/obj/crayons.dmi', crayon.crayon_color))
/obj/item/storage/crayons/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/toy/crayon))
var/obj/item/toy/crayon/C = W
- switch(C.item_color)
+ switch(C.crayon_color)
if("mime")
to_chat(usr, "This crayon is too sad to be contained in this box.")
return
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 157cd451d4..2dabcca29f 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -807,9 +807,9 @@ GLOBAL_LIST_EMPTY(PDAs)
// If it didn't reach, note that fact
if (!signal.data["done"])
to_chat(user, "ERROR: Server isn't responding. ")
- return
if (!silent)
playsound(src, 'sound/machines/terminal_error.ogg', 15, 1)
+ return
var/target_text = signal.format_target()
if(allow_emojis)
@@ -998,9 +998,9 @@ GLOBAL_LIST_EMPTY(PDAs)
var/obj/item/card/id/idcard = C
if(!idcard.registered_name)
to_chat(user, "\The [src] rejects the ID! ")
- return
if (!silent)
playsound(src, 'sound/machines/terminal_error.ogg', 15, 1)
+ return
if(!owner)
owner = idcard.registered_name
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 1006fe9146..6eae9f127a 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -692,14 +692,14 @@ Code:
return
GLOB.news_network.SubmitArticle(message,host_pda.owner,current_channel)
host_pda.Topic(null,list("choice"=num2text(host_pda.mode)))
- return
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
+ return
if("Newscaster Switch Channel")
current_channel = host_pda.msg_input()
host_pda.Topic(null,list("choice"=num2text(host_pda.mode)))
- return
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
+ return
//emoji previews
if(href_list["emoji"])
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index a3cfdb9177..9c94348fc2 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -18,7 +18,6 @@
var/recharge_locked = FALSE
var/obj/item/stock_parts/micro_laser/diode //used for upgrading!
-
/obj/item/laser_pointer/red
pointer_icon_state = "red_laser"
/obj/item/laser_pointer/green
@@ -28,6 +27,9 @@
/obj/item/laser_pointer/purple
pointer_icon_state = "purple_laser"
+/obj/item/laser_pointer/blue/handmade
+ diode = null
+
/obj/item/laser_pointer/New()
..()
diode = new(src)
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index 914f2a149a..1eee083c80 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -149,7 +149,7 @@ Code:
name = "shock collar"
desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.."
icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi'
- alternate_worn_icon = 'modular_citadel/icons/mob/citadel/neck.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/citadel/neck.dmi'
icon_state = "shockcollar"
item_state = "shockcollar"
body_parts_covered = NECK
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 0e109cd400..b6cab8b438 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -275,10 +275,8 @@ SLIME SCANNER
//LIVER
else if(istype(O, /obj/item/organ/liver))
var/obj/item/organ/liver/L = O
- if(H.undergoing_liver_failure() && H.stat != DEAD) //might be depreciated
+ if(L.organ_flags & ORGAN_FAILING && H.stat != DEAD) //might be depreciated
temp_message += "Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately! "
- if(L.swelling > 20)
- temp_message += " Subject is suffering from an enlarged liver. " //i.e. shrink their liver or give them a transplant.
//HEART
else if(ishuman(M) && (istype(O, /obj/item/organ/heart)))
@@ -310,11 +308,11 @@ SLIME SCANNER
//GENERAL HANDLER
if(!damage_message)
if(O.organ_flags & ORGAN_FAILING)
- damage_message += " End Stage [O.name] failure detected. "
+ damage_message += " Chronic [O.name] failure detected. "
else if(O.damage > O.high_threshold)
- damage_message += " Chronic [O.name] failure detected. "
+ damage_message += " Acute [O.name] failure detected. "
else if(O.damage > O.low_threshold && advanced)
- damage_message += " Acute [O.name] failure detected."
+ damage_message += " Minor [O.name] failure detected."
if(temp_message || damage_message)
msg += "\t[uppertext(O.name)]: [damage_message] [temp_message]\n"
diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm
index ea24e77832..1172b50377 100644
--- a/code/game/objects/items/documents.dm
+++ b/code/game/objects/items/documents.dm
@@ -51,8 +51,8 @@
to_chat(user, "You have already forged a seal on [src]! ")
else
var/obj/item/toy/crayon/C = O
- name = "[C.item_color] secret documents"
- icon_state = "docs_[C.item_color]"
- forgedseal = C.item_color
- to_chat(user, "You forge the official seal with a [C.item_color] crayon. No one will notice... right? ")
- update_icon()
\ No newline at end of file
+ name = "[C.crayon_color] secret documents"
+ icon_state = "docs_[C.crayon_color]"
+ forgedseal = C.crayon_color
+ to_chat(user, "You forge the official seal with a [C.crayon_color] crayon. No one will notice... right? ")
+ update_icon()
diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm
index b0882b6e5d..e2140bd0fd 100644
--- a/code/game/objects/items/flamethrower.dm
+++ b/code/game/objects/items/flamethrower.dm
@@ -234,15 +234,16 @@
/obj/item/flamethrower/full/tank
create_with_tank = TRUE
-/obj/item/flamethrower/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- var/obj/item/projectile/P = hitby
- if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15))
- owner.visible_message("\The [attack_text] hits the fueltank on [owner]'s [name], rupturing it! What a shot! ")
- var/target_turf = get_turf(owner)
- igniter.ignite_turf(src,target_turf, release_amount = 100)
- qdel(ptank)
- return 1 //It hit the flamethrower, not them
-
+/obj/item/flamethrower/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
+ var/obj/item/projectile/P = object
+ if(istype(P) && (P.damage_type != STAMINA) && damage && !P.nodamage && prob(15))
+ owner.visible_message("\The [attack_text] hits the fueltank on [owner]'s [name], rupturing it! What a shot! ")
+ var/target_turf = get_turf(owner)
+ igniter.ignite_turf(src,target_turf, release_amount = 100)
+ qdel(ptank)
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return ..()
/obj/item/assembly/igniter/proc/flamethrower_process(turf/open/location)
location.hotspot_expose(700,2)
diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm
index 77b4b33a8c..8a41ee4601 100644
--- a/code/game/objects/items/grenades/grenade.dm
+++ b/code/game/objects/items/grenades/grenade.dm
@@ -115,12 +115,14 @@
/obj/item/grenade/attack_paw(mob/user)
return attack_hand(user)
-/obj/item/grenade/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- var/obj/item/projectile/P = hitby
- if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15))
- owner.visible_message("[attack_text] hits [owner]'s [src], setting it off! What a shot! ")
- prime()
- return TRUE //It hit the grenade, not them
+/obj/item/grenade/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
+ var/obj/item/projectile/P = object
+ if(damage && !P.nodamage && (P.damage_type != STAMINA) && prob(15))
+ owner.visible_message("[attack_text] hits [owner]'s [src], setting it off! What a shot! ")
+ prime()
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return ..()
/obj/item/proc/grenade_prime_react(obj/item/grenade/nade)
return
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index e1b0cbb661..22c9bdc451 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -113,54 +113,54 @@
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff"
item_state = "coil"
- item_color = "red"
- color = "#ff0000"
+ color = "#ff0000"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_materials = list(/datum/material/iron=150, /datum/material/glass=75)
breakouttime = 300 //Deciseconds = 30s
- cuffsound = 'sound/weapons/cablecuff.ogg'
-
-/obj/item/restraints/handcuffs/cable/Initialize(mapload, param_color)
- . = ..()
-
- var/list/cable_colors = GLOB.cable_colors
- item_color = param_color || item_color || pick(cable_colors)
- if(cable_colors[item_color])
- item_color = cable_colors[item_color]
- color = null
- add_atom_colour(item_color, FIXED_COLOUR_PRIORITY)
+ cuffsound = 'sound/weapons/cablecuff.ogg'
+/obj/item/restraints/handcuffs/cable/attack_self(mob/user)
+ to_chat(user, "You start unwinding the cable restraints back into coil ")
+ if(!do_after(user, 25, TRUE, user))
+ return
+ qdel(src)
+ var/obj/item/stack/cable_coil/coil = new(get_turf(user))
+ coil.amount = 15
+ user.put_in_hands(coil)
+ coil.color = color
+ to_chat(user, "You unwind the cable restraints back into coil ")
+
/obj/item/restraints/handcuffs/cable/red
- item_color = "red"
color = "#ff0000"
/obj/item/restraints/handcuffs/cable/yellow
- item_color = "yellow"
color = "#ffff00"
/obj/item/restraints/handcuffs/cable/blue
- item_color = "blue"
color = "#1919c8"
/obj/item/restraints/handcuffs/cable/green
- item_color = "green"
color = "#00aa00"
/obj/item/restraints/handcuffs/cable/pink
- item_color = "pink"
color = "#ff3ccd"
/obj/item/restraints/handcuffs/cable/orange
- item_color = "orange"
color = "#ff8000"
/obj/item/restraints/handcuffs/cable/cyan
- item_color = "cyan"
color = "#00ffff"
/obj/item/restraints/handcuffs/cable/white
- item_color = "white"
+ color = null
+
+/obj/item/restraints/handcuffs/cable/random
+
+/obj/item/restraints/handcuffs/cable/random/Initialize(mapload)
+ . = ..()
+ var/list/cable_colors = GLOB.cable_colors
+ color = pick(cable_colors)
/obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params)
..()
@@ -202,7 +202,7 @@
custom_materials = null
breakouttime = 450 //Deciseconds = 45s
trashtype = /obj/item/restraints/handcuffs/cable/zipties/used
- item_color = "white"
+ color = null
/obj/item/restraints/handcuffs/cable/zipties/used
desc = "A pair of broken zipties."
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index bd9ac276a2..ac60a322d8 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -122,7 +122,7 @@
/obj/item/clothing/head/helmet/chaplain/cage
name = "cage"
desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is."
- alternate_worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
+ mob_overlay_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
icon_state = "cage"
item_state = "cage"
worn_x_dimension = 64
@@ -303,8 +303,8 @@
block_chance = 50
var/shield_icon = "shield-red"
-/obj/item/nullrod/staff/worn_overlays(isinhands, icon_file, style_flags = NONE)
- . = list()
+/obj/item/nullrod/staff/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(isinhands)
. += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01)
@@ -328,9 +328,9 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-/obj/item/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
- final_block_chance = 0 //Don't bring a sword to a gunfight
+/obj/item/nullrod/claymore/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type & ATTACK_TYPE_PROJECTILE) // Don't bring a sword to a gunfight
+ return NONE
return ..()
/obj/item/nullrod/claymore/darkblade
@@ -494,7 +494,7 @@
S.ckey = C.ckey
S.status_flags |= GODMODE
S.language_holder = user.language_holder.copy(S)
- S.AddElement(/datum/element/ghost_role_eligibility)
+ S.AddElement(/datum/element/ghost_role_eligibility,penalize_on_ghost = TRUE)
START_PROCESSING(SSprocessing,src)
var/input = stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN)
diff --git a/code/game/objects/items/implants/implant.dm b/code/game/objects/items/implants/implant.dm
index c1983b6b8c..cc2ae3631e 100644
--- a/code/game/objects/items/implants/implant.dm
+++ b/code/game/objects/items/implants/implant.dm
@@ -5,7 +5,7 @@
actions_types = list(/datum/action/item_action/hands_free/activate)
var/activated = TRUE //1 for implant types that can be activated, 0 for ones that are "always on" like mindshield implants
var/mob/living/imp_in = null
- item_color = "b"
+ var/implant_color = "b"
var/allow_multiple = FALSE
var/uses = -1
item_flags = DROPDEL
diff --git a/code/game/objects/items/implants/implant_freedom.dm b/code/game/objects/items/implants/implant_freedom.dm
index f3e66d2c08..280fbb7cd3 100644
--- a/code/game/objects/items/implants/implant_freedom.dm
+++ b/code/game/objects/items/implants/implant_freedom.dm
@@ -2,7 +2,7 @@
name = "freedom implant"
desc = "Use this to escape from those evil Red Shirts."
icon_state = "freedom"
- item_color = "r"
+ implant_color = "r"
uses = 4
diff --git a/code/game/objects/items/implants/implant_spell.dm b/code/game/objects/items/implants/implant_spell.dm
index 5db7dc761c..496638c51f 100644
--- a/code/game/objects/items/implants/implant_spell.dm
+++ b/code/game/objects/items/implants/implant_spell.dm
@@ -21,7 +21,7 @@
if (!spell)
return FALSE
if (autorobeless && spell.clothes_req)
- spell.clothes_req = FALSE
+ spell.clothes_req = NONE
target.AddSpell(spell)
return TRUE
diff --git a/code/game/objects/items/implants/implant_storage.dm b/code/game/objects/items/implants/implant_storage.dm
index 1dfc0b4580..4dc0263fa7 100644
--- a/code/game/objects/items/implants/implant_storage.dm
+++ b/code/game/objects/items/implants/implant_storage.dm
@@ -2,7 +2,7 @@
name = "storage implant"
desc = "Stores up to two big items in a bluespace pocket."
icon_state = "storage"
- item_color = "r"
+ implant_color = "r"
var/max_slot_stacking = 4
var/obj/item/storage/bluespace_pocket/pocket
diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm
index 481f1a4181..8573324b56 100644
--- a/code/game/objects/items/implants/implantcase.dm
+++ b/code/game/objects/items/implants/implantcase.dm
@@ -15,7 +15,7 @@
/obj/item/implantcase/update_icon_state()
if(imp)
- icon_state = "implantcase-[imp.item_color]"
+ icon_state = "implantcase-[imp.implant_color]"
else
icon_state = "implantcase-0"
diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm
index 5f3524d1c3..502930bf65 100644
--- a/code/game/objects/items/kitchen.dm
+++ b/code/game/objects/items/kitchen.dm
@@ -142,6 +142,7 @@
name = "plastic knife"
desc = "A plastic knife. Rather harmless to anything."
force = 1
+ throwforce = 1
bayonet = FALSE
/obj/item/kitchen/knife/combat/cyborg
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index aba07c9120..e4cfeab20f 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -5,12 +5,15 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
var/brightness_on = 3
+ var/sword_color
total_mass = 0.4 //Survival flashlights typically weigh around 5 ounces.
/obj/item/melee/transforming/energy/Initialize()
. = ..()
total_mass_on = (total_mass_on ? total_mass_on : (w_class_on * 0.75))
if(active)
+ if(sword_color)
+ icon_state = "sword[sword_color]"
set_light(brightness_on)
START_PROCESSING(SSobj, src)
@@ -37,8 +40,8 @@
. = ..()
if(.)
if(active)
- if(item_color)
- icon_state = "sword[item_color]"
+ if(sword_color)
+ icon_state = "sword[sword_color]"
START_PROCESSING(SSobj, src)
set_light(brightness_on)
else
@@ -103,23 +106,32 @@
embedding = list("embed_chance" = 75, "embedded_impact_pain_multiplier" = 10)
armour_penetration = 35
block_chance = 50
+ var/list/possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
+
+/obj/item/melee/transforming/energy/sword/Initialize(mapload)
+ . = ..()
+ set_sword_color()
+
+/obj/item/melee/transforming/energy/sword/proc/set_sword_color()
+ if(LAZYLEN(possible_colors))
+ light_color = possible_colors[pick(possible_colors)]
/obj/item/melee/transforming/energy/sword/transform_weapon(mob/living/user, supress_message_text)
. = ..()
if(active)
- if(. && item_color)
- icon_state = "sword[item_color]"
AddElement(/datum/element/sword_point)
else
RemoveElement(/datum/element/sword_point)
-/obj/item/melee/transforming/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(active)
- return ..()
- return 0
+/obj/item/melee/transforming/energy/sword/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!active)
+ return NONE
+ return ..()
/obj/item/melee/transforming/energy/sword/cyborg
- item_color = "red"
+ sword_color = "red"
+ light_color = "#ff0000"
+ possible_colors = null
var/hitcost = 50
/obj/item/melee/transforming/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
@@ -140,7 +152,7 @@
icon = 'icons/obj/surgery.dmi'
icon_state = "esaw_0"
icon_state_on = "esaw_1"
- item_color = null //stops icon from breaking when turned on.
+ sword_color = null //stops icon from breaking when turned on.
hitcost = 75 //Costs more than a standard cyborg esword
w_class = WEIGHT_CLASS_NORMAL
sharpness = IS_SHARP
@@ -148,19 +160,17 @@
tool_behaviour = TOOL_SAW
toolspeed = 0.7
-/obj/item/melee/transforming/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- return 0
+/obj/item/melee/transforming/energy/sword/cyborg/saw/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ return NONE
/obj/item/melee/transforming/energy/sword/saber
- var/list/possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
+ possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
var/hacked = FALSE
-/obj/item/melee/transforming/energy/sword/saber/Initialize(mapload)
- . = ..()
+/obj/item/melee/transforming/energy/sword/saber/set_sword_color()
if(LAZYLEN(possible_colors))
- var/set_color = pick(possible_colors)
- item_color = set_color
- light_color = possible_colors[set_color]
+ sword_color = pick(possible_colors)
+ light_color = possible_colors[sword_color]
/obj/item/melee/transforming/energy/sword/saber/process()
. = ..()
@@ -185,7 +195,7 @@
if(istype(W, /obj/item/multitool))
if(!hacked)
hacked = TRUE
- item_color = "rainbow"
+ sword_color = "rainbow"
to_chat(user, "RNBW_ENGAGE ")
if(active)
@@ -204,6 +214,7 @@
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
icon_state_on = "cutlass1"
light_color = "#ff0000"
+ possible_colors = null
/obj/item/melee/transforming/energy/blade
name = "energy blade"
@@ -271,32 +282,8 @@
return TRUE
/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text)
- active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE
- if(active) //also I'd need to rip out the iconstate changing bits
- force = force_on
- throwforce = throwforce_on
- hitsound = hitsound_on
- throw_speed = 4
- if(attack_verb_on.len)
- attack_verb = attack_verb_on
- w_class = w_class_on
- START_PROCESSING(SSobj, src)
- set_light(brightness_on)
- update_icon()
- else
- force = initial(force)
- throwforce = initial(throwforce)
- hitsound = initial(hitsound)
- throw_speed = initial(throw_speed)
- if(attack_verb_off.len)
- attack_verb = attack_verb_off
- w_class = initial(w_class)
- STOP_PROCESSING(SSobj, src)
- set_light(0)
- update_icon()
- transform_messages(user, supress_message_text)
- add_fingerprint(user)
- return TRUE
+ . = ..()
+ update_icon()
/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text)
playsound(user, active ? 'sound/weapons/nebon.ogg' : 'sound/weapons/neboff.ogg', 65, 1)
@@ -337,7 +324,7 @@
. = ..()
. += "Alt-click to recolor it. "
-/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(active)
if(isinhands)
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index cbbd50b573..011837d48b 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -2,13 +2,12 @@
item_flags = NEEDS_PERMIT
/obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user)
- if(target.check_block())
+ if(target.check_martial_melee_block())
target.visible_message("[target.name] blocks [src] and twists [user]'s arm behind [user.p_their()] back! ",
"You block the attack! ")
user.Stun(40)
return TRUE
-
/obj/item/melee/chainofcommand
name = "chain of command"
desc = "A tool used by great men to placate the frothing masses."
@@ -75,9 +74,9 @@
AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results.
AddElement(/datum/element/sword_point)
-/obj/item/melee/sabre/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
- final_block_chance = 0 //Don't bring a sword to a gunfight
+/obj/item/melee/sabre/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type & ATTACK_TYPE_PROJECTILE) // Don't bring a sword to a gunfight.
+ return BLOCK_NONE
return ..()
/obj/item/melee/sabre/on_exit_storage(datum/component/storage/S)
@@ -165,8 +164,8 @@
. = ..()
AddComponent(/datum/component/butchering, 20, 65, 0)
-/obj/item/melee/rapier/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
+/obj/item/melee/rapier/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type == ATTACK_TYPE_PROJECTILE)
final_block_chance = 0
return ..()
@@ -305,7 +304,7 @@
return
else
if(cooldown_check < world.time)
- if(target.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK))
+ if(target.run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user) & BLOCK_SUCCESS)
playsound(target, 'sound/weapons/genhit.ogg', 50, 1)
return
if(ishuman(target))
diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm
index cc2f5e9be7..bdf9ab4270 100644
--- a/code/game/objects/items/paint.dm
+++ b/code/game/objects/items/paint.dm
@@ -7,7 +7,7 @@
desc = "Used to recolor floors and walls. Can be removed by the janitor."
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "paint_neutral"
- item_color = "FFFFFF"
+ var/paint_color = "FFFFFF"
item_state = "paintcan"
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FLAMMABLE
@@ -16,37 +16,37 @@
/obj/item/paint/red
name = "red paint"
- item_color = "C73232" //"FF0000"
+ paint_color = "C73232" //"FF0000"
icon_state = "paint_red"
/obj/item/paint/green
name = "green paint"
- item_color = "2A9C3B" //"00FF00"
+ paint_color = "2A9C3B" //"00FF00"
icon_state = "paint_green"
/obj/item/paint/blue
name = "blue paint"
- item_color = "5998FF" //"0000FF"
+ paint_color = "5998FF" //"0000FF"
icon_state = "paint_blue"
/obj/item/paint/yellow
name = "yellow paint"
- item_color = "CFB52B" //"FFFF00"
+ paint_color = "CFB52B" //"FFFF00"
icon_state = "paint_yellow"
/obj/item/paint/violet
name = "violet paint"
- item_color = "AE4CCD" //"FF00FF"
+ paint_color = "AE4CCD" //"FF00FF"
icon_state = "paint_violet"
/obj/item/paint/black
name = "black paint"
- item_color = "333333"
+ paint_color = "333333"
icon_state = "paint_black"
/obj/item/paint/white
name = "white paint"
- item_color = "FFFFFF"
+ paint_color = "FFFFFF"
icon_state = "paint_white"
@@ -61,31 +61,31 @@
return
switch(t1)
if("red")
- item_color = "C73232"
+ paint_color = "C73232"
if("pink")
- item_color = "FFC0CD"
+ paint_color = "FFC0CD"
if("blue")
- item_color = "5998FF"
+ paint_color = "5998FF"
if("cyan")
- item_color = "00FFFF"
+ paint_color = "00FFFF"
if("green")
- item_color = "2A9C3B"
+ paint_color = "2A9C3B"
if("lime")
- item_color = "00FF00"
+ paint_color = "00FF00"
if("yellow")
- item_color = "CFB52B"
+ paint_color = "CFB52B"
if("orange")
- item_color = "fFA700"
+ paint_color = "fFA700"
if("violet")
- item_color = "AE4CCD"
+ paint_color = "AE4CCD"
if("purple")
- item_color = "800080"
+ paint_color = "800080"
if("white")
- item_color = "FFFFFF"
+ paint_color = "FFFFFF"
if("gray")
- item_color = "808080"
+ paint_color = "808080"
if("black")
- item_color = "333333"
+ paint_color = "333333"
icon_state = "paint_[t1]"
add_fingerprint(user)
@@ -99,7 +99,7 @@
return
if(!isturf(target) || isspaceturf(target))
return
- var/newcolor = "#" + item_color
+ var/newcolor = "#" + paint_color
target.add_atom_colour(newcolor, WASHABLE_COLOUR_PRIORITY)
/obj/item/paint/paint_remover
diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm
index 0c9c1704a9..090c2f6d57 100644
--- a/code/game/objects/items/pinpointer.dm
+++ b/code/game/objects/items/pinpointer.dm
@@ -83,7 +83,7 @@
/obj/item/pinpointer/crew/proc/trackable(mob/living/carbon/human/H)
var/turf/here = get_turf(src)
- if((H.z == 0 || H.z == here.z) && istype(H.w_uniform, /obj/item/clothing/under))
+ if(H && (H.z == 0 || H.z == here.z) && istype(H.w_uniform, /obj/item/clothing/under))
var/obj/item/clothing/under/U = H.w_uniform
// Suit sensors must be on maximum.
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 498990fcf3..a564d7f9f9 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -434,7 +434,15 @@ GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths())
can_random_spawn = FALSE
/obj/item/toy/plush/random/Initialize()
- var/newtype = prob(CONFIG_GET(number/snowflake_plushie_prob))? /obj/item/toy/plush/random_snowflake : pick(GLOB.valid_plushie_paths)
+ var/newtype
+ var/list/snowflake_list = CONFIG_GET(keyed_list/snowflake_plushies)
+
+ /// If there are no snowflake plushies we'll default to base plush, so we grab from the valid list
+ if (snowflake_list.len)
+ newtype = prob(CONFIG_GET(number/snowflake_plushie_prob)) ? /obj/item/toy/plush/random_snowflake : pick(GLOB.valid_plushie_paths)
+ else
+ newtype = pick(GLOB.valid_plushie_paths)
+
new newtype(loc)
return INITIALIZE_HINT_QDEL
diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm
index b89a2983f5..136d58ba41 100644
--- a/code/game/objects/items/religion.dm
+++ b/code/game/objects/items/religion.dm
@@ -214,7 +214,7 @@
/obj/item/clothing/head/helmet/plate/crusader/prophet
name = "Prophet's Hat"
desc = "A religious-looking hat."
- alternate_worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
+ mob_overlay_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
flags_1 = 0
armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 50, "bomb" = 70, "bio" = 50, "rad" = 50, "fire" = 60, "acid" = 60) //religion protects you from disease and radiation, honk.
worn_x_dimension = 64
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index 0ca2fbd386..318753e4ad 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -11,7 +11,7 @@
var/charge_cost = 30
/obj/item/borg/stun/attack(mob/living/M, mob/living/user)
- if(M.check_shields(src, 0, "[M]'s [name]", MELEE_ATTACK))
+ if(M.run_block(src, 0, "[M]'s [name]", ATTACK_TYPE_MELEE, 0, user, ran_zone(user.zone_selected)) & BLOCK_SUCCESS)
playsound(M, 'sound/weapons/genhit.ogg', 50, 1)
return FALSE
if(iscyborg(user))
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index b137c5c0f3..08ce73109c 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -663,21 +663,19 @@
var/maxReduction = 1
-/obj/effect/proc_holder/silicon/cyborg/vtecControl/Click(mob/living/silicon/robot/user)
- var/mob/living/silicon/robot/self = usr
-
+/obj/effect/proc_holder/silicon/cyborg/vtecControl/Trigger(mob/living/silicon/robot/user)
currentState = (currentState + 1) % 3
- if(istype(self))
+ if(istype(user))
switch(currentState)
if (0)
- self.speed = initial(self.speed)
+ user.speed = initial(user.speed)
if (1)
- self.speed = initial(self.speed) - maxReduction * 0.5
+ user.speed = initial(user.speed) - maxReduction * 0.5
if (2)
- self.speed = initial(self.speed) - maxReduction * 1
+ user.speed = initial(user.speed) - maxReduction * 1
action.button_icon_state = "Chevron_State_[currentState]"
action.UpdateButtonIcon()
- return
+ return TRUE
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 07f4cb4e40..37dfc417d5 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -5,7 +5,7 @@
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
var/transparent = FALSE // makes beam projectiles pass through the shield
-/obj/item/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/shield/proc/on_shield_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance)
return TRUE
/obj/item/shield/riot
@@ -26,16 +26,18 @@
transparent = TRUE
max_integrity = 75
-/obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(transparent && (hitby.pass_flags & PASSGLASS))
- return FALSE
- if(attack_type == THROWN_PROJECTILE_ATTACK)
+/obj/item/shield/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(ismovableatom(object))
+ var/atom/movable/AM = object
+ if(transparent && (AM.pass_flags & PASSGLASS))
+ return BLOCK_NONE
+ if(attack_type & ATTACK_TYPE_THROWN)
final_block_chance += 30
- if(attack_type == LEAP_ATTACK)
+ if(attack_type & ATTACK_TYPE_TACKLE)
final_block_chance = 100
. = ..()
- if(.)
- on_shield_block(owner, hitby, attack_text, damage, attack_type)
+ if(. & BLOCK_SUCCESS)
+ on_shield_block(owner, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return)
/obj/item/shield/riot/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/melee/baton))
@@ -69,10 +71,10 @@
playsound(owner, 'sound/effects/glassbr3.ogg', 100)
new /obj/item/shard((get_turf(src)))
-/obj/item/shield/riot/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/shield/riot/on_shield_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(obj_integrity <= damage)
var/turf/T = get_turf(owner)
- T.visible_message("[hitby] destroys [src]! ")
+ T.visible_message("[attack_text] destroys [src]! ")
shatter(owner)
qdel(src)
return FALSE
@@ -139,11 +141,11 @@
. = ..()
icon_state = "[base_icon_state]0"
-/obj/item/shield/energy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- return 0
-
-/obj/item/shield/energy/IsReflect()
- return (active)
+/obj/item/shield/energy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if((attack_type & ATTACK_TYPE_PROJECTILE) && is_energy_reflectable_projectile(object))
+ block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
+ return BLOCK_SUCCESS | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT
+ return ..()
/obj/item/shield/energy/attack_self(mob/living/carbon/human/user)
if(clumsy_check && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
@@ -182,10 +184,10 @@
w_class = WEIGHT_CLASS_NORMAL
var/active = 0
-/obj/item/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(active)
- return ..()
- return 0
+/obj/item/shield/riot/tele/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!active)
+ return BLOCK_NONE
+ return ..()
/obj/item/shield/riot/tele/attack_self(mob/living/user)
active = !active
@@ -249,7 +251,7 @@
transparent = FALSE
item_flags = SLOWS_WHILE_IN_HAND
-/obj/item/shield/riot/implant/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
+/obj/item/shield/riot/implant/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
final_block_chance = 60 //Massive shield
return ..()
diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm
index f864df5a21..00e48fd12a 100644
--- a/code/game/objects/items/stacks/bscrystal.dm
+++ b/code/game/objects/items/stacks/bscrystal.dm
@@ -5,6 +5,7 @@
icon = 'icons/obj/telescience.dmi'
icon_state = "bluespace_crystal"
singular_name = "bluespace crystal"
+ dye_color = DYE_COSMIC
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT)
points = 50
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 75db89f616..c8ee6b05c7 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -22,6 +22,8 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
new/datum/stack_recipe("spout flask", /obj/item/glasswork/glass_base/spouty, 20), \
new/datum/stack_recipe("small bulb flask", /obj/item/glasswork/glass_base/flask_small, 5), \
new/datum/stack_recipe("large bottle flask", /obj/item/glasswork/glass_base/flask_large, 15), \
+ new/datum/stack_recipe("tea cup", /obj/item/glasswork/glass_base/tea_plate, 5), \
+ new/datum/stack_recipe("tea plate", /obj/item/glasswork/glass_base/tea_cup, 5), \
)), \
))
@@ -137,7 +139,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
return ..()
/obj/item/stack/sheet/plasmaglass/on_solar_construction(obj/machinery/power/solar/S)
- S.obj_integrity *= 1.2
+ S.max_integrity *= 1.2
S.efficiency *= 1.2
/*
@@ -170,7 +172,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
..()
/obj/item/stack/sheet/rglass/on_solar_construction(obj/machinery/power/solar/S)
- S.obj_integrity *= 2
+ S.max_integrity *= 2
/obj/item/stack/sheet/rglass/cyborg
custom_materials = null
@@ -218,7 +220,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
. += GLOB.prglass_recipes
/obj/item/stack/sheet/plasmarglass/on_solar_construction(obj/machinery/power/solar/S)
- S.obj_integrity *= 2.2
+ S.max_integrity *= 2.2
S.efficiency *= 1.2
GLOBAL_LIST_INIT(titaniumglass_recipes, list(
@@ -242,7 +244,7 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
. += GLOB.titaniumglass_recipes
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
- S.obj_integrity *= 2.5
+ S.max_integrity *= 2.5
S.efficiency *= 1.5
GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
@@ -270,7 +272,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
. += GLOB.plastitaniumglass_recipes
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
- S.obj_integrity *= 2
+ S.max_integrity *= 2
S.efficiency *= 2
/obj/item/shard
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index b596e40e36..6ddd7c136a 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -179,11 +179,24 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
GLOBAL_LIST_INIT(plasteel_recipes, list ( \
new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = TRUE), \
new/datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 50), \
- new/datum/stack_recipe("crate", /obj/structure/closet/crate, 5, time = 90, one_per_turf = TRUE), \
- null, \
+ new /datum/stack_recipe_list("crates", list( \
+ new /datum/stack_recipe("gray crate", /obj/structure/closet/crate, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("internals crate", /obj/structure/closet/crate/internals, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("trash cart", /obj/structure/closet/crate/trashcart, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("medical crate", /obj/structure/closet/crate/medical, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("freezer crate", /obj/structure/closet/crate/freezer, 8, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("blood bag crate", /obj/structure/closet/crate/freezer/blood, 8, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("surplus limbs crate", /obj/structure/closet/crate/freezer/surplus_limbs, 8, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("radiation containment crate", /obj/structure/closet/crate/radiation, 8, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("hydroponics crate", /obj/structure/closet/crate/hydroponics, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("engineering crate", /obj/structure/closet/crate/engineering, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("eletrical crate", /obj/structure/closet/crate/engineering/electrical, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("RCD storage crate", /obj/structure/closet/crate/rcd, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("science crate", /obj/structure/closet/crate/science, 5, time = 50, one_per_turf = 1, on_floor = 1), \
+ )), \
new /datum/stack_recipe_list("airlock assemblies", list( \
- new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 6, time = 50, one_per_turf = 1, on_floor = 1), \
- new/datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 8, time = 50, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 6, time = 50, one_per_turf = 1, on_floor = 1), \
)), \
))
@@ -368,6 +381,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
new/datum/stack_recipe("towel", /obj/item/reagent_containers/rag/towel, 3), \
new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3), \
new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4), \
+ new/datum/stack_recipe("padded floor tile", /obj/item/stack/tile/padded, 1, 4, 20), \
null, \
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1),\
new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 1),\
@@ -768,6 +782,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
new /datum/stack_recipe("water bottle", /obj/item/reagent_containers/glass/beaker/waterbottle/empty), \
new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/glass/beaker/waterbottle/large/empty,3), \
new /datum/stack_recipe("shower curtain", /obj/structure/curtain, 10, time = 10, one_per_turf = 1, on_floor = 1), \
+ new /datum/stack_recipe("laser pointer case", /obj/item/glasswork/glass_base/laserpointer_shell, 30), \
new /datum/stack_recipe("wet floor sign", /obj/item/caution, 2)))
/obj/item/stack/sheet/plastic
@@ -845,4 +860,3 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra
merge_type = /obj/item/stack/sheet/cotton/durathread
pull_effort = 70
loom_result = /obj/item/stack/sheet/durathread
-
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 5f2795c857..70b00c72ec 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -240,8 +240,7 @@
else if(istype(O, /obj/item/restraints/handcuffs/cable))
var/obj/item/cuffs = O
- cuffs.item_color = item_color
- cuffs.update_icon()
+ cuffs.color = color
if (QDELETED(O))
return //It's a stack and has already been merged
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 2e537d3eff..ff81b4340a 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -142,6 +142,14 @@
turf_type = /turf/open/floor/wood
resistance_flags = FLAMMABLE
+//Cloth Floors
+
+/obj/item/stack/tile/padded
+ name = "padded floor tile"
+ desc = "These are soft and cushy, they'd make good pillows. They look very comfortable, although what they're used for is discomforting."
+ icon_state = "tile_padded"
+ turf_type = /turf/open/floor/padded
+
//Basalt
/obj/item/stack/tile/basalt
name = "basalt tile"
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 0a29562d6b..dc6f5f701e 100755
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -22,7 +22,7 @@
for(var/obj/item/I in contents)
. += I.get_belt_overlay()
-/obj/item/storage/belt/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/storage/belt/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands && onmob_overlays)
for(var/obj/item/I in contents)
@@ -708,6 +708,7 @@
desc = "A dorky fannypack for keeping small items in."
icon_state = "fannypack_leather"
item_state = "fannypack_leather"
+ dying_key = DYE_REGISTRY_FANNYPACK
/obj/item/storage/belt/fannypack/ComponentInitialize()
. = ..()
@@ -804,3 +805,4 @@
attack_verb = list("bashed", "slashes", "prods", "pokes")
fitting_swords = list(/obj/item/melee/rapier)
starting_sword = /obj/item/melee/rapier
+
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index 037ae51e30..874c858b3f 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -404,6 +404,12 @@
new /obj/item/gun/ballistic/revolver(src)
new /obj/item/ammo_box/a357(src)
+/obj/item/storage/box/syndie_kit/pistol
+
+/obj/item/storage/box/syndie_kit/pistol/PopulateContents()
+ new /obj/item/gun/ballistic/automatic/pistol(src)
+ new /obj/item/ammo_box/magazine/m10mm(src)
+
/obj/item/storage/box/syndie_kit/contract_kit
name = "contractor kit"
desc = "Supplied to Syndicate contractors in active mission areas."
@@ -494,4 +500,4 @@
new item1(src) // Create three, non repeat items from the list.
new item2(src)
new item3(src)
- new /obj/item/paper/contractor_guide(src) //Paper guide
\ No newline at end of file
+ new /obj/item/paper/contractor_guide(src) //Paper guide
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 130bc55244..0fc47f649a 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -15,7 +15,7 @@
attack_verb = list("beaten")
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
- var/stamforce = 25
+ var/stamforce = 35
var/status = FALSE
var/knockdown = TRUE
var/obj/item/stock_parts/cell/cell
@@ -170,7 +170,7 @@
return disarming || (user.a_intent != INTENT_HARM)
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, disarming = FALSE)
- if(L.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that
+ if(L.run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user) & BLOCK_SUCCESS) //No message; check_shields() handles that
playsound(L, 'sound/weapons/genhit.ogg', 50, 1)
return FALSE
var/stunpwr = stamforce
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index c1cbf534ca..6ff5dfc8ad 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -376,8 +376,8 @@
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
-/obj/item/reagent_containers/chemtank/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) //apply chemcolor and level
- . = list()
+/obj/item/reagent_containers/chemtank/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE) //apply chemcolor and level
+ . = ..()
//inhands + reagent_filling
if(!isinhands && reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "backpackmob-10")
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index 0d2892cb4a..e9f517a9f1 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -53,8 +53,8 @@
base_overlay.appearance_flags = RESET_COLOR
. += base_overlay
-/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(isinhands && random_color)
var/mutable_appearance/M = mutable_appearance(icon_file, "screwdriver_head")
M.appearance_flags = RESET_COLOR
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index ba51fa3d65..9291b72467 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -273,15 +273,12 @@
var/obj/item/twohanded/dualsaber/toy/newSaber = new /obj/item/twohanded/dualsaber/toy(user.loc)
if(hacked) // That's right, we'll only check the "original" "sword".
newSaber.hacked = TRUE
- newSaber.item_color = "rainbow"
qdel(W)
qdel(src)
else if(istype(W, /obj/item/multitool))
if(!hacked)
hacked = TRUE
- item_color = "rainbow"
to_chat(user, "RNBW_ENGAGE ")
-
if(active)
update_icon()
user.update_inv_hands()
@@ -352,7 +349,7 @@
update_light()
return TRUE
-/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(active)
if(isinhands)
@@ -454,11 +451,8 @@
total_mass_on = TOTAL_MASS_TOY_SWORD
sharpness = IS_BLUNT
-/obj/item/twohanded/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- return FALSE
-
-/obj/item/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles
- return FALSE
+/obj/item/twohanded/dualsaber/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ return BLOCK_NONE
/obj/item/twohanded/dualsaber/hypereutactic/toy
name = "\improper DX Hyper-Euplastic LightSword"
@@ -474,11 +468,8 @@
slowdown_wielded = 0
sharpness = IS_BLUNT
-/obj/item/twohanded/dualsaber/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- return FALSE
-
-/obj/item/twohanded/dualsaber/hypereutactic/toy/IsReflect()//Stops it from reflecting energy projectiles
- return FALSE
+/obj/item/twohanded/dualsaber/hypereutactic/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ return BLOCK_NONE
/obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow
name = "\improper Hyper-Euclidean Reciprocating Trigonometric Zweihander"
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index b188250fff..2b6a91eb51 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -281,7 +281,7 @@
hitsound = "swing_hit"
var/hitsound_on = 'sound/weapons/blade1.ogg'
armour_penetration = 35
- item_color = "green"
+ var/saber_color = "green"
light_color = "#00ff00"//green
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
block_chance = 75
@@ -289,6 +289,8 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
resistance_flags = FIRE_PROOF
var/hacked = FALSE
+ /// Can this reflect all energy projectiles?
+ var/can_reflect = TRUE
var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
var/list/possible_colors = list("red", "blue", "green", "purple")
var/list/rainbow_colors = list(LIGHT_COLOR_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)
@@ -324,8 +326,8 @@
/obj/item/twohanded/dualsaber/Initialize()
. = ..()
if(LAZYLEN(possible_colors))
- item_color = pick(possible_colors)
- switch(item_color)
+ saber_color = pick(possible_colors)
+ switch(saber_color)
if("red")
light_color = LIGHT_COLOR_RED
if("green")
@@ -341,7 +343,7 @@
/obj/item/twohanded/dualsaber/update_icon_state()
if(wielded)
- icon_state = "dualsaber[item_color][wielded]"
+ icon_state = "dualsaber[saber_color][wielded]"
else
icon_state = "dualsaber0"
clean_blood()
@@ -373,10 +375,13 @@
else
user.adjustStaminaLoss(25)
-/obj/item/twohanded/dualsaber/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(wielded)
- return ..()
- return 0
+/obj/item/twohanded/dualsaber/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!wielded)
+ return NONE
+ if(can_reflect && is_energy_reflectable_projectile(object) && (attack_type & ATTACK_TYPE_PROJECTILE))
+ block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_RETURN_TO_SENDER //no you
+ return BLOCK_SHOULD_REDIRECT | BLOCK_SUCCESS | BLOCK_REDIRECTED
+ return ..()
/obj/item/twohanded/dualsaber/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up
if(wielded)
@@ -419,10 +424,6 @@
/obj/item/twohanded/dualsaber/proc/rainbow_process()
light_color = pick(rainbow_colors)
-/obj/item/twohanded/dualsaber/IsReflect()
- if(wielded)
- return 1
-
/obj/item/twohanded/dualsaber/ignition_effect(atom/A, mob/user)
// same as /obj/item/melee/transforming/energy, mostly
if(!wielded)
@@ -456,7 +457,7 @@
if(!hacked)
hacked = TRUE
to_chat(user, "2XRNBW_ENGAGE ")
- item_color = "rainbow"
+ saber_color = "rainbow"
update_icon()
else
to_chat(user, "It's starting to look like a triple rainbow - no, nevermind. ")
@@ -530,7 +531,7 @@
update_light()
return TRUE
-/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(isinhands)
var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem")
@@ -560,15 +561,13 @@
block_chance = 50
armour_penetration = 0
var/chaplain_spawnable = TRUE
+ can_reflect = FALSE
obj_flags = UNIQUE_RENAME
/obj/item/twohanded/dualsaber/hypereutactic/chaplain/ComponentInitialize()
. = ..()
AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect()
- return FALSE
-
//spears
/obj/item/twohanded/spear
icon_state = "spearglass0"
@@ -752,12 +751,16 @@
armour_penetration = 100
force_on = 30
-/obj/item/twohanded/required/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
+/obj/item/twohanded/required/chainsaw/doomslayer/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ block_return[BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE] = 100
+ return ..()
+
+/obj/item/twohanded/required/chainsaw/doomslayer/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
owner.visible_message("Ranged attacks just make [owner] angrier! ")
playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1)
- return 1
- return 0
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return ..()
//GREY TIDE
/obj/item/twohanded/spear/grey_tide
@@ -897,19 +900,20 @@
AddComponent(/datum/component/butchering, 20, 105)
AddElement(/datum/element/sword_point)
-/obj/item/twohanded/vibro_weapon/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/twohanded/vibro_weapon/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(wielded)
final_block_chance *= 2
- if(wielded || attack_type != PROJECTILE_ATTACK)
+ if(wielded || !(attack_type & ATTACK_TYPE_PROJECTILE))
if(prob(final_block_chance))
- if(attack_type == PROJECTILE_ATTACK)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
owner.visible_message("[owner] deflects [attack_text] with [src]! ")
playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1)
- return 1
+ block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
+ return BLOCK_SUCCESS | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT | BLOCK_PHYSICAL_EXTERNAL
else
owner.visible_message("[owner] parries [attack_text] with [src]! ")
- return 1
- return 0
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return NONE
/obj/item/twohanded/vibro_weapon/update_icon_state()
icon_state = "hfrequency[wielded]"
@@ -1055,11 +1059,9 @@
var/mob/living/silicon/robot/R = loc
. = R.get_cell()
-/obj/item/twohanded/electrostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(!on)
- return FALSE
- if((attack_type == PROJECTILE_ATTACK) && !can_block_projectiles)
- return FALSE
+/obj/item/twohanded/electrostaff/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!on || (!can_block_projectiles && (attack_type & ATTACK_TYPE_PROJECTILE)))
+ return BLOCK_NONE
return ..()
/obj/item/twohanded/electrostaff/proc/min_hitcost()
@@ -1180,7 +1182,7 @@
if(iscyborg(target))
..()
return
- if(target.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that
+ if(target.run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user) & BLOCK_SUCCESS) //No message; run_block() handles that
playsound(target, 'sound/weapons/genhit.ogg', 50, 1)
return FALSE
if(user.a_intent != INTENT_HARM)
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index bc9c3255a6..8496a8a216 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -84,6 +84,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
name = "purified longsword"
desc = "A hastily-purified longsword. While not as holy as it could be, it's still a formidable weapon against those who would rather see you dead."
force = 25
+ block_chance = 0
/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!! \nActivate it in your hand to point to the nearest victim."
@@ -155,8 +156,10 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
return
to_chat(user, "[src] thrums and points to the [dir2text(get_dir(user, closest_victim))]. ")
-/obj/item/claymore/highlander/IsReflect()
- return 1 //YOU THINK YOUR PUNY LASERS CAN STOP ME?
+/obj/item/claymore/highlander/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if((attack_type & ATTACK_TYPE_PROJECTILE) && is_energy_reflectable_projectile(object))
+ return BLOCK_SUCCESS | BLOCK_SHOULD_REDIRECT | BLOCK_PHYSICAL_EXTERNAL | BLOCK_REDIRECTED
+ return ..()
/obj/item/claymore/highlander/proc/add_notch(mob/living/user) //DYNAMIC CLAYMORE PROGRESSION SYSTEM - THIS IS THE FUTURE
notches++
@@ -498,7 +501,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
icon_state = "catwhip"
/obj/item/melee/skateboard
- name = "skateboard"
+ name = "improvised skateboard"
desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon."
icon_state = "skateboard"
item_state = "skateboard"
@@ -506,11 +509,37 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throwforce = 4
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("smacked", "whacked", "slammed", "smashed")
+ ///The vehicle counterpart for the board
+ var/board_item_type = /obj/vehicle/ridden/scooter/skateboard
/obj/item/melee/skateboard/attack_self(mob/user)
- new /obj/vehicle/ridden/scooter/skateboard(get_turf(user))
+ if(!user.canUseTopic(src, TRUE, FALSE, TRUE))
+ return
+ var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))
+ S.buckle_mob(user)
qdel(src)
+/obj/item/melee/skateboard/pro
+ name = "skateboard"
+ desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made."
+ icon_state = "skateboard2"
+ item_state = "skateboard2"
+ board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro
+
+/obj/item/melee/skateboard/hoverboard
+ name = "hoverboard"
+ desc = "A blast from the past, so retro!"
+ icon_state = "hoverboard_red"
+ item_state = "hoverboard_red"
+ board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard
+
+/obj/item/melee/skateboard/hoverboard/admin
+ name = "\improper Board Of Directors"
+ desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too."
+ icon_state = "hoverboard_nt"
+ item_state = "hoverboard_nt"
+ board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin
+
/obj/item/melee/baseball_bat
name = "baseball bat"
desc = "There ain't a skull in the league that can withstand a swatter."
@@ -581,14 +610,13 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 12
throwforce = 15
-/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
- var/picksound = rand(1,2)
- var/turf = get_turf(src)
- if(picksound == 1)
- playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, 1)
- if(picksound == 2)
- playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, 1)
- return 1
+/obj/item/melee/baseball_bat/ablative/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ //some day this will reflect thrown items instead of lasers
+ if(is_energy_reflectable_projectile(object) && (attack_type == ATTACK_TYPE_PROJECTILE))
+ var/turf = get_turf(src)
+ playsound(turf, pick('sound/weapons/effects/batreflect1.ogg', 'sound/weapons/effects/batreflect2.ogg'), 50, 1)
+ return BLOCK_SUCCESS | BLOCK_SHOULD_REDIRECT | BLOCK_PHYSICAL_EXTERNAL | BLOCK_REDIRECTED
+ return ..()
/obj/item/melee/baseball_bat/ablative/syndi
name = "syndicate major league bat"
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 4eaa0b4e0a..d2d72193b7 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -213,9 +213,78 @@
/obj/vv_get_dropdown()
. = ..()
- .["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=[REF(src)]"
- .["Osay"] = "?_src_=vars;[HrefToken()];osay[REF(src)]"
- .["Modify armor values"] = "?_src_=vars;[HrefToken()];modarmor=[REF(src)]"
+ VV_DROPDOWN_OPTION("", "---")
+ VV_DROPDOWN_OPTION(VV_HK_MASS_DEL_TYPE, "Delete all of type")
+ VV_DROPDOWN_OPTION(VV_HK_OSAY, "Object Say")
+ VV_DROPDOWN_OPTION(VV_HK_ARMOR_MOD, "Modify armor values")
+
+/obj/vv_do_topic(list/href_list)
+ if(!(. = ..()))
+ return
+ if(href_list[VV_HK_OSAY])
+ if(check_rights(R_FUN, FALSE))
+ usr.client.object_say(src)
+ if(href_list[VV_HK_ARMOR_MOD])
+ var/list/pickerlist = list()
+ var/list/armorlist = armor.getList()
+
+ for (var/i in armorlist)
+ pickerlist += list(list("value" = armorlist[i], "name" = i))
+
+ var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [src]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, inputtype = "text", values = pickerlist)
+
+ if (islist(result))
+ if (result["button"] != 2) // If the user pressed the cancel button
+ // text2num conveniently returns a null on invalid values
+ armor = armor.setRating(melee = text2num(result["values"]["melee"]),\
+ bullet = text2num(result["values"]["bullet"]),\
+ laser = text2num(result["values"]["laser"]),\
+ energy = text2num(result["values"]["energy"]),\
+ bomb = text2num(result["values"]["bomb"]),\
+ bio = text2num(result["values"]["bio"]),\
+ rad = text2num(result["values"]["rad"]),\
+ fire = text2num(result["values"]["fire"]),\
+ acid = text2num(result["values"]["acid"]))
+ log_admin("[key_name(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]")
+ message_admins("[key_name_admin(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid] ")
+ if(href_list[VV_HK_MASS_DEL_TYPE])
+ if(check_rights(R_DEBUG|R_SERVER))
+ var/action_type = alert("Strict type ([type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel")
+ if(action_type == "Cancel" || !action_type)
+ return
+
+ if(alert("Are you really sure you want to delete all objects of type [type]?",,"Yes","No") != "Yes")
+ return
+
+ if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes")
+ return
+
+ var/O_type = type
+ switch(action_type)
+ if("Strict type")
+ var/i = 0
+ for(var/obj/Obj in world)
+ if(Obj.type == O_type)
+ i++
+ qdel(Obj)
+ CHECK_TICK
+ if(!i)
+ to_chat(usr, "No objects of this type exist")
+ return
+ log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")
+ message_admins("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")
+ if("Type and subtypes")
+ var/i = 0
+ for(var/obj/Obj in world)
+ if(istype(Obj,O_type))
+ i++
+ qdel(Obj)
+ CHECK_TICK
+ if(!i)
+ to_chat(usr, "No objects of this type exist")
+ return
+ log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
+ message_admins("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
/obj/examine(mob/user)
. = ..()
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 06c1d96711..c593451c24 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -317,7 +317,7 @@
throwforce = 10
throw_range = 3
hitsound = 'sound/items/trayhit1.ogg'
- hit_reaction_chance = 50
+ block_chance = 50
custom_materials = list(/datum/material/iron = 2000)
var/break_chance = 5 //Likely hood of smashing the chair.
var/obj/structure/chair/origin_type = /obj/structure/chair
@@ -362,18 +362,17 @@
new stack_type(get_turf(loc))
qdel(src)
-/obj/item/chair/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == UNARMED_ATTACK && prob(hit_reaction_chance))
- owner.visible_message("[owner] fends off [attack_text] with [src]! ")
- return 1
- return 0
+/obj/item/chair/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!(attack_type & ATTACK_TYPE_UNARMED))
+ return NONE
+ return ..()
/obj/item/chair/afterattack(atom/target, mob/living/carbon/user, proximity)
. = ..()
if(!proximity)
return
if(prob(break_chance))
- user.visible_message("[user] smashes \the [src] to pieces against \the [target] ")
+ user.visible_message("[user] smashes [src] to pieces against [target] ")
if(iscarbon(target))
var/mob/living/carbon/C = target
if(C.health < C.maxHealth*0.5)
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 0991351102..57d7e08862 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -16,8 +16,8 @@ LINEN BINS
throw_speed = 1
throw_range = 2
w_class = WEIGHT_CLASS_TINY
- item_color = "white"
resistance_flags = FLAMMABLE
+ dying_key = DYE_REGISTRY_BEDSHEET
dog_fashion = /datum/dog_fashion/head/ghost
var/list/dream_messages = list("white")
@@ -52,79 +52,66 @@ LINEN BINS
/obj/item/bedsheet/blue
icon_state = "sheetblue"
- item_color = "blue"
dream_messages = list("blue")
/obj/item/bedsheet/green
icon_state = "sheetgreen"
- item_color = "green"
dream_messages = list("green")
/obj/item/bedsheet/grey
icon_state = "sheetgrey"
- item_color = "grey"
dream_messages = list("grey")
/obj/item/bedsheet/orange
icon_state = "sheetorange"
- item_color = "orange"
dream_messages = list("orange")
/obj/item/bedsheet/purple
icon_state = "sheetpurple"
- item_color = "purple"
dream_messages = list("purple")
/obj/item/bedsheet/patriot
name = "patriotic bedsheet"
desc = "You've never felt more free than when sleeping on this."
icon_state = "sheetUSA"
- item_color = "sheetUSA"
dream_messages = list("America", "freedom", "fireworks", "bald eagles")
/obj/item/bedsheet/rainbow
name = "rainbow bedsheet"
desc = "A multicolored blanket. It's actually several different sheets cut up and sewn together."
icon_state = "sheetrainbow"
- item_color = "rainbow"
dream_messages = list("red", "orange", "yellow", "green", "blue", "purple", "a rainbow")
/obj/item/bedsheet/red
icon_state = "sheetred"
- item_color = "red"
dream_messages = list("red")
/obj/item/bedsheet/yellow
icon_state = "sheetyellow"
- item_color = "yellow"
dream_messages = list("yellow")
/obj/item/bedsheet/mime
name = "mime's blanket"
desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this."
icon_state = "sheetmime"
- item_color = "mime"
dream_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime")
/obj/item/bedsheet/clown
name = "clown's blanket"
desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas."
icon_state = "sheetclown"
- item_color = "clown"
dream_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown")
/obj/item/bedsheet/captain
name = "captain's bedsheet"
desc = "It has a Nanotrasen symbol on it, and was woven with a revolutionary new kind of thread guaranteed to have 0.01% permeability for most non-chemical substances, popular among most modern captains."
icon_state = "sheetcaptain"
- item_color = "captain"
dream_messages = list("authority", "a golden ID", "sunglasses", "a green disc", "an antique gun", "the captain")
/obj/item/bedsheet/rd
name = "research director's bedsheet"
desc = "It appears to have a beaker emblem, and is made out of fire-resistant material, although it probably won't protect you in the event of fires you're familiar with every day."
icon_state = "sheetrd"
- item_color = "director"
dream_messages = list("authority", "a silvery ID", "a bomb", "a mech", "a facehugger", "maniacal laughter", "the research director")
// for Free Golems.
@@ -137,111 +124,94 @@ LINEN BINS
name = "medical blanket"
desc = "It's a sterilized* blanket commonly used in the Medbay. *Sterilization is voided if a virologist is present onboard the station."
icon_state = "sheetmedical"
- item_color = "medical"
dream_messages = list("healing", "life", "surgery", "a doctor")
/obj/item/bedsheet/cmo
name = "chief medical officer's bedsheet"
desc = "It's a sterilized blanket that has a cross emblem. There's some cat fur on it, likely from Runtime."
icon_state = "sheetcmo"
- item_color = "cmo"
dream_messages = list("authority", "a silvery ID", "healing", "life", "surgery", "a cat", "the chief medical officer")
/obj/item/bedsheet/hos
name = "head of security's bedsheet"
desc = "It is decorated with a shield emblem. While crime doesn't sleep, you do, but you are still THE LAW!"
icon_state = "sheethos"
- item_color = "hosred"
dream_messages = list("authority", "a silvery ID", "handcuffs", "a baton", "a flashbang", "sunglasses", "the head of security")
/obj/item/bedsheet/hop
name = "head of personnel's bedsheet"
desc = "It is decorated with a key emblem. For those rare moments when you can rest and cuddle with Ian without someone screaming for you over the radio."
icon_state = "sheethop"
- item_color = "hop"
dream_messages = list("authority", "a silvery ID", "obligation", "a computer", "an ID", "a corgi", "the head of personnel")
/obj/item/bedsheet/ce
name = "chief engineer's bedsheet"
desc = "It is decorated with a wrench emblem. It's highly reflective and stain resistant, so you don't need to worry about ruining it with oil."
icon_state = "sheetce"
- item_color = "chief"
dream_messages = list("authority", "a silvery ID", "the engine", "power tools", "an APC", "a parrot", "the chief engineer")
/obj/item/bedsheet/qm
name = "quartermaster's bedsheet"
desc = "It is decorated with a crate emblem in silver lining. It's rather tough, and just the thing to lie on after a hard day of pushing paper."
icon_state = "sheetqm"
- item_color = "qm"
dream_messages = list("a grey ID", "a shuttle", "a crate", "a sloth", "the quartermaster")
/obj/item/bedsheet/brown
icon_state = "sheetbrown"
- item_color = "cargo"
dream_messages = list("brown")
/obj/item/bedsheet/black
icon_state = "sheetblack"
- item_color = "black"
dream_messages = list("black")
/obj/item/bedsheet/centcom
name = "\improper CentCom bedsheet"
desc = "Woven with advanced nanothread for warmth as well as being very decorated, essential for all officials."
icon_state = "sheetcentcom"
- item_color = "centcom"
dream_messages = list("a unique ID", "authority", "artillery", "an ending")
/obj/item/bedsheet/syndie
name = "syndicate bedsheet"
desc = "It has a syndicate emblem and it has an aura of evil."
icon_state = "sheetsyndie"
- item_color = "syndie"
dream_messages = list("a green disc", "a red crystal", "a glowing blade", "a wire-covered ID")
/obj/item/bedsheet/cult
name = "cultist's bedsheet"
desc = "You might dream of Nar'Sie if you sleep with this. It seems rather tattered and glows of an eldritch presence."
icon_state = "sheetcult"
- item_color = "cult"
dream_messages = list("a tome", "a floating red crystal", "a glowing sword", "a bloody symbol", "a massive humanoid figure")
/obj/item/bedsheet/wiz
name = "wizard's bedsheet"
desc = "A special fabric enchanted with magic so you can have an enchanted night. It even glows!"
icon_state = "sheetwiz"
- item_color = "wiz"
dream_messages = list("a book", "an explosion", "lightning", "a staff", "a skeleton", "a robe", "magic")
/obj/item/bedsheet/nanotrasen
name = "nanotrasen bedsheet"
desc = "It has the Nanotrasen logo on it and has an aura of duty."
icon_state = "sheetNT"
- item_color = "nanotrasen"
dream_messages = list("authority", "an ending")
/obj/item/bedsheet/ian
icon_state = "sheetian"
- item_color = "ian"
dream_messages = list("a dog", "a corgi", "woof", "bark", "arf")
/obj/item/bedsheet/runtime
icon_state = "sheetruntime"
- item_color = "runtime"
dream_messages = list("a kitty", "a cat", "meow", "purr", "nya~")
/obj/item/bedsheet/pirate
name = "pirate's bedsheet"
desc = "It has a Jolly Roger emblem on it and has a faint scent of grog."
icon_state = "sheetpirate"
- item_color = "black"
dream_messages = list("doing whatever oneself wants", "cause a pirate is free", "being a pirate", "stealing", "landlubbers", "gold", "a buried treasure", "yarr", "avast", "a swashbuckler", "sailing the Seven Seas", "a parrot", "a monkey", "an island", "a talking skull")
/obj/item/bedsheet/gondola
name = "gondola bedsheet"
desc = "A precious bedsheet made from the hide of a rare and peculiar critter."
icon_state = "sheetgondola"
- item_color = "cargo"
var/g_mouth
var/g_eyes
@@ -252,7 +222,7 @@ LINEN BINS
add_overlay(g_mouth)
add_overlay(g_eyes)
-/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
+/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands)
. += mutable_appearance(icon_file, g_mouth)
@@ -262,14 +232,12 @@ LINEN BINS
name = "cosmic space bedsheet"
desc = "Made from the dreams of those who wonder at the stars."
icon_state = "sheetcosmos"
- item_color = "cosmos"
dream_messages = list("the infinite cosmos", "Hans Zimmer music", "a flight through space", "the galaxy", "being fabulous", "shooting stars")
light_power = 2
light_range = 1.4
/obj/item/bedsheet/random
icon_state = "random_bedsheet"
- item_color = "rainbow"
name = "random bedsheet"
desc = "If you're reading this description ingame, something has gone wrong! Honk!"
diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm
index 5ec3851128..e51aeafdc1 100644
--- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm
+++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm
@@ -100,3 +100,12 @@
if(isliving(A))
to_chat(A, "You're suddenly forced into a tiny, compressed space! ")
qdel(src)
+
+/obj/structure/closet/body_bag/containment
+ name = "containment body bag"
+ desc = "A folded heavy body bag designed for the storage and transportation of cadavers with heavy radiation."
+ icon = 'icons/obj/bodybag.dmi'
+ icon_state = "radbodybag"
+ mob_storage_capacity = 1
+ foldedbag_path = /obj/item/bodybag/containment
+ rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index b0dfec6318..2c977a34d6 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -179,6 +179,7 @@
desc = "A crate with a radiation sign on it."
name = "radiation crate"
icon_state = "radiation"
+ rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
/obj/structure/closet/crate/hydroponics
name = "hydroponics crate"
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 79600d5bf2..ac6ea27821 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -243,6 +243,7 @@
//door.req_access = req_access
door.electronics = electronics
door.heat_proof = heat_proof_finished
+ door.security_level = 0
if(electronics.one_access)
door.req_one_access = electronics.accesses
else
diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm
index 28d74422fc..fe9c4e7bbc 100644
--- a/code/game/objects/structures/door_assembly_types.dm
+++ b/code/game/objects/structures/door_assembly_types.dm
@@ -114,7 +114,7 @@
airlock_type = /obj/machinery/door/airlock/highsecurity
noglass = TRUE
material_type = /obj/item/stack/sheet/plasteel
- material_amt = 6
+ material_amt = 4
/obj/structure/door_assembly/door_assembly_vault
name = "vault door assembly"
@@ -124,7 +124,7 @@
airlock_type = /obj/machinery/door/airlock/vault
noglass = TRUE
material_type = /obj/item/stack/sheet/plasteel
- material_amt = 8
+ material_amt = 6
/obj/structure/door_assembly/door_assembly_shuttle
name = "shuttle airlock assembly"
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index 65145c0eed..c918e7b867 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -674,17 +674,14 @@
O.equip(new_spawn, FALSE, new_spawn.client)
SSjob.equip_loadout(null, new_spawn, FALSE)
SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn)
- new_spawn.AddElement(/datum/element/ghost_role_eligibility)
+ new_spawn.AddElement(/datum/element/ghost_role_eligibility, free_ghosting = TRUE)
new_spawn.AddElement(/datum/element/dusts_on_catatonia)
new_spawn.AddElement(/datum/element/dusts_on_leaving_area,list(A.type,/area/hilbertshotel))
ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT)
ADD_TRAIT(new_spawn, TRAIT_EXEMPT_HEALTH_EVENTS, GHOSTROLE_TRAIT)
- ADD_TRAIT(new_spawn, TRAIT_NO_MIDROUND_ANTAG, GHOSTROLE_TRAIT) //The mob can't be made into a random antag, they are still elegible for ghost roles popups.
+ ADD_TRAIT(new_spawn, TRAIT_NO_MIDROUND_ANTAG, GHOSTROLE_TRAIT) //The mob can't be made into a random antag, they are still eligible for ghost roles popups.
ADD_TRAIT(new_spawn, TRAIT_PACIFISM, GHOSTROLE_TRAIT)
- to_chat(new_spawn,"You may be sharing your cafe with some ninja-captured individuals, so make sure to only interact with the ghosts you hear as a ghost! ")
- to_chat(new_spawn,"You can turn yourself into a ghost and freely reenter your body with the ghost action. ")
- var/datum/action/ghost/G = new(new_spawn)
- G.Grant(new_spawn)
+ to_chat(new_spawn,"Ghosting is free! ")
var/datum/action/toggle_dead_chat_mob/D = new(new_spawn)
D.Grant(new_spawn)
diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm
deleted file mode 100644
index bba51035fe..0000000000
--- a/code/game/objects/structures/musician.dm
+++ /dev/null
@@ -1,383 +0,0 @@
-
-#define MUSICIAN_HEARCHECK_MINDELAY 4
-#define MUSIC_MAXLINES 600
-#define MUSIC_MAXLINECHARS 150
-
-/datum/song
- var/name = "Untitled"
- var/list/lines = new()
- var/tempo = 5 // delay between notes
-
- var/playing = 0 // if we're playing
- var/help = 0 // if help is open
- var/edit = 1 // if we're in editing mode
- var/repeat = 0 // number of times remaining to repeat
- var/max_repeats = 10 // maximum times we can repeat
-
- var/instrumentDir = "piano" // the folder with the sounds
- var/instrumentExt = "ogg" // the file extension
- var/obj/instrumentObj = null // the associated obj playing the sound
- var/last_hearcheck = 0
- var/list/hearing_mobs
-
-/datum/song/New(dir, obj, ext = "ogg")
- tempo = sanitize_tempo(tempo)
- instrumentDir = dir
- instrumentObj = obj
- instrumentExt = ext
-
-/datum/song/Destroy()
- instrumentObj = null
- return ..()
-
-// note is a number from 1-7 for A-G
-// acc is either "b", "n", or "#"
-// oct is 1-8 (or 9 for C)
-/datum/song/proc/playnote(note, acc as text, oct)
- // handle accidental -> B<>C of E<>F
- if(acc == "b" && (note == 3 || note == 6)) // C or F
- if(note == 3)
- oct--
- note--
- acc = "n"
- else if(acc == "#" && (note == 2 || note == 5)) // B or E
- if(note == 2)
- oct++
- note++
- acc = "n"
- else if(acc == "#" && (note == 7)) //G#
- note = 1
- acc = "b"
- else if(acc == "#") // mass convert all sharps to flats, octave jump already handled
- acc = "b"
- note++
-
- // check octave, C is allowed to go to 9
- if(oct < 1 || (note == 3 ? oct > 9 : oct > 8))
- return
-
- // now generate name
- var/soundfile = "sound/instruments/[instrumentDir]/[ascii2text(note+64)][acc][oct].[instrumentExt]"
- soundfile = file(soundfile)
- // make sure the note exists
- if(!fexists(soundfile))
- return
- // and play
- var/turf/source = get_turf(instrumentObj)
- if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/M in get_hearers_in_view(15, source))
- if(!M.client || !(M.client.prefs.toggles & SOUND_INSTRUMENTS))
- continue
- LAZYADD(hearing_mobs, M)
- last_hearcheck = world.time
-
- var/sound/music_played = sound(soundfile)
- for(var/i in hearing_mobs)
- var/mob/M = i
- M.playsound_local(source, null, 100, falloff = 5, S = music_played)
-
-/datum/song/proc/updateDialog(mob/user)
- instrumentObj.updateDialog() // assumes it's an object in world, override if otherwise
-
-/datum/song/proc/shouldStopPlaying(mob/user)
- if(instrumentObj)
- if(!user.canUseTopic(instrumentObj, TRUE, FALSE, FALSE, FALSE))
- return TRUE
- return !instrumentObj.anchored // add special cases to stop in subclasses
- else
- return TRUE
-
-/datum/song/proc/playsong(mob/user)
- while(repeat >= 0)
- var/cur_oct[7]
- var/cur_acc[7]
- for(var/i = 1 to 7)
- cur_oct[i] = 3
- cur_acc[i] = "n"
-
- for(var/line in lines)
- for(var/beat in splittext(lowertext(line), ","))
- var/list/notes = splittext(beat, "/")
- for(var/note in splittext(notes[1], "-"))
- if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case
- playing = FALSE
- hearing_mobs = null
- return
- if(!length(note))
- continue
- var/cur_note = text2ascii(note) - 96
- if(cur_note < 1 || cur_note > 7)
- continue
- var/notelen = length(note)
- var/ni = ""
- for(var/i = length(note[1]) + 1, i <= notelen, i += length(ni))
- ni = note[i]
- if(!text2num(ni))
- if(ni == "#" || ni == "b" || ni == "n")
- cur_acc[cur_note] = ni
- else if(ni == "s")
- cur_acc[cur_note] = "#" // so shift is never required
- else
- cur_oct[cur_note] = text2num(ni)
- if(user.dizziness > 0 && prob(user.dizziness / 2))
- cur_note = CLAMP(cur_note + rand(round(-user.dizziness / 10), round(user.dizziness / 10)), 1, 7)
- if(user.dizziness > 0 && prob(user.dizziness / 5))
- if(prob(30))
- cur_acc[cur_note] = "#"
- else if(prob(42))
- cur_acc[cur_note] = "b"
- else if(prob(75))
- cur_acc[cur_note] = "n"
- playnote(cur_note, cur_acc[cur_note], cur_oct[cur_note])
- if(notes.len >= 2 && text2num(notes[2]))
- sleep(sanitize_tempo(tempo / text2num(notes[2])))
- else
- sleep(tempo)
- repeat--
- hearing_mobs = null
- playing = FALSE
- repeat = 0
- updateDialog(user)
-
-/datum/song/proc/interact(mob/user)
- var/dat = ""
-
- if(lines.len > 0)
- dat += "Playback "
- if(!playing)
- dat += "Play Stop "
- dat += "Repeat Song: "
- dat += repeat > 0 ? "- - " : "- - "
- dat += " [repeat] times "
- dat += repeat < max_repeats ? "+ + " : "+ + "
- dat += " "
- else
- dat += "Play Stop "
- dat += "Repeats left: [repeat] "
- if(!edit)
- dat += "Show Editor "
- else
- dat += "Editing "
- dat += "Hide Editor "
- dat += " Start a New Song "
- dat += " Import a Song "
- var/bpm = round(600 / tempo)
- dat += "Tempo: - [bpm] BPM + "
- var/linecount = 0
- for(var/line in lines)
- linecount += 1
- dat += "Line [linecount]: Edit X [line] "
- dat += "Add Line "
- if(help)
- dat += "Hide Help "
- dat += {"
- Lines are a series of chords, separated by commas (,), each with notes separated by hyphens (-).
- Every note in a chord will play together, with chord timed by the tempo.
-
- Notes are played by the names of the note, and optionally, the accidental, and/or the octave number.
- By default, every note is natural and in octave 3. Defining otherwise is remembered for each note.
- Example: C,D,E,F,G,A,B will play a C major scale.
- After a note has an accidental placed, it will be remembered: C,C4,C,C3 is C3,C4,C4,C3
- Chords can be played simply by seperating each note with a hyphon: A-C#,Cn-E,E-G#,Gn-B
- A pause may be denoted by an empty chord: C,E,,C,G
- To make a chord be a different time, end it with /x, where the chord length will be length
- defined by tempo / x: C,G/2,E/4
- Combined, an example is: E-E4/4,F#/2,G#/8,B/8,E3-E4/4
-
- Lines may be up to [MUSIC_MAXLINECHARS] characters.
- A song may only contain up to [MUSIC_MAXLINES] lines.
- "}
- else
- dat += "Show Help "
-
- var/datum/browser/popup = new(user, "instrument", instrumentObj.name, 700, 500)
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(instrumentObj.icon, instrumentObj.icon_state))
- popup.open()
-
-/datum/song/proc/ParseSong(text)
- set waitfor = FALSE
- //split into lines
- lines = splittext(text, "\n")
- if(lines.len)
- var/bpm_string = "BPM: "
- if(findtext(lines[1], bpm_string, 1, length(bpm_string) + 1))
- var/divisor = text2num(copytext(lines[1], length(bpm_string) + 1)) || 120 // default
- tempo = sanitize_tempo(600 / round(divisor, 1))
- lines.Cut(1, 2)
- else
- tempo = sanitize_tempo(5) // default 120 BPM
- if(lines.len > MUSIC_MAXLINES)
- to_chat(usr, "Too many lines!")
- lines.Cut(MUSIC_MAXLINES + 1)
- var/linenum = 1
- for(var/l in lines)
- if(length_char(l) > MUSIC_MAXLINECHARS)
- to_chat(usr, "Line [linenum] too long!")
- lines.Remove(l)
- else
- linenum++
- updateDialog(usr) // make sure updates when complete
-
-/datum/song/Topic(href, href_list)
- if(!usr.canUseTopic(instrumentObj, TRUE, FALSE, FALSE, FALSE))
- usr << browse(null, "window=instrument")
- usr.unset_machine()
- return
-
- instrumentObj.add_fingerprint(usr)
-
- if(href_list["newsong"])
- lines = new()
- tempo = sanitize_tempo(5) // default 120 BPM
- name = ""
-
- else if(href_list["import"])
- var/t = ""
- do
- t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message)
- if(!in_range(instrumentObj, usr))
- return
-
- if(length_char(t) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
- var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no")
- if(cont == "no")
- break
- while(length_char(t) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
- ParseSong(t)
-
- else if(href_list["help"])
- help = text2num(href_list["help"]) - 1
-
- else if(href_list["edit"])
- edit = text2num(href_list["edit"]) - 1
-
- if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops.
- if(playing)
- return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing.
- repeat += round(text2num(href_list["repeat"]))
- if(repeat < 0)
- repeat = 0
- if(repeat > max_repeats)
- repeat = max_repeats
-
- else if(href_list["tempo"])
- tempo = sanitize_tempo(tempo + text2num(href_list["tempo"]))
-
- else if(href_list["play"])
- playing = TRUE
- spawn()
- playsong(usr)
-
- else if(href_list["newline"])
- var/newline = html_encode(input("Enter your line: ", instrumentObj.name) as text|null)
- if(!newline || !in_range(instrumentObj, usr))
- return
- if(lines.len > MUSIC_MAXLINES)
- return
- if(length(newline) > MUSIC_MAXLINECHARS)
- newline = copytext(newline, 1, MUSIC_MAXLINECHARS)
- lines.Add(newline)
-
- else if(href_list["deleteline"])
- var/num = round(text2num(href_list["deleteline"]))
- if(num > lines.len || num < 1)
- return
- lines.Cut(num, num+1)
-
- else if(href_list["modifyline"])
- var/num = round(text2num(href_list["modifyline"]),1)
- var/content = stripped_input(usr, "Enter your line: ", instrumentObj.name, lines[num], MUSIC_MAXLINECHARS)
- if(!content || !in_range(instrumentObj, usr))
- return
- if(num > lines.len || num < 1)
- return
- lines[num] = content
-
- else if(href_list["stop"])
- playing = FALSE
- hearing_mobs = null
-
- updateDialog(usr)
- return
-
-/datum/song/proc/sanitize_tempo(new_tempo)
- new_tempo = abs(new_tempo)
- return max(round(new_tempo, world.tick_lag), world.tick_lag)
-
-// subclass for handheld instruments, like violin
-/datum/song/handheld
-
-/datum/song/handheld/updateDialog(mob/user)
- instrumentObj.interact(user)
-
-/datum/song/handheld/shouldStopPlaying()
- if(instrumentObj)
- return !isliving(instrumentObj.loc)
- else
- return TRUE
-
-
-//////////////////////////////////////////////////////////////////////////
-
-
-/obj/structure/piano
- name = "space minimoog"
- icon = 'icons/obj/musician.dmi'
- icon_state = "minimoog"
- anchored = TRUE
- density = TRUE
- var/datum/song/song
-
-/obj/structure/piano/unanchored
- anchored = FALSE
-
-/obj/structure/piano/New()
- ..()
- song = new("piano", src)
-
- if(prob(50) && icon_state == initial(icon_state))
- name = "space minimoog"
- desc = "This is a minimoog, like a space piano, but more spacey!"
- icon_state = "minimoog"
- else
- name = "space piano"
- desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't."
- icon_state = "piano"
-
-/obj/structure/piano/Destroy()
- qdel(song)
- song = null
- return ..()
-
-/obj/structure/piano/Initialize(mapload)
- . = ..()
- if(mapload)
- song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded
-
-/obj/structure/piano/attack_hand(mob/user)
- . = ..()
- if(.)
- return
- interact(user)
-
-/obj/structure/piano/attack_paw(mob/user)
- return attack_hand(user)
-
-/obj/structure/piano/interact(mob/user)
- ui_interact(user)
-
-/obj/structure/piano/ui_interact(mob/user)
- if(!user || !anchored)
- return
-
- if(!user.IsAdvancedToolUser())
- to_chat(user, "You don't have the dexterity to do this! ")
- return 1
- user.set_machine(src)
- song.interact(user)
-
-/obj/structure/piano/wrench_act(mob/living/user, obj/item/I)
- default_unfasten_wrench(user, I, 40)
- return TRUE
diff --git a/code/game/objects/structures/signs/signs_departments.dm b/code/game/objects/structures/signs/signs_departments.dm
index 12932bbab6..b4fd823e76 100644
--- a/code/game/objects/structures/signs/signs_departments.dm
+++ b/code/game/objects/structures/signs/signs_departments.dm
@@ -60,6 +60,11 @@
desc = "A sign labelling a restroom."
icon_state = "restroom"
+/obj/structure/sign/departments/showers
+ name ="\improper SHOWER"
+ desc = "A sign labelling showers."
+ icon_state = "showerroom"
+
/obj/structure/sign/departments/medbay
name = "\improper MEDBAY"
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here."
diff --git a/code/game/objects/structures/signs/signs_maps.dm b/code/game/objects/structures/signs/signs_maps.dm
index 1e3bfd6d36..ee29ef7443 100644
--- a/code/game/objects/structures/signs/signs_maps.dm
+++ b/code/game/objects/structures/signs/signs_maps.dm
@@ -55,3 +55,18 @@
name = "cafe"
desc = "A direction sign, pointing out which way the Cafe is."
icon_state = "direction_cafe"
+
+obj/structure/sign/directions/rooms
+ name = "room"
+ desc = "Room numbers, helps others find you!"
+ icon_state = "roomnum"
+
+obj/structure/sign/directions/dorms
+ name = "dorm"
+ desc = "Dorm numbers, help others find you, or you find others."
+ icon_state = "dormnum"
+
+obj/structure/sign/directions/cells
+ name = "room"
+ desc = "So the less fortunate amongst us know where they'll be staying."
+ icon_state = "cellnum"
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 5f806e7fc4..892d85cd6e 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -12,13 +12,11 @@
var/w_items = 0 //the combined w_class of all the items in the cistern
var/mob/living/swirlie = null //the mob being given a swirlie
-
/obj/structure/toilet/Initialize()
. = ..()
open = round(rand(0, 1))
update_icon()
-
/obj/structure/toilet/attack_hand(mob/living/user)
. = ..()
if(.)
@@ -71,11 +69,9 @@
open = !open
update_icon()
-
/obj/structure/toilet/update_icon_state()
icon_state = "toilet[open][cistern]"
-
/obj/structure/toilet/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/crowbar))
to_chat(user, "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]... ")
@@ -116,12 +112,17 @@
. = ..()
if (secret_type)
secret = new secret_type(src)
- secret.desc += " It's a secret!"
- w_items += secret.w_class
+ secret.desc += "" //In case you want to add something to the item that spawns
contents += secret
+/obj/structure/toilet/secret/low_loot
+ secret_type = /obj/effect/spawner/lootdrop/low_loot_toilet
+/obj/structure/toilet/secret/high_loot
+ secret_type = /obj/effect/spawner/lootdrop/high_loot_toilet
+/obj/structure/toilet/secret/prison
+ secret_type = /obj/effect/spawner/lootdrop/prison_loot_toilet
/obj/structure/urinal
name = "urinal"
@@ -194,7 +195,6 @@
exposed = !exposed
return TRUE
-
/obj/item/reagent_containers/food/urinalcake
name = "urinal cake"
desc = "The noble urinal cake, protecting the station's pipes from the station's pee. Do not eat."
@@ -278,7 +278,6 @@
add_hiddenprint(user)
return TRUE
-
/obj/machinery/shower/update_overlays()
. = ..()
if(on)
@@ -315,7 +314,6 @@
else if(isobj(AM))
wash_obj(AM)
-
/obj/machinery/shower/proc/wash_obj(obj/O)
. = SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
. = O.clean_blood()
@@ -325,7 +323,6 @@
I.acid_level = 0
I.extinguish()
-
/obj/machinery/shower/proc/wash_turf()
if(isturf(loc))
var/turf/tile = loc
@@ -336,7 +333,6 @@
if(is_cleanable(E))
qdel(E)
-
/obj/machinery/shower/proc/wash_mob(mob/living/L)
SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
L.wash_cream()
@@ -667,11 +663,9 @@
/obj/structure/sink/puddle/deconstruct(disassembled = TRUE)
qdel(src)
-
//Shower Curtains//
//Defines used are pre-existing in layers.dm//
-
/obj/structure/curtain
name = "curtain"
desc = "Contains less than 1% mercury."
@@ -727,7 +721,6 @@
return TRUE
-
/obj/structure/curtain/attack_hand(mob/user)
. = ..()
if(.)
diff --git a/code/game/sound.dm b/code/game/sound.dm
index c285026d5b..577b058178 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -8,7 +8,7 @@
return
//allocate a channel if necessary now so its the same for everyone
- channel = channel || open_sound_channel()
+ channel = channel || SSsounds.random_available_channel()
// Looping through the player list has the added bonus of working for mobs inside containers
var/sound/S = sound(get_sfx(soundin))
@@ -26,10 +26,10 @@
if(get_dist(M, turf_source) <= maxdistance)
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry)
-/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S, envwet = -10000, envdry = 0, manual_x, manual_y)
+/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S, envwet = -10000, envdry = 0, manual_x, manual_y, distance_multiplier = 1)
if(audiovisual_redirect)
var/turf/T = get_turf(src)
- audiovisual_redirect.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, 0, -1000, turf_source.x - T.x, turf_source.y - T.y)
+ audiovisual_redirect.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, 0, -1000, turf_source.x - T.x, turf_source.y - T.y, distance_multiplier)
if(!client || !can_hear())
return
@@ -37,7 +37,7 @@
S = sound(get_sfx(soundin))
S.wait = 0 //No queue
- S.channel = channel || open_sound_channel()
+ S.channel = channel || SSsounds.random_available_channel()
S.volume = vol
S.environment = 7
@@ -55,6 +55,8 @@
if(!manual_x && !manual_y)
distance = get_dist(T, turf_source)
+ distance *= distance_multiplier
+
S.volume -= max(distance - world.view, 0) * 2 //multiplicative falloff to add on top of natural audio falloff.
if(pressure_affected)
@@ -86,13 +88,13 @@
dx = turf_source.x - T.x
else
dx = manual_x
- S.x = dx
+ S.x = dx * distance_multiplier
var/dz = 0 // Hearing from infront/behind
if(!manual_x)
dz = turf_source.y - T.y
else
dz = manual_y
- S.z = dz
+ S.z = dz * distance_multiplier
// The y value is for above your head, but there is no ceiling in 2d spessmens.
S.y = 1
S.falloff = (falloff ? falloff : FALLOFF_SOUNDS)
@@ -107,15 +109,14 @@
var/mob/M = m
M.playsound_local(M, null, volume, vary, frequency, falloff, channel, pressure_affected, S)
-/proc/open_sound_channel()
- var/static/next_channel = 1 //loop through the available 1024 - (the ones we reserve) channels and pray that its not still being used
- . = ++next_channel
- if(next_channel > CHANNEL_HIGHEST_AVAILABLE)
- next_channel = 1
-
/mob/proc/stop_sound_channel(chan)
SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = chan))
+/mob/proc/set_sound_channel_volume(channel, volume)
+ var/sound/S = sound(null, FALSE, FALSE, channel, volume)
+ S.status = SOUND_UPDATE
+ SEND_SOUND(src, S)
+
/client/proc/playtitlemusic(vol = 85)
set waitfor = FALSE
UNTIL(SSticker.login_music) //wait for SSticker init to set the login music
diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm
index f75772a230..f6e70f8ef5 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -260,3 +260,10 @@
icon = 'icons/obj/clockwork_objects.dmi'
icon_state = "clockwork_floor"
floor_tile = /obj/item/stack/tile/bronze
+
+/turf/open/floor/padded
+ name = "padded floor"
+ desc = "Keeps crazy people from hurting themselves. It's soft, plush, and very nice to get shoved agaisnt."
+ icon = 'icons/turf/floors.dmi'
+ icon_state = "floor_padded"
+ floor_tile = /obj/item/stack/tile/padded
diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm
index a3a92e7898..af48160ef1 100644
--- a/code/game/turfs/simulated/floor/plasteel_floor.dm
+++ b/code/game/turfs/simulated/floor/plasteel_floor.dm
@@ -68,6 +68,9 @@
/turf/open/floor/plasteel/chapel
icon_state = "chapel"
+/turf/open/floor/plasteel/chapel_floor
+ icon_state = "chapel_alt"
+
/turf/open/floor/plasteel/showroomfloor
icon_state = "showroomfloor"
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index c61ac8972c..7e1b39cb39 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -173,6 +173,16 @@
/turf/closed/mineral/silver = 12, /turf/closed/mineral/plasma = 20, /turf/closed/mineral/iron = 40, /turf/closed/mineral/titanium = 11,
/turf/closed/mineral/gibtonite = 4, /turf/closed/mineral/bscrystal = 1)
+/turf/closed/mineral/random/no_caves/earth_like
+ icon_state = "rock_oxy"
+ turf_type = /turf/open/floor/plating/asteroid
+ baseturfs = /turf/open/floor/plating/asteroid
+ mineralSpawnChanceList = list(/turf/closed/mineral/uranium/earth_like = 5, /turf/closed/mineral/diamond/earth_like = 1, /turf/closed/mineral/gold/earth_like = 10,
+ /turf/closed/mineral/silver/earth_like = 12, /turf/closed/mineral/plasma/earth_like = 20, /turf/closed/mineral/iron/earth_like = 40,
+ /turf/closed/mineral/titanium/earth_like = 11, /turf/closed/mineral/gibtonite/earth_like = 4, /turf/closed/mineral/bscrystal/earth_like = 1)
+ initial_gas_mix = OPENTURF_DEFAULT_ATMOS
+ defer_change = TRUE
+
/turf/closed/mineral/random/high_chance
icon_state = "rock_highchance"
mineralChance = 25
@@ -194,6 +204,10 @@
icon_state = "rock_highchance_oxy"
turf_type = /turf/open/floor/plating/asteroid
baseturfs = /turf/open/floor/plating/asteroid
+ mineralSpawnChanceList = list(
+ /turf/closed/mineral/uranium/earth_like = 35, /turf/closed/mineral/diamond/earth_like = 30, /turf/closed/mineral/gold/earth_like = 45,
+ /turf/closed/mineral/titanium/earth_like = 45, /turf/closed/mineral/silver/earth_like = 50, /turf/closed/mineral/plasma/earth_like = 50,
+ /turf/closed/mineral/bscrystal/earth_like = 20)
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
defer_change = TRUE
@@ -211,6 +225,10 @@
turf_type = /turf/open/floor/plating/asteroid
baseturfs = /turf/open/floor/plating/asteroid
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
+ mineralSpawnChanceList = list(
+ /turf/closed/mineral/uranium/earth_like = 2, /turf/closed/mineral/diamond/earth_like = 1, /turf/closed/mineral/gold/earth_like = 4,
+ /turf/closed/mineral/titanium/earth_like = 4, /turf/closed/mineral/silver/earth_like = 6, /turf/closed/mineral/plasma/earth_like = 15,
+ /turf/closed/mineral/iron/earth_like = 40, /turf/closed/mineral/gibtonite/earth_like = 2, /turf/closed/mineral/bscrystal/earth_like = 1)
defer_change = TRUE
/turf/closed/mineral/random/volcanic
@@ -246,13 +264,6 @@
/turf/closed/mineral/silver/volcanic = 20, /turf/closed/mineral/plasma/volcanic = 30, /turf/closed/mineral/bscrystal/volcanic = 1, /turf/closed/mineral/gibtonite/volcanic = 2,
/turf/closed/mineral/iron/volcanic = 95)
-/turf/closed/mineral/random/earth_like
- icon_state = "rock_oxy"
- turf_type = /turf/open/floor/plating/asteroid
- baseturfs = /turf/open/floor/plating/asteroid
- initial_gas_mix = OPENTURF_DEFAULT_ATMOS
- defer_change = TRUE
-
/turf/closed/mineral/iron
mineralType = /obj/item/stack/ore/iron
@@ -624,3 +635,10 @@
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
+
+/turf/closed/mineral/gibtonite/earth_like
+ icon_state = "rock_oxy"
+ turf_type = /turf/open/floor/plating/asteroid
+ baseturfs = /turf/open/floor/plating/asteroid
+ initial_gas_mix = OPENTURF_DEFAULT_ATMOS
+ defer_change = TRUE
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 3ccd113864..cbd429af5c 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -74,6 +74,7 @@ GLOBAL_PROTECT(admin_verbs_admin)
/client/proc/addbunkerbypass,
/client/proc/revokebunkerbypass,
/client/proc/stop_sounds,
+ /client/proc/mark_datum_mapview,
/client/proc/hide_verbs, /*hides all our adminverbs*/
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
/datum/admins/proc/open_borgopanel
diff --git a/code/modules/admin/callproc/callproc.dm b/code/modules/admin/callproc/callproc.dm
new file mode 100644
index 0000000000..3de5e39ff4
--- /dev/null
+++ b/code/modules/admin/callproc/callproc.dm
@@ -0,0 +1,208 @@
+
+/client/proc/callproc()
+ set category = "Debug"
+ set name = "Advanced ProcCall"
+ set waitfor = FALSE
+ callproc_blocking()
+
+/client/proc/callproc_blocking(list/get_retval)
+ if(!check_rights(R_DEBUG))
+ return
+
+ var/datum/target
+ var/targetselected = FALSE
+ var/returnval
+
+ switch(alert("Proc owned by something?",,"Yes","No"))
+ if("Yes")
+ targetselected = TRUE
+ var/list/value = vv_get_value(default_class = VV_ATOM_REFERENCE, classes = list(VV_ATOM_REFERENCE, VV_DATUM_REFERENCE, VV_MOB_REFERENCE, VV_CLIENT, VV_MARKED_DATUM, VV_TEXT_LOCATE, VV_PROCCALL_RETVAL))
+ if (!value["class"] || !value["value"])
+ return
+ target = value["value"]
+ if(!istype(target))
+ to_chat(usr, "Invalid target. ")
+ return
+ if("No")
+ target = null
+ targetselected = FALSE
+
+ var/procpath = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null
+ if(!procpath)
+ return
+
+ //strip away everything but the proc name
+ var/list/proclist = splittext(procpath, "/")
+ if (!length(proclist))
+ return
+
+ var/procname = proclist[proclist.len]
+ var/proctype = ("verb" in proclist) ? "verb" :"proc"
+
+ if(targetselected)
+ if(!hascall(target, procname))
+ to_chat(usr, "Error: callproc(): type [target.type] has no [proctype] named [procpath]. ")
+ return
+ else
+ procpath = "/[proctype]/[procname]"
+ if(!text2path(procpath))
+ to_chat(usr, "Error: callproc(): [procpath] does not exist. ")
+ return
+
+ var/list/lst = get_callproc_args()
+ if(!lst)
+ return
+
+ if(targetselected)
+ if(!target)
+ to_chat(usr, "Error: callproc(): owner of proc no longer exists. ")
+ return
+ var/msg = "[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]."
+ log_admin(msg)
+ message_admins(msg) //Proccall announce removed.
+ admin_ticket_log(target, msg)
+ returnval = WrapAdminProcCall(target, procname, lst) // Pass the lst as an argument list to the proc
+ else
+ //this currently has no hascall protection. wasn't able to get it working.
+ log_admin("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].")
+ message_admins("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") //Proccall announce removed.
+ returnval = WrapAdminProcCall(GLOBAL_PROC, procname, lst) // Pass the lst as an argument list to the proc
+ SSblackbox.record_feedback("tally", "admin_verb", 1, "Advanced ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ if(get_retval)
+ get_retval += returnval
+ . = get_callproc_returnval(returnval, procname)
+ if(.)
+ to_chat(usr, .)
+
+GLOBAL_VAR(AdminProcCaller)
+GLOBAL_PROTECT(AdminProcCaller)
+GLOBAL_VAR_INIT(AdminProcCallCount, 0)
+GLOBAL_PROTECT(AdminProcCallCount)
+GLOBAL_VAR(LastAdminCalledTargetRef)
+GLOBAL_PROTECT(LastAdminCalledTargetRef)
+GLOBAL_VAR(LastAdminCalledTarget)
+GLOBAL_PROTECT(LastAdminCalledTarget)
+GLOBAL_VAR(LastAdminCalledProc)
+GLOBAL_PROTECT(LastAdminCalledProc)
+GLOBAL_LIST_EMPTY(AdminProcCallSpamPrevention)
+GLOBAL_PROTECT(AdminProcCallSpamPrevention)
+
+/proc/WrapAdminProcCall(datum/target, procname, list/arguments)
+ if(target != GLOBAL_PROC && procname == "Del")
+ to_chat(usr, "Calling Del() is not allowed ")
+ return
+
+ if(target != GLOBAL_PROC && !target.CanProcCall(procname))
+ to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!")
+ return
+ var/current_caller = GLOB.AdminProcCaller
+ var/ckey = usr ? usr.client.ckey : GLOB.AdminProcCaller
+ if(!ckey)
+ CRASH("WrapAdminProcCall with no ckey: [target] [procname] [english_list(arguments)]")
+ if(current_caller && current_caller != ckey)
+ if(!GLOB.AdminProcCallSpamPrevention[ckey])
+ to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish. ")
+ GLOB.AdminProcCallSpamPrevention[ckey] = TRUE
+ UNTIL(!GLOB.AdminProcCaller)
+ to_chat(usr, "Running your proc ")
+ GLOB.AdminProcCallSpamPrevention -= ckey
+ else
+ UNTIL(!GLOB.AdminProcCaller)
+ GLOB.LastAdminCalledProc = procname
+ if(target != GLOBAL_PROC)
+ GLOB.LastAdminCalledTargetRef = "[REF(target)]"
+ GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you
+ ++GLOB.AdminProcCallCount
+ . = world.WrapAdminProcCall(target, procname, arguments)
+ if(--GLOB.AdminProcCallCount == 0)
+ GLOB.AdminProcCaller = null
+
+//adv proc call this, ya nerds
+/world/proc/WrapAdminProcCall(datum/target, procname, list/arguments)
+ if(target == GLOBAL_PROC)
+ return call(procname)(arglist(arguments))
+ else if(target != world)
+ return call(target, procname)(arglist(arguments))
+ else
+ log_admin_private("[key_name(usr)] attempted to call world/proc/[procname] with arguments: [english_list(arguments)]")
+
+/proc/IsAdminAdvancedProcCall()
+#ifdef TESTING
+ return FALSE
+#else
+ return usr && usr.client && GLOB.AdminProcCaller == usr.client.ckey
+#endif
+
+/client/proc/callproc_datum(datum/A as null|area|mob|obj|turf)
+ set category = "Debug"
+ set name = "Atom ProcCall"
+ set waitfor = FALSE
+
+ if(!check_rights(R_DEBUG))
+ return
+
+ var/procname = input("Proc name, eg: fake_blood","Proc:", null) as text|null
+ if(!procname)
+ return
+ if(!hascall(A,procname))
+ to_chat(usr, "Error: callproc_datum(): type [A.type] has no proc named [procname]. ")
+ return
+ var/list/lst = get_callproc_args()
+ if(!lst)
+ return
+
+ if(!A || !IsValidSrc(A))
+ to_chat(usr, "Error: callproc_datum(): owner of proc no longer exists. ")
+ return
+ var/msg = "[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]."
+ log_admin(msg)
+ message_admins(msg)
+ admin_ticket_log(A, msg)
+ SSblackbox.record_feedback("tally", "admin_verb", 1, "Atom ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+ var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc
+ . = get_callproc_returnval(returnval,procname)
+ if(.)
+ to_chat(usr, .)
+
+/client/proc/get_callproc_args()
+ var/argnum = input("Number of arguments","Number:",0) as num|null
+ if(isnull(argnum))
+ return
+
+ . = list()
+ var/list/named_args = list()
+ while(argnum--)
+ var/named_arg = input("Leave blank for positional argument. Positional arguments will be considered as if they were added first.", "Named argument") as text|null
+ var/value = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT))
+ if (!value["class"])
+ return
+ if(named_arg)
+ named_args[named_arg] = value["value"]
+ else
+ . += value["value"]
+ if(LAZYLEN(named_args))
+ . += named_args
+
+/client/proc/get_callproc_returnval(returnval,procname)
+ . = ""
+ if(islist(returnval))
+ var/list/returnedlist = returnval
+ . = ""
+ if(returnedlist.len)
+ var/assoc_check = returnedlist[1]
+ if(istext(assoc_check) && (returnedlist[assoc_check] != null))
+ . += "[procname] returned an associative list:"
+ for(var/key in returnedlist)
+ . += "\n[key] = [returnedlist[key]]"
+
+ else
+ . += "[procname] returned a list:"
+ for(var/elem in returnedlist)
+ . += "\n[elem]"
+ else
+ . = "[procname] returned an empty list"
+ . += " "
+
+ else
+ . = "[procname] returned: [!isnull(returnval) ? returnval : "null"] "
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index d86211f216..62c2dc900c 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1732,9 +1732,8 @@
var/mob/M = locate(href_list["makeeligible"])
if(!ismob(M))
to_chat(usr, "this can only be used on instances of type /mob.")
- var/datum/element/ghost_role_eligibility/eli = SSdcs.GetElement(list(/datum/element/ghost_role_eligibility))
- if(M.ckey in eli.timeouts)
- eli.timeouts -= M.ckey
+ if(M.ckey in GLOB.client_ghost_timeouts)
+ GLOB.client_ghost_timeouts -= M.ckey
else if(href_list["sendtoprison"])
if(!check_rights(R_ADMIN))
diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm
index 8cfd53b300..83f2839438 100644
--- a/code/modules/admin/verbs/borgpanel.dm
+++ b/code/modules/admin/verbs/borgpanel.dm
@@ -23,8 +23,8 @@
/datum/borgpanel/New(to_user, mob/living/silicon/robot/to_borg)
if(!istype(to_borg))
- CRASH("Borg panel is only available for borgs")
qdel(src)
+ CRASH("Borg panel is only available for borgs")
user = CLIENT_FROM_VAR(to_user)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 54d6a864fd..e67176029a 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -15,214 +15,6 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Debug Two") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
-
-/* 21st Sept 2010
-Updated by Skie -- Still not perfect but better!
-Stuff you can't do:
-Call proc /mob/proc/Dizzy() for some player
-Because if you select a player mob as owner it tries to do the proc for
-/mob/living/carbon/human/ instead. And that gives a run-time error.
-But you can call procs that are of type /mob/living/carbon/human/proc/ for that player.
-*/
-
-/client/proc/callproc()
- set category = "Debug"
- set name = "Advanced ProcCall"
- set waitfor = FALSE
-
- if(!check_rights(R_DEBUG))
- return
-
- var/datum/target = null
- var/targetselected = FALSE
- var/returnval = null
-
- if(alert("Proc owned by something?",,"Yes","No") == "Yes")
- targetselected = TRUE
- var/list/value = vv_get_value(default_class = VV_ATOM_REFERENCE, classes = list(VV_ATOM_REFERENCE, VV_DATUM_REFERENCE, VV_MOB_REFERENCE, VV_CLIENT))
- if (!value["class"] || !value["value"])
- return
- target = value["value"]
-
- var/procpath = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null
- if(!procpath)
- return
-
- //strip away everything but the proc name
- var/list/proclist = splittext(procpath, "/")
- if (!length(proclist))
- return
-
- var/procname = proclist[proclist.len]
- var/proctype = ("verb" in proclist) ? "verb" :"proc"
-
- if(targetselected)
- if(!hascall(target, procname))
- to_chat(usr, "Error: callproc(): type [target.type] has no [proctype] named [procpath]. ")
- return
- else
- procpath = "/[proctype]/[procname]"
- if(!text2path(procpath))
- to_chat(usr, "Error: callproc(): [procpath] does not exist. ")
- return
-
- var/list/lst = get_callproc_args()
- if(!lst)
- return
-
- if(targetselected)
- if(!target)
- to_chat(usr, "Error: callproc(): owner of proc no longer exists. ")
- return
- var/msg = "[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no argument"]."
- log_admin(msg)
- message_admins(msg)
- admin_ticket_log(target, msg)
- returnval = WrapAdminProcCall(target, procname, lst)
- else
- var/msg = "[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no argument"]."
- log_admin(msg)
- message_admins(msg)
- returnval = WrapAdminProcCall(GLOBAL_PROC, procpath, lst) //calling globals needs full qualified name (e.g /proc/foo)
- . = get_callproc_returnval(returnval, procname)
- if(.)
- to_chat(usr, .)
- SSblackbox.record_feedback("tally", "admin_verb", 1, "Advanced ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
-GLOBAL_VAR(AdminProcCaller)
-GLOBAL_PROTECT(AdminProcCaller)
-GLOBAL_VAR_INIT(AdminProcCallCount, 0)
-GLOBAL_PROTECT(AdminProcCallCount)
-GLOBAL_VAR(LastAdminCalledTargetRef)
-GLOBAL_PROTECT(LastAdminCalledTargetRef)
-GLOBAL_VAR(LastAdminCalledTarget)
-GLOBAL_PROTECT(LastAdminCalledTarget)
-GLOBAL_VAR(LastAdminCalledProc)
-GLOBAL_PROTECT(LastAdminCalledProc)
-GLOBAL_LIST_EMPTY(AdminProcCallSpamPrevention)
-GLOBAL_PROTECT(AdminProcCallSpamPrevention)
-
-/proc/WrapAdminProcCall(datum/target, procname, list/arguments)
- if(target != GLOBAL_PROC && procname == "Del")
- to_chat(usr, "Calling Del() is not allowed ")
- return
-
- if(target != GLOBAL_PROC && !target.CanProcCall(procname))
- to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!")
- return
- var/current_caller = GLOB.AdminProcCaller
- var/ckey = usr ? usr.client.ckey : GLOB.AdminProcCaller
- if(!ckey)
- CRASH("WrapAdminProcCall with no ckey: [target] [procname] [english_list(arguments)]")
- if(current_caller && current_caller != ckey)
- if(!GLOB.AdminProcCallSpamPrevention[ckey])
- to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish. ")
- GLOB.AdminProcCallSpamPrevention[ckey] = TRUE
- UNTIL(!GLOB.AdminProcCaller)
- to_chat(usr, "Running your proc ")
- GLOB.AdminProcCallSpamPrevention -= ckey
- else
- UNTIL(!GLOB.AdminProcCaller)
- GLOB.LastAdminCalledProc = procname
- if(target != GLOBAL_PROC)
- GLOB.LastAdminCalledTargetRef = "[REF(target)]"
- GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you
- ++GLOB.AdminProcCallCount
- . = world.WrapAdminProcCall(target, procname, arguments)
- if(--GLOB.AdminProcCallCount == 0)
- GLOB.AdminProcCaller = null
-
-//adv proc call this, ya nerds
-/world/proc/WrapAdminProcCall(datum/target, procname, list/arguments)
- if(target == GLOBAL_PROC)
- return call(procname)(arglist(arguments))
- else if(target != world)
- return call(target, procname)(arglist(arguments))
- else
- log_admin_private("[key_name(usr)] attempted to call world/proc/[procname] with arguments: [english_list(arguments)]")
-
-/proc/IsAdminAdvancedProcCall()
-#ifdef TESTING
- return FALSE
-#else
- return usr && usr.client && GLOB.AdminProcCaller == usr.client.ckey
-#endif
-
-/client/proc/callproc_datum(datum/A as null|area|mob|obj|turf)
- set category = "Debug"
- set name = "Atom ProcCall"
- set waitfor = FALSE
-
- if(!check_rights(R_DEBUG))
- return
-
- var/procname = input("Proc name, eg: fake_blood","Proc:", null) as text|null
- if(!procname)
- return
- if(!hascall(A,procname))
- to_chat(usr, "Error: callproc_datum(): type [A.type] has no proc named [procname]. ")
- return
- var/list/lst = get_callproc_args()
- if(!lst)
- return
-
- if(!A || !IsValidSrc(A))
- to_chat(usr, "Error: callproc_datum(): owner of proc no longer exists. ")
- return
- var/msg = "[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]."
- log_admin(msg)
- message_admins(msg)
- admin_ticket_log(A, msg)
- SSblackbox.record_feedback("tally", "admin_verb", 1, "Atom ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
- var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc
- . = get_callproc_returnval(returnval,procname)
- if(.)
- to_chat(usr, .)
-
-/client/proc/get_callproc_args()
- var/argnum = input("Number of arguments","Number:",0) as num|null
- if(isnull(argnum))
- return
-
- . = list()
- var/list/named_args = list()
- while(argnum--)
- var/named_arg = input("Leave blank for positional argument. Positional arguments will be considered as if they were added first.", "Named argument") as text|null
- var/value = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT))
- if (!value["class"])
- return
- if(named_arg)
- named_args[named_arg] = value["value"]
- else
- . += value["value"]
- if(LAZYLEN(named_args))
- . += named_args
-
-/client/proc/get_callproc_returnval(returnval,procname)
- . = ""
- if(islist(returnval))
- var/list/returnedlist = returnval
- . = ""
- if(returnedlist.len)
- var/assoc_check = returnedlist[1]
- if(istext(assoc_check) && (returnedlist[assoc_check] != null))
- . += "[procname] returned an associative list:"
- for(var/key in returnedlist)
- . += "\n[key] = [returnedlist[key]]"
-
- else
- . += "[procname] returned a list:"
- for(var/elem in returnedlist)
- . += "\n[elem]"
- else
- . = "[procname] returned an empty list"
- . += " "
-
- else
- . = "[procname] returned: [!isnull(returnval) ? returnval : "null"] "
-
/client/proc/Cell()
set category = "Debug"
set name = "Air Status in Location"
@@ -343,66 +135,6 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
else
alert("Invalid mob")
-/proc/make_types_fancy(var/list/types)
- if (ispath(types))
- types = list(types)
- . = list()
- for(var/type in types)
- var/typename = "[type]"
- var/static/list/TYPES_SHORTCUTS = list(
- /obj/effect/decal/cleanable = "CLEANABLE",
- /obj/item/radio/headset = "HEADSET",
- /obj/item/clothing/head/helmet/space = "SPESSHELMET",
- /obj/item/book/manual = "MANUAL",
- /obj/item/reagent_containers/food/drinks = "DRINK", //longest paths comes first
- /obj/item/reagent_containers/food = "FOOD",
- /obj/item/reagent_containers = "REAGENT_CONTAINERS",
- /obj/machinery/atmospherics = "ATMOS_MECH",
- /obj/machinery/portable_atmospherics = "PORT_ATMOS",
- /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
- /obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
- /obj/item/organ = "ORGAN",
- /obj/item = "ITEM",
- /obj/machinery = "MACHINERY",
- /obj/effect = "EFFECT",
- /obj = "O",
- /datum = "D",
- /turf/open = "OPEN",
- /turf/closed = "CLOSED",
- /turf = "T",
- /mob/living/carbon = "CARBON",
- /mob/living/simple_animal = "SIMPLE",
- /mob/living = "LIVING",
- /mob = "M"
- )
- for (var/tn in TYPES_SHORTCUTS)
- if (copytext(typename,1, length("[tn]/")+1)=="[tn]/" /*findtextEx(typename,"[tn]/",1,2)*/ )
- typename = TYPES_SHORTCUTS[tn]+copytext(typename,length("[tn]/"))
- break
- .[typename] = type
-
-/proc/get_fancy_list_of_atom_types()
- var/static/list/pre_generated_list
- if (!pre_generated_list) //init
- pre_generated_list = make_types_fancy(typesof(/atom))
- return pre_generated_list
-
-
-/proc/get_fancy_list_of_datum_types()
- var/static/list/pre_generated_list
- if (!pre_generated_list) //init
- pre_generated_list = make_types_fancy(sortList(typesof(/datum) - typesof(/atom)))
- return pre_generated_list
-
-
-/proc/filter_fancy_list(list/L, filter as text)
- var/list/matches = new
- for(var/key in L)
- var/value = L[key]
- if(findtext("[key]", filter) || findtext("[value]", filter))
- matches[key] = value
- return matches
-
//TODO: merge the vievars version into this or something maybe mayhaps
/client/proc/cmd_debug_del_all(object as text)
set category = "Debug"
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index c44328775f..ef8a63a728 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -594,31 +594,6 @@ Traitors and the like can also be revived with the previous role mostly intact.
admin_delete(A)
-/client/proc/admin_delete(datum/D)
- var/atom/A = D
- var/coords = ""
- var/jmp_coords = ""
- if(istype(A))
- var/turf/T = get_turf(A)
- if(T)
- coords = "at [COORD(T)]"
- jmp_coords = "at [ADMIN_COORDJMP(T)]"
- else
- jmp_coords = coords = "in nullspace"
-
- if (alert(src, "Are you sure you want to delete:\n[D]\n[coords]?", "Confirmation", "Yes", "No") == "Yes")
- log_admin("[key_name(usr)] deleted [D] [coords]")
- message_admins("[key_name_admin(usr)] deleted [D] [jmp_coords]")
- SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- if(isturf(D))
- var/turf/T = D
- T.ScrapeAway()
- else
- vv_update_display(D, "deleted", VV_MSG_DELETED)
- qdel(D)
- if(!QDELETED(D))
- vv_update_display(D, "deleted", "")
-
/client/proc/cmd_admin_list_open_jobs()
set category = "Admin"
set name = "Manage Job Slots"
diff --git a/code/modules/admin/view_variables/admin_delete.dm b/code/modules/admin/view_variables/admin_delete.dm
new file mode 100644
index 0000000000..947ad5db2c
--- /dev/null
+++ b/code/modules/admin/view_variables/admin_delete.dm
@@ -0,0 +1,24 @@
+/client/proc/admin_delete(datum/D)
+ var/atom/A = D
+ var/coords = ""
+ var/jmp_coords = ""
+ if(istype(A))
+ var/turf/T = get_turf(A)
+ if(T)
+ coords = "at [COORD(T)]"
+ jmp_coords = "at [ADMIN_COORDJMP(T)]"
+ else
+ jmp_coords = coords = "in nullspace"
+
+ if (alert(src, "Are you sure you want to delete:\n[D]\n[coords]?", "Confirmation", "Yes", "No") == "Yes")
+ log_admin("[key_name(usr)] deleted [D] [coords]")
+ message_admins("[key_name_admin(usr)] deleted [D] [jmp_coords]")
+ SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ if(isturf(D))
+ var/turf/T = D
+ T.ScrapeAway()
+ else
+ vv_update_display(D, "deleted", VV_MSG_DELETED)
+ qdel(D)
+ if(!QDELETED(D))
+ vv_update_display(D, "deleted", "")
diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm
new file mode 100644
index 0000000000..23f85cba15
--- /dev/null
+++ b/code/modules/admin/view_variables/debug_variables.dm
@@ -0,0 +1,76 @@
+#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing )
+/proc/debug_variable(name, value, level, datum/D, sanitize = TRUE) //if D is a list, name will be index, and value will be assoc value.
+ var/header
+ if(D)
+ if(islist(D))
+ var/index = name
+ if (value)
+ name = D[name] //name is really the index until this line
+ else
+ value = D[name]
+ header = "([VV_HREF_TARGET_1V(D, VV_HK_LIST_EDIT, "E", index)]) ([VV_HREF_TARGET_1V(D, VV_HK_LIST_CHANGE, "C", index)]) ([VV_HREF_TARGET_1V(D, VV_HK_LIST_REMOVE, "-", index)]) "
+ else
+ header = " ([VV_HREF_TARGET_1V(D, VV_HK_BASIC_EDIT, "E", name)]) ([VV_HREF_TARGET_1V(D, VV_HK_BASIC_CHANGE, "C", name)]) ([VV_HREF_TARGET_1V(D, VV_HK_BASIC_MASSEDIT, "M", name)]) "
+ else
+ header = " "
+
+ var/item
+ if (isnull(value))
+ item = "[VV_HTML_ENCODE(name)] = null "
+
+ else if (istext(value))
+ item = "[VV_HTML_ENCODE(name)] = \"[VV_HTML_ENCODE(value)]\" "
+
+ else if (isicon(value))
+ #ifdef VARSICON
+ var/icon/I = icon(value)
+ var/rnd = rand(1,10000)
+ var/rname = "tmp[REF(I)][rnd].png"
+ usr << browse_rsc(I, rname)
+ item = "[VV_HTML_ENCODE(name)] = ([value] ) "
+ #else
+ item = "[VV_HTML_ENCODE(name)] = /icon ([value] )"
+ #endif
+
+ else if (isfile(value))
+ item = "[VV_HTML_ENCODE(name)] = '[value]' "
+
+ else if (istype(value, /datum))
+ var/datum/DV = value
+ if ("[DV]" != "[DV.type]") //if the thing as a name var, lets use it.
+ item = "[VV_HTML_ENCODE(name)] [REF(value)] = [DV] [DV.type]"
+ else
+ item = "[VV_HTML_ENCODE(name)] [REF(value)] = [DV.type]"
+
+ else if (islist(value))
+ var/list/L = value
+ var/list/items = list()
+
+ if (L.len > 0 && !(name == "underlays" || name == "overlays" || L.len > (IS_NORMAL_LIST(L) ? VV_NORMAL_LIST_NO_EXPAND_THRESHOLD : VV_SPECIAL_LIST_NO_EXPAND_THRESHOLD)))
+ for (var/i in 1 to L.len)
+ var/key = L[i]
+ var/val
+ if (IS_NORMAL_LIST(L) && !isnum(key))
+ val = L[key]
+ if (isnull(val)) // we still want to display non-null false values, such as 0 or ""
+ val = key
+ key = i
+
+ items += debug_variable(key, val, level + 1, sanitize = sanitize)
+
+ item = "[VV_HTML_ENCODE(name)] = /list ([L.len]) "
+ else
+ item = "[VV_HTML_ENCODE(name)] = /list ([L.len]) "
+
+ else if (name in GLOB.bitfields)
+ var/list/flags = list()
+ for (var/i in GLOB.bitfields[name])
+ if (value & GLOB.bitfields[name][i])
+ flags += i
+ item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]"
+ else
+ item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)] "
+
+ return "[header][item] "
+
+#undef VV_HTML_ENCODE
diff --git a/code/modules/admin/view_variables/get_variables.dm b/code/modules/admin/view_variables/get_variables.dm
new file mode 100644
index 0000000000..3f90002edc
--- /dev/null
+++ b/code/modules/admin/view_variables/get_variables.dm
@@ -0,0 +1,271 @@
+/client/proc/vv_get_class(var_name, var_value)
+ if(isnull(var_value))
+ . = VV_NULL
+
+ else if(isnum(var_value))
+ if(var_name in GLOB.bitfields)
+ . = VV_BITFIELD
+ else
+ . = VV_NUM
+
+ else if(istext(var_value))
+ if(findtext(var_value, "\n"))
+ . = VV_MESSAGE
+ else
+ . = VV_TEXT
+
+ else if(isicon(var_value))
+ . = VV_ICON
+
+ else if(ismob(var_value))
+ . = VV_MOB_REFERENCE
+
+ else if(isloc(var_value))
+ . = VV_ATOM_REFERENCE
+
+ else if(istype(var_value, /client))
+ . = VV_CLIENT
+
+ else if(istype(var_value, /datum))
+ . = VV_DATUM_REFERENCE
+
+ else if(ispath(var_value))
+ if(ispath(var_value, /atom))
+ . = VV_ATOM_TYPE
+ else if(ispath(var_value, /datum))
+ . = VV_DATUM_TYPE
+ else
+ . = VV_TYPE
+
+ else if(islist(var_value))
+ . = VV_LIST
+
+ else if(isfile(var_value))
+ . = VV_FILE
+ else
+ . = VV_NULL
+
+/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes, var_name)
+ . = list("class" = class, "value" = null)
+ if(!class)
+ if(!classes)
+ classes = list (
+ VV_NUM,
+ VV_TEXT,
+ VV_MESSAGE,
+ VV_ICON,
+ VV_ATOM_REFERENCE,
+ VV_DATUM_REFERENCE,
+ VV_MOB_REFERENCE,
+ VV_CLIENT,
+ VV_ATOM_TYPE,
+ VV_DATUM_TYPE,
+ VV_TYPE,
+ VV_FILE,
+ VV_NEW_ATOM,
+ VV_NEW_DATUM,
+ VV_NEW_TYPE,
+ VV_NEW_LIST,
+ VV_NULL,
+ VV_RESTORE_DEFAULT,
+ VV_TEXT_LOCATE,
+ VV_PROCCALL_RETVAL,
+ )
+
+ var/markstring
+ if(!(VV_MARKED_DATUM in restricted_classes))
+ markstring = "[VV_MARKED_DATUM] (CURRENT: [(istype(holder) && istype(holder.marked_datum))? holder.marked_datum.type : "NULL"])"
+ classes += markstring
+
+ if(restricted_classes)
+ classes -= restricted_classes
+
+ if(extra_classes)
+ classes += extra_classes
+
+ .["class"] = input(src, "What kind of data?", "Variable Type", default_class) as null|anything in classes
+ if(holder && holder.marked_datum && .["class"] == markstring)
+ .["class"] = VV_MARKED_DATUM
+
+ switch(.["class"])
+ if(VV_TEXT)
+ .["value"] = input("Enter new text:", "Text", current_value) as null|text
+ if(.["value"] == null)
+ .["class"] = null
+ return
+ if(VV_MESSAGE)
+ .["value"] = input("Enter new text:", "Text", current_value) as null|message
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+
+ if(VV_NUM)
+ .["value"] = input("Enter new number:", "Num", current_value) as null|num
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_BITFIELD)
+ .["value"] = input_bitfield(usr, "Editing bitfield: [var_name]", var_name, current_value)
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_ATOM_TYPE)
+ .["value"] = pick_closest_path(FALSE)
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_DATUM_TYPE)
+ .["value"] = pick_closest_path(FALSE, get_fancy_list_of_datum_types())
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_TYPE)
+ var/type = current_value
+ var/error = ""
+ do
+ type = input("Enter type:[error]", "Type", type) as null|text
+ if(!type)
+ break
+ type = text2path(type)
+ error = "\nType not found, Please try again"
+ while(!type)
+ if(!type)
+ .["class"] = null
+ return
+ .["value"] = type
+
+ if(VV_ATOM_REFERENCE)
+ var/type = pick_closest_path(FALSE)
+ var/subtypes = vv_subtype_prompt(type)
+ if(subtypes == null)
+ .["class"] = null
+ return
+ var/list/things = vv_reference_list(type, subtypes)
+ var/value = input("Select reference:", "Reference", current_value) as null|anything in things
+ if(!value)
+ .["class"] = null
+ return
+ .["value"] = things[value]
+
+ if(VV_DATUM_REFERENCE)
+ var/type = pick_closest_path(FALSE, get_fancy_list_of_datum_types())
+ var/subtypes = vv_subtype_prompt(type)
+ if(subtypes == null)
+ .["class"] = null
+ return
+ var/list/things = vv_reference_list(type, subtypes)
+ var/value = input("Select reference:", "Reference", current_value) as null|anything in things
+ if(!value)
+ .["class"] = null
+ return
+ .["value"] = things[value]
+
+ if(VV_MOB_REFERENCE)
+ var/type = pick_closest_path(FALSE, make_types_fancy(typesof(/mob)))
+ var/subtypes = vv_subtype_prompt(type)
+ if(subtypes == null)
+ .["class"] = null
+ return
+ var/list/things = vv_reference_list(type, subtypes)
+ var/value = input("Select reference:", "Reference", current_value) as null|anything in things
+ if(!value)
+ .["class"] = null
+ return
+ .["value"] = things[value]
+
+ if(VV_CLIENT)
+ .["value"] = input("Select reference:", "Reference", current_value) as null|anything in GLOB.clients
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_FILE)
+ .["value"] = input("Pick file:", "File") as null|file
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_ICON)
+ .["value"] = input("Pick icon:", "Icon") as null|icon
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_MARKED_DATUM)
+ .["value"] = holder.marked_datum
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_PROCCALL_RETVAL)
+ var/list/get_retval = list()
+ callproc_blocking(get_retval)
+ .["value"] = get_retval[1] //should have been set in proccall!
+ if(.["value"] == null)
+ .["class"] = null
+ return
+
+ if(VV_NEW_ATOM)
+ var/type = pick_closest_path(FALSE)
+ if(!type)
+ .["class"] = null
+ return
+ .["type"] = type
+ var/atom/newguy = new type()
+ newguy.datum_flags |= DF_VAR_EDITED
+ .["value"] = newguy
+
+ if(VV_NEW_DATUM)
+ var/type = pick_closest_path(FALSE, get_fancy_list_of_datum_types())
+ if(!type)
+ .["class"] = null
+ return
+ .["type"] = type
+ var/datum/newguy = new type()
+ newguy.datum_flags |= DF_VAR_EDITED
+ .["value"] = newguy
+
+ if(VV_NEW_TYPE)
+ var/type = current_value
+ var/error = ""
+ do
+ type = input("Enter type:[error]", "Type", type) as null|text
+ if(!type)
+ break
+ type = text2path(type)
+ error = "\nType not found, Please try again"
+ while(!type)
+ if(!type)
+ .["class"] = null
+ return
+ .["type"] = type
+ var/datum/newguy = new type()
+ if(istype(newguy))
+ newguy.datum_flags |= DF_VAR_EDITED
+ .["value"] = newguy
+
+ if(VV_NEW_LIST)
+ .["value"] = list()
+ .["type"] = /list
+
+ if(VV_TEXT_LOCATE)
+ var/datum/D
+ do
+ var/ref = input("Enter reference:", "Reference") as null|text
+ if(!ref)
+ break
+ D = locate(ref)
+ if(!D)
+ alert("Invalid ref!")
+ continue
+ if(!D.can_vv_mark())
+ alert("Datum can not be marked!")
+ continue
+ while(!D)
+ .["type"] = D.type
+ .["value"] = D
diff --git a/code/modules/admin/view_variables/mark_datum.dm b/code/modules/admin/view_variables/mark_datum.dm
new file mode 100644
index 0000000000..9f1b333750
--- /dev/null
+++ b/code/modules/admin/view_variables/mark_datum.dm
@@ -0,0 +1,12 @@
+/client/proc/mark_datum(datum/D)
+ if(!holder)
+ return
+ if(holder.marked_datum)
+ vv_update_display(holder.marked_datum, "marked", "")
+ holder.marked_datum = D
+ vv_update_display(D, "marked", VV_MSG_MARKED)
+
+/client/proc/mark_datum_mapview(datum/D as mob|obj|turf|area in view(view))
+ set category = "Debug"
+ set name = "Mark Object"
+ mark_datum(D)
diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/view_variables/mass_edit_variables.dm
similarity index 94%
rename from code/modules/admin/verbs/massmodvar.dm
rename to code/modules/admin/view_variables/mass_edit_variables.dm
index ba199350e3..4e78e1aed7 100644
--- a/code/modules/admin/verbs/massmodvar.dm
+++ b/code/modules/admin/view_variables/mass_edit_variables.dm
@@ -197,7 +197,7 @@
log_admin("[key_name(src)] mass modified [original_name]'s [variable] to [O.vars[variable]] ([accepted] objects modified)")
message_admins("[key_name_admin(src)] mass modified [original_name]'s [variable] to [O.vars[variable]] ([accepted] objects modified)")
-
+//not using global lists as vv is a debug function and debug functions should rely on as less things as possible.
/proc/get_all_of_type(var/T, subtypes = TRUE)
var/list/typecache = list()
typecache[T] = 1
@@ -205,19 +205,25 @@
typecache = typecacheof(typecache)
. = list()
if (ispath(T, /mob))
- for(var/mob/thing in GLOB.mob_list)
+ for(var/mob/thing in world)
if (typecache[thing.type])
. += thing
CHECK_TICK
else if (ispath(T, /obj/machinery/door))
- for(var/obj/machinery/door/thing in GLOB.airlocks)
+ for(var/obj/machinery/door/thing in world)
if (typecache[thing.type])
. += thing
CHECK_TICK
else if (ispath(T, /obj/machinery))
- for(var/obj/machinery/thing in GLOB.machines)
+ for(var/obj/machinery/thing in world)
+ if (typecache[thing.type])
+ . += thing
+ CHECK_TICK
+
+ else if (ispath(T, /obj/item))
+ for(var/obj/item/thing in world)
if (typecache[thing.type])
. += thing
CHECK_TICK
@@ -247,7 +253,7 @@
CHECK_TICK
else if (ispath(T, /client))
- for(var/client/thing in GLOB.clients)
+ for(var/client/thing in world)
if (typecache[thing.type])
. += thing
CHECK_TICK
diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/view_variables/modify_variables.dm
similarity index 60%
rename from code/modules/admin/verbs/modifyvariables.dm
rename to code/modules/admin/view_variables/modify_variables.dm
index 537c31d3b4..a4ed4d45bd 100644
--- a/code/modules/admin/verbs/modifyvariables.dm
+++ b/code/modules/admin/view_variables/modify_variables.dm
@@ -1,264 +1,12 @@
-GLOBAL_LIST_INIT(VVlocked, list("vars", "datum_flags", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "force_ending"))
+GLOBAL_LIST_INIT(VVlocked, list("vars", "datum_flags", "client", "mob")) //Requires DEBUG
GLOBAL_PROTECT(VVlocked)
-GLOBAL_LIST_INIT(VVicon_edit_lock, list("icon", "icon_state", "overlays", "underlays", "resize"))
+GLOBAL_LIST_INIT(VVicon_edit_lock, list("icon", "icon_state", "overlays", "underlays")) //Requires DEBUG or FUN
GLOBAL_PROTECT(VVicon_edit_lock)
-GLOBAL_LIST_INIT(VVckey_edit, list("key", "ckey"))
+GLOBAL_LIST_INIT(VVckey_edit, list("key", "ckey")) //Requires DEBUG or SPAWN
GLOBAL_PROTECT(VVckey_edit)
-GLOBAL_LIST_INIT(VVpixelmovement, list("step_x", "step_y", "bound_height", "bound_width", "bound_x", "bound_y"))
+GLOBAL_LIST_INIT(VVpixelmovement, list("bound_x", "bound_y", "step_x", "step_y", "step_size", "bound_height", "bound_width", "bounds")) //No editing ever.
GLOBAL_PROTECT(VVpixelmovement)
-
-/client/proc/vv_get_class(var/var_name, var/var_value)
- if(isnull(var_value))
- . = VV_NULL
-
- else if (isnum(var_value))
- if (var_name in GLOB.bitfields)
- . = VV_BITFIELD
- else
- . = VV_NUM
-
- else if (istext(var_value))
- if (findtext(var_value, "\n"))
- . = VV_MESSAGE
- else
- . = VV_TEXT
-
- else if (isicon(var_value))
- . = VV_ICON
-
- else if (ismob(var_value))
- . = VV_MOB_REFERENCE
-
- else if (isloc(var_value))
- . = VV_ATOM_REFERENCE
-
- else if (istype(var_value, /client))
- . = VV_CLIENT
-
- else if (istype(var_value, /datum))
- . = VV_DATUM_REFERENCE
-
- else if (ispath(var_value))
- if (ispath(var_value, /atom))
- . = VV_ATOM_TYPE
- else if (ispath(var_value, /datum))
- . = VV_DATUM_TYPE
- else
- . = VV_TYPE
-
- else if (islist(var_value))
- . = VV_LIST
-
- else if (isfile(var_value))
- . = VV_FILE
- else
- . = VV_NULL
-
-/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes, var_name)
- . = list("class" = class, "value" = null)
- if (!class)
- if (!classes)
- classes = list (
- VV_NUM,
- VV_TEXT,
- VV_MESSAGE,
- VV_ICON,
- VV_ATOM_REFERENCE,
- VV_DATUM_REFERENCE,
- VV_MOB_REFERENCE,
- VV_CLIENT,
- VV_ATOM_TYPE,
- VV_DATUM_TYPE,
- VV_TYPE,
- VV_FILE,
- VV_NEW_ATOM,
- VV_NEW_DATUM,
- VV_NEW_TYPE,
- VV_NEW_LIST,
- VV_NULL,
- VV_RESTORE_DEFAULT
- )
-
- if(holder && holder.marked_datum && !(VV_MARKED_DATUM in restricted_classes))
- classes += "[VV_MARKED_DATUM] ([holder.marked_datum.type])"
- if (restricted_classes)
- classes -= restricted_classes
-
- if (extra_classes)
- classes += extra_classes
-
- .["class"] = input(src, "What kind of data?", "Variable Type", default_class) as null|anything in classes
- if (holder && holder.marked_datum && .["class"] == "[VV_MARKED_DATUM] ([holder.marked_datum.type])")
- .["class"] = VV_MARKED_DATUM
-
-
- switch(.["class"])
- if (VV_TEXT)
- .["value"] = input("Enter new text:", "Text", current_value) as null|text
- if (.["value"] == null)
- .["class"] = null
- return
- if (VV_MESSAGE)
- .["value"] = input("Enter new text:", "Text", current_value) as null|message
- if (.["value"] == null)
- .["class"] = null
- return
-
-
- if (VV_NUM)
- .["value"] = input("Enter new number:", "Num", current_value) as null|num
- if (.["value"] == null)
- .["class"] = null
- return
-
- if (VV_BITFIELD)
- .["value"] = input_bitfield(usr, "Editing bitfield: [var_name]", var_name, current_value)
- if (.["value"] == null)
- .["class"] = null
- return
-
- if (VV_ATOM_TYPE)
- .["value"] = pick_closest_path(FALSE)
- if (.["value"] == null)
- .["class"] = null
- return
-
- if (VV_DATUM_TYPE)
- .["value"] = pick_closest_path(FALSE, get_fancy_list_of_datum_types())
- if (.["value"] == null)
- .["class"] = null
- return
-
- if (VV_TYPE)
- var/type = current_value
- var/error = ""
- do
- type = input("Enter type:[error]", "Type", type) as null|text
- if (!type)
- break
- type = text2path(type)
- error = "\nType not found, Please try again"
- while(!type)
- if (!type)
- .["class"] = null
- return
- .["value"] = type
-
-
- if (VV_ATOM_REFERENCE)
- var/type = pick_closest_path(FALSE)
- var/subtypes = vv_subtype_prompt(type)
- if (subtypes == null)
- .["class"] = null
- return
- var/list/things = vv_reference_list(type, subtypes)
- var/value = input("Select reference:", "Reference", current_value) as null|anything in things
- if (!value)
- .["class"] = null
- return
- .["value"] = things[value]
-
- if (VV_DATUM_REFERENCE)
- var/type = pick_closest_path(FALSE, get_fancy_list_of_datum_types())
- var/subtypes = vv_subtype_prompt(type)
- if (subtypes == null)
- .["class"] = null
- return
- var/list/things = vv_reference_list(type, subtypes)
- var/value = input("Select reference:", "Reference", current_value) as null|anything in things
- if (!value)
- .["class"] = null
- return
- .["value"] = things[value]
-
- if (VV_MOB_REFERENCE)
- var/type = pick_closest_path(FALSE, make_types_fancy(typesof(/mob)))
- var/subtypes = vv_subtype_prompt(type)
- if (subtypes == null)
- .["class"] = null
- return
- var/list/things = vv_reference_list(type, subtypes)
- var/value = input("Select reference:", "Reference", current_value) as null|anything in things
- if (!value)
- .["class"] = null
- return
- .["value"] = things[value]
-
-
-
- if (VV_CLIENT)
- .["value"] = input("Select reference:", "Reference", current_value) as null|anything in GLOB.clients
- if (.["value"] == null)
- .["class"] = null
- return
-
-
- if (VV_FILE)
- .["value"] = input("Pick file:", "File") as null|file
- if (.["value"] == null)
- .["class"] = null
- return
-
-
- if (VV_ICON)
- .["value"] = input("Pick icon:", "Icon") as null|icon
- if (.["value"] == null)
- .["class"] = null
- return
-
-
- if (VV_MARKED_DATUM)
- .["value"] = holder.marked_datum
- if (.["value"] == null)
- .["class"] = null
- return
-
-
- if (VV_NEW_ATOM)
- var/type = pick_closest_path(FALSE)
- if (!type)
- .["class"] = null
- return
- .["type"] = type
- var/atom/newguy = new type()
- newguy.datum_flags |= DF_VAR_EDITED
- .["value"] = newguy
-
- if (VV_NEW_DATUM)
- var/type = pick_closest_path(FALSE, get_fancy_list_of_datum_types())
- if (!type)
- .["class"] = null
- return
- .["type"] = type
- var/datum/newguy = new type()
- newguy.datum_flags |= DF_VAR_EDITED
- .["value"] = newguy
-
- if (VV_NEW_TYPE)
- var/type = current_value
- var/error = ""
- do
- type = input("Enter type:[error]", "Type", type) as null|text
- if (!type)
- break
- type = text2path(type)
- error = "\nType not found, Please try again"
- while(!type)
- if (!type)
- .["class"] = null
- return
- .["type"] = type
- var/datum/newguy = new type()
- if(istype(newguy))
- newguy.datum_flags |= DF_VAR_EDITED
- .["value"] = newguy
-
-
- if (VV_NEW_LIST)
- .["value"] = list()
- .["type"] = /list
-
/client/proc/vv_parse_text(O, new_var)
if(O && findtext(new_var,"\["))
var/process_vars = alert(usr,"\[] detected in string, process as variables?","Process Variables?","Yes","No")
@@ -372,13 +120,13 @@ GLOBAL_PROTECT(VVpixelmovement)
if(confirm != "Continue")
return
-
+ var/is_normal_list = IS_NORMAL_LIST(L)
var/list/names = list()
for (var/i in 1 to L.len)
var/key = L[i]
var/value
- if (IS_NORMAL_LIST(L) && !isnum(key))
+ if (is_normal_list && !isnum(key))
value = L[key]
if (value == null)
value = "null"
@@ -439,10 +187,17 @@ GLOBAL_PROTECT(VVpixelmovement)
assoc_key = L[index]
var/default
var/variable
- if (assoc)
- variable = L[assoc_key]
- else
- variable = L[index]
+ var/old_assoc_value //EXPERIMENTAL - Keep old associated value while modifying key, if any
+ if(is_normal_list)
+ if (assoc)
+ variable = L[assoc_key]
+ else
+ variable = L[index]
+ //EXPERIMENTAL - Keep old associated value while modifying key, if any
+ var/found = L[variable]
+ if(!isnull(found))
+ old_assoc_value = found
+ //
default = vv_get_class(objectvar, variable)
@@ -504,11 +259,13 @@ GLOBAL_PROTECT(VVpixelmovement)
for(var/V in varsvars)
new_var = replacetext(new_var,"\[[V]]","[O.vars[V]]")
-
- if(assoc)
- L[assoc_key] = new_var
- else
- L[index] = new_var
+ if(is_normal_list)
+ if(assoc)
+ L[assoc_key] = new_var
+ else
+ L[index] = new_var
+ if(!isnull(old_assoc_value) && IS_VALID_ASSOC_KEY(new_var))
+ L[new_var] = old_assoc_value
if (O)
if (O.vv_edit_var(objectvar, L) == FALSE)
to_chat(src, "Your edit was rejected by the object.")
@@ -527,15 +284,8 @@ GLOBAL_PROTECT(VVpixelmovement)
if(param_var_name in GLOB.VVicon_edit_lock)
if(!check_rights(R_FUN|R_DEBUG))
return FALSE
- if(param_var_name in GLOB.VVpixelmovement)
- if(!check_rights(R_DEBUG))
- return FALSE
- var/prompt = alert(usr, "Editing this var may irreparably break tile gliding for the rest of the round. THIS CAN'T BE UNDONE", "DANGER", "ABORT ", "Continue", " ABORT")
- if (prompt != "Continue")
- return FALSE
return TRUE
-
/client/proc/modify_variables(atom/O, param_var_name = null, autodetect_class = 0)
if(!check_rights(R_VAREDIT))
return
@@ -567,11 +317,6 @@ GLOBAL_PROTECT(VVpixelmovement)
var_value = O.vars[variable]
if(!vv_varname_lockcheck(variable))
return
- if(istype(O, /datum/armor))
- var/prompt = alert(src, "Editing this var changes this value on potentially thousands of items that share the same combination of armor values. If you want to edit the armor of just one item, use the \"Modify armor values\" dropdown item", "DANGER", "ABORT ", "Continue", " ABORT")
- if (prompt != "Continue")
- return
-
var/default = vv_get_class(variable, var_value)
@@ -635,10 +380,9 @@ GLOBAL_PROTECT(VVpixelmovement)
to_chat(src, "Your edit was rejected by the object.")
return
vv_update_display(O, "varedited", VV_MSG_EDITED)
- SEND_GLOBAL_SIGNAL(COMSIG_GLOB_VAR_EDIT, args)
log_world("### VarEdit by [key_name(src)]: [O.type] [variable]=[var_value] => [var_new]")
log_admin("[key_name(src)] modified [original_name]'s [variable] from [html_encode("[var_value]")] to [html_encode("[var_new]")]")
var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] from [var_value] to [var_new]"
message_admins(msg)
admin_ticket_log(O, msg)
- return TRUE
\ No newline at end of file
+ return TRUE
diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm
new file mode 100644
index 0000000000..626e75fa10
--- /dev/null
+++ b/code/modules/admin/view_variables/topic.dm
@@ -0,0 +1,128 @@
+//DO NOT ADD MORE TO THIS FILE.
+//Use vv_do_topic() for datums!
+/client/proc/view_var_Topic(href, href_list, hsrc)
+ if( (usr.client != src) || !src.holder || !holder.CheckAdminHref(href, href_list))
+ return
+ var/target = GET_VV_TARGET
+ vv_do_basic(target, href_list, href)
+ if(istype(target, /datum))
+ var/datum/D = target
+ D.vv_do_topic(href_list)
+ else if(islist(target))
+ vv_do_list(target, href_list)
+ if(href_list["Vars"])
+ debug_variables(locate(href_list["Vars"]))
+
+//Stuff below aren't in dropdowns/etc.
+
+ if(check_rights(R_VAREDIT))
+
+ //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
+
+ if(href_list["rename"])
+ if(!check_rights(NONE))
+ return
+
+ var/mob/M = locate(href_list["rename"]) in GLOB.mob_list
+ if(!istype(M))
+ to_chat(usr, "This can only be used on instances of type /mob")
+ return
+
+ var/new_name = stripped_input(usr,"What would you like to name this mob?","Input a name",M.real_name,MAX_NAME_LEN)
+ if( !new_name || !M )
+ return
+
+ message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].")
+ M.fully_replace_character_name(M.real_name,new_name)
+ vv_update_display(M, "name", new_name)
+ vv_update_display(M, "real_name", M.real_name || "No real name")
+
+ else if(href_list["rotatedatum"])
+ if(!check_rights(NONE))
+ return
+
+ var/atom/A = locate(href_list["rotatedatum"])
+ if(!istype(A))
+ to_chat(usr, "This can only be done to instances of type /atom")
+ return
+
+ switch(href_list["rotatedir"])
+ if("right")
+ A.setDir(turn(A.dir, -45))
+ if("left")
+ A.setDir(turn(A.dir, 45))
+ vv_update_display(A, "dir", dir2text(A.dir))
+
+
+ else if(href_list["makehuman"])
+ if(!check_rights(R_SPAWN))
+ return
+
+ var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"]) in GLOB.mob_list
+ if(!istype(Mo))
+ to_chat(usr, "This can only be done to instances of type /mob/living/carbon/monkey")
+ return
+
+ if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
+ return
+ if(!Mo)
+ to_chat(usr, "Mob doesn't exist anymore")
+ return
+ holder.Topic(href, list("humanone"=href_list["makehuman"]))
+
+ else if(href_list["adjustDamage"] && href_list["mobToDamage"])
+ if(!check_rights(NONE))
+ return
+
+ var/mob/living/L = locate(href_list["mobToDamage"]) in GLOB.mob_list
+ if(!istype(L))
+ return
+
+ var/Text = href_list["adjustDamage"]
+
+ var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num
+
+ if(!L)
+ to_chat(usr, "Mob doesn't exist anymore")
+ return
+
+ var/newamt
+ switch(Text)
+ if("brute")
+ L.adjustBruteLoss(amount)
+ newamt = L.getBruteLoss()
+ if("fire")
+ L.adjustFireLoss(amount)
+ newamt = L.getFireLoss()
+ if("toxin")
+ L.adjustToxLoss(amount)
+ newamt = L.getToxLoss()
+ if("oxygen")
+ L.adjustOxyLoss(amount)
+ newamt = L.getOxyLoss()
+ if("brain")
+ L.adjustOrganLoss(ORGAN_SLOT_BRAIN, amount)
+ newamt = L.getOrganLoss(ORGAN_SLOT_BRAIN)
+ if("clone")
+ L.adjustCloneLoss(amount)
+ newamt = L.getCloneLoss()
+ if("stamina")
+ L.adjustStaminaLoss(amount)
+ newamt = L.getStaminaLoss()
+ else
+ to_chat(usr, "You caused an error. DEBUG: Text:[Text] Mob:[L]")
+ return
+
+ if(amount != 0)
+ var/log_msg = "[key_name(usr)] dealt [amount] amount of [Text] damage to [key_name(L)]"
+ message_admins("[key_name(usr)] dealt [amount] amount of [Text] damage to [ADMIN_LOOKUPFLW(L)]")
+ log_admin(log_msg)
+ admin_ticket_log(L, "[log_msg] ")
+ vv_update_display(L, Text, "[newamt]")
+
+
+ //Finally, refresh if something modified the list.
+ if(href_list["datumrefresh"])
+ var/datum/DAT = locate(href_list["datumrefresh"])
+ if(istype(DAT, /datum) || istype(DAT, /client))
+ debug_variables(DAT)
diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm
new file mode 100644
index 0000000000..2a0f3d7302
--- /dev/null
+++ b/code/modules/admin/view_variables/topic_basic.dm
@@ -0,0 +1,51 @@
+//Not using datum.vv_do_topic for very basic/low level debug things, incase the datum's vv_do_topic is runtiming/whatnot.
+/client/proc/vv_do_basic(datum/target, href_list)
+ var/target_var = GET_VV_VAR_TARGET
+ if(check_rights(R_VAREDIT))
+ if(target_var)
+ if(href_list[VV_HK_BASIC_EDIT])
+ if(!modify_variables(target, target_var, 1))
+ return
+ switch(target_var)
+ if("name")
+ vv_update_display(target, "name", "[target]")
+ if("dir")
+ var/atom/A = target
+ if(istype(A))
+ vv_update_display(target, "dir", dir2text(A.dir) || A.dir)
+ if("ckey")
+ var/mob/living/L = target
+ if(istype(L))
+ vv_update_display(target, "ckey", L.ckey || "No ckey")
+ if("real_name")
+ var/mob/living/L = target
+ if(istype(L))
+ vv_update_display(target, "real_name", L.real_name || "No real name")
+ if(href_list[VV_HK_BASIC_CHANGE])
+ modify_variables(target, target_var, 0)
+ if(href_list[VV_HK_BASIC_MASSEDIT])
+ cmd_mass_modify_object_variables(target, target_var)
+ if(check_rights(R_ADMIN, FALSE))
+ if(href_list[VV_HK_EXPOSE])
+ var/value = vv_get_value(VV_CLIENT)
+ if (value["class"] != VV_CLIENT)
+ return
+ var/client/C = value["value"]
+ if (!C)
+ return
+ if(!target)
+ to_chat(usr, "The object you tried to expose to [C] no longer exists (nulled or hard-deled) ")
+ return
+ message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window ")
+ log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [target]")
+ to_chat(C, "[holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window")
+ C.debug_variables(target)
+ if(check_rights(R_DEBUG))
+ if(href_list[VV_HK_DELETE])
+ usr.client.admin_delete(target)
+ if (isturf(src)) // show the turf that took its place
+ usr.client.debug_variables(src)
+ if(href_list[VV_HK_MARK])
+ usr.client.mark_datum(target)
+ if(href_list[VV_HK_CALLPROC])
+ usr.client.callproc_datum(target)
diff --git a/code/modules/admin/view_variables/topic_list.dm b/code/modules/admin/view_variables/topic_list.dm
new file mode 100644
index 0000000000..349d9da698
--- /dev/null
+++ b/code/modules/admin/view_variables/topic_list.dm
@@ -0,0 +1,43 @@
+//LISTS - CAN NOT DO VV_DO_TOPIC BECAUSE LISTS AREN'T DATUMS :(
+/client/proc/vv_do_list(list/target, href_list)
+ var/target_index = text2num(GET_VV_VAR_TARGET)
+ if(check_rights(R_VAREDIT))
+ if(target_index)
+ if(href_list[VV_HK_LIST_EDIT])
+ mod_list(target, null, "list", "contents", target_index, autodetect_class = TRUE)
+ if(href_list[VV_HK_LIST_CHANGE])
+ mod_list(target, null, "list", "contents", target_index, autodetect_class = FALSE)
+ if(href_list[VV_HK_LIST_REMOVE])
+ var/variable = target[target_index]
+ var/prompt = alert("Do you want to remove item number [target_index] from list?", "Confirm", "Yes", "No")
+ if (prompt != "Yes")
+ return
+ target.Cut(target_index, target_index+1)
+ log_world("### ListVarEdit by [src]: /list's contents: REMOVED=[html_encode("[variable]")]")
+ log_admin("[key_name(src)] modified list's contents: REMOVED=[variable]")
+ message_admins("[key_name_admin(src)] modified list's contents: REMOVED=[variable]")
+ if(href_list[VV_HK_LIST_ADD])
+ mod_list_add(target, null, "list", "contents")
+ if(href_list[VV_HK_LIST_ERASE_DUPES])
+ uniqueList_inplace(target)
+ log_world("### ListVarEdit by [src]: /list contents: CLEAR DUPES")
+ log_admin("[key_name(src)] modified list's contents: CLEAR DUPES")
+ message_admins("[key_name_admin(src)] modified list's contents: CLEAR DUPES")
+ if(href_list[VV_HK_LIST_ERASE_NULLS])
+ listclearnulls(target)
+ log_world("### ListVarEdit by [src]: /list contents: CLEAR NULLS")
+ log_admin("[key_name(src)] modified list's contents: CLEAR NULLS")
+ message_admins("[key_name_admin(src)] modified list's contents: CLEAR NULLS")
+ if(href_list[VV_HK_LIST_SET_LENGTH])
+ var/value = vv_get_value(VV_NUM)
+ if (value["class"] != VV_NUM || value["value"] > max(50000, target.len)) //safety - would rather someone not put an extra 0 and erase the server's memory lmao.
+ return
+ target.len = value["value"]
+ log_world("### ListVarEdit by [src]: /list len: [target.len]")
+ log_admin("[key_name(src)] modified list's len: [target.len]")
+ message_admins("[key_name_admin(src)] modified list's len: [target.len]")
+ if(href_list[VV_HK_LIST_SHUFFLE])
+ shuffle_inplace(target)
+ log_world("### ListVarEdit by [src]: /list contents: SHUFFLE")
+ log_admin("[key_name(src)] modified list's contents: SHUFFLE")
+ message_admins("[key_name_admin(src)] modified list's contents: SHUFFLE")
diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm
new file mode 100644
index 0000000000..a85b4ff1a3
--- /dev/null
+++ b/code/modules/admin/view_variables/view_variables.dm
@@ -0,0 +1,269 @@
+
+/client/proc/debug_variables(datum/D in world)
+ set category = "Debug"
+ set name = "View Variables"
+ //set src in world
+ var/static/cookieoffset = rand(1, 9999) //to force cookies to reset after the round.
+
+ if(!usr.client || !usr.client.holder) //This is usr because admins can call the proc on other clients, even if they're not admins, to show them VVs.
+ to_chat(usr, "You need to be an administrator to access this. ")
+ return
+
+ if(!D)
+ return
+
+ var/islist = islist(D)
+ if(!islist && !istype(D))
+ return
+
+ var/title = ""
+ var/refid = REF(D)
+ var/icon/sprite
+ var/hash
+
+ var/type = islist? /list : D.type
+ var/no_icon = FALSE
+
+ if(istype(D, /atom))
+ sprite = getFlatIcon(D)
+ hash = md5(sprite)
+ if(sprite)
+ hash = md5(sprite)
+ src << browse_rsc(sprite, "vv[hash].png")
+ else
+ no_icon = TRUE
+
+ title = "[D] ([REF(D)]) = [type]"
+ var/formatted_type = replacetext("[type]", "/", "/")
+
+ var/sprite_text
+ if(sprite)
+ sprite_text = no_icon? "\[NO ICON\]" : " "
+ var/list/header = islist(D)? list("/list ") : D.vv_get_header()
+
+ var/marked_line
+ if(holder && holder.marked_datum && holder.marked_datum == D)
+ marked_line = VV_MSG_MARKED
+ var/varedited_line
+ if(!islist && (D.datum_flags & DF_VAR_EDITED))
+ varedited_line = VV_MSG_EDITED
+ var/deleted_line
+ if(!islist && D.gc_destroyed)
+ deleted_line = VV_MSG_DELETED
+
+ var/list/dropdownoptions
+ if (islist)
+ dropdownoptions = list(
+ "---",
+ "Add Item" = VV_HREF_TARGETREF_INTERNAL(refid, VV_HK_LIST_ADD),
+ "Remove Nulls" = VV_HREF_TARGETREF_INTERNAL(refid, VV_HK_LIST_ERASE_NULLS),
+ "Remove Dupes" = VV_HREF_TARGETREF_INTERNAL(refid, VV_HK_LIST_ERASE_DUPES),
+ "Set len" = VV_HREF_TARGETREF_INTERNAL(refid, VV_HK_LIST_SET_LENGTH),
+ "Shuffle" = VV_HREF_TARGETREF_INTERNAL(refid, VV_HK_LIST_SHUFFLE),
+ "Show VV To Player" = VV_HREF_TARGETREF_INTERNAL(refid, VV_HK_EXPOSE),
+ "---"
+ )
+ for(var/i in 1 to length(dropdownoptions))
+ var/name = dropdownoptions[i]
+ var/link = dropdownoptions[name]
+ dropdownoptions[i] = "[name] "
+ else
+ dropdownoptions = D.vv_get_dropdown()
+
+ var/list/names = list()
+ if(!islist)
+ for(var/V in D.vars)
+ names += V
+ sleep(1)
+
+ var/list/variable_html = list()
+ if(islist)
+ var/list/L = D
+ for(var/i in 1 to L.len)
+ var/key = L[i]
+ var/value
+ if(IS_NORMAL_LIST(L) && IS_VALID_ASSOC_KEY(key))
+ value = L[key]
+ variable_html += debug_variable(i, value, 0, L)
+ else
+ names = sortList(names)
+ for(var/V in names)
+ if(D.can_vv_get(V))
+ variable_html += D.vv_get_var(V)
+
+ var/html = {"
+
+
+
+ [title]
+
+
+
+
+
+
+
+
+
+
+
+ [sprite_text]
+
+ [header.Join()]
+
+
+
+
+
+ [formatted_type]
+ [marked_line]
+ [varedited_line]
+ [deleted_line]
+
+
+
+
+
+
+
+
+
+
+ E - Edit, tries to determine the variable type by itself.
+ C - Change, asks you for the var type first.
+ M - Mass modify: changes this variable for all objects of this type.
+
+
+
+
+
+ [variable_html.Join()]
+
+
+
+
+"}
+ src << browse(html, "window=variables[refid];size=475x650")
+
+/client/proc/vv_update_display(datum/D, span, content)
+ src << output("[span]:[content]", "variables[REF(D)].browser:replace_span")
diff --git a/code/modules/antagonists/abductor/abductee/abductee.dm b/code/modules/antagonists/abductor/abductee/abductee.dm
index 901d2f5b11..780c3f7419 100644
--- a/code/modules/antagonists/abductor/abductee/abductee.dm
+++ b/code/modules/antagonists/abductor/abductee/abductee.dm
@@ -31,4 +31,5 @@
/datum/antagonist/abductee/remove_innate_effects(mob/living/mob_override)
update_abductor_icons_removed(mob_override ? mob_override.mind : owner)
- qdel(brain_trauma)
+ if(!QDELETED(brain_trauma))
+ qdel(brain_trauma)
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 39cdf8a5fa..a9f97942a1 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -92,10 +92,8 @@
M.cut_overlays()
M.regenerate_icons()
-/obj/item/clothing/suit/armor/abductor/vest/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- DeactivateStealth()
-
-/obj/item/clothing/suit/armor/abductor/vest/IsReflect()
+/obj/item/clothing/suit/armor/abductor/vest/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ . = ..()
DeactivateStealth()
/obj/item/clothing/suit/armor/abductor/vest/ui_action_click()
@@ -493,7 +491,7 @@
user.do_attack_animation(L)
- if(L.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK))
+ if(L.run_block(src, 0, "[user]'s [src]", ATTACK_TYPE_MELEE, 0, user, check_zone(user.zone_selected)) & BLOCK_SUCCESS)
playsound(L, 'sound/weapons/genhit.ogg', 50, TRUE)
return FALSE
diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm
index ca6481bcfe..f92cb987d0 100644
--- a/code/modules/antagonists/abductor/machinery/experiment.dm
+++ b/code/modules/antagonists/abductor/machinery/experiment.dm
@@ -209,7 +209,6 @@
open_machine()
SendBack(H)
return "Specimen braindead - disposed. "
- return "ERROR "
/obj/machinery/abductor/experiment/proc/SendBack(mob/living/carbon/human/H)
diff --git a/code/modules/antagonists/bloodsucker/powers/haste.dm b/code/modules/antagonists/bloodsucker/powers/haste.dm
index 143950b32f..05e2cd0330 100644
--- a/code/modules/antagonists/bloodsucker/powers/haste.dm
+++ b/code/modules/antagonists/bloodsucker/powers/haste.dm
@@ -8,7 +8,7 @@
desc = "Dash somewhere with supernatural speed. Those nearby may be knocked away, stunned, or left empty-handed."
button_icon_state = "power_speed"
bloodcost = 6
- cooldown = 50
+ cooldown = 120
target_range = 15
power_activates_immediately = TRUE
message_Trigger = ""//"Whom will you subvert to your will?"
diff --git a/code/modules/antagonists/bloodsucker/powers/mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
index 3be5eb02e9..814ad2abd7 100644
--- a/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
+++ b/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
@@ -64,7 +64,7 @@
to_chat(owner, "Your victim's eyes are glazed over. They cannot perceive you. ")
return FALSE
// Check: Target See Me? (behind wall)
- if(!(target in view(target_range, get_turf(owner))))
+ if(!(target in viewers(target_range, get_turf(owner))))
// Sub-Check: GET CLOSER
//if (!(owner in range(target_range, get_turf(target)))
// if (display_error)
@@ -90,48 +90,56 @@
/datum/action/bloodsucker/targeted/mesmerize/proc/ContinueTarget(atom/A)
var/mob/living/carbon/target = A
- var/mob/living/user = owner
+ var/mob/living/L = owner
- var/cancontinue=CheckCanTarget(target)
+ var/cancontinue = CheckCanTarget(target)
if(!cancontinue)
success = FALSE
target.remove_status_effect(STATUS_EFFECT_MESMERIZE)
- user.remove_status_effect(STATUS_EFFECT_MESMERIZE)
+ L.remove_status_effect(STATUS_EFFECT_MESMERIZE)
DeactivatePower()
DeactivateRangedAbility()
StartCooldown()
- to_chat(user, "[target] has escaped your gaze! ")
+ to_chat(L, "[target] has escaped your gaze! ")
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
/datum/action/bloodsucker/targeted/mesmerize/FireTargetedPower(atom/A)
// set waitfor = FALSE <---- DONT DO THIS!We WANT this power to hold up ClickWithPower(), so that we can unlock the power when it's done.
var/mob/living/carbon/target = A
- var/mob/living/user = owner
+ var/mob/living/L = owner
+ L.face_atom(A)
+ if(!istype(target))
+ return
+ success = TRUE
+ var/power_time = 138 + level_current * 12
+ target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
+ L.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/ContinueTarget)
+ // 5 second windup
+ addtimer(CALLBACK(src, .proc/apply_effects, L, target, power_time), 6 SECONDS)
+ ADD_TRAIT(target, TRAIT_COMBAT_MODE_LOCKED, src)
+ ADD_TRAIT(L, TRAIT_COMBAT_MODE_LOCKED, src)
- if(istype(target))
- success = TRUE
- var/power_time = 138 + level_current * 12
- target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
- user.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
-
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/ContinueTarget)
+/datum/action/bloodsucker/targeted/mesmerize/proc/apply_effects(aggressor, victim, power_time)
+ var/mob/living/carbon/target = victim
+ var/mob/living/L = aggressor
+ if(!success)
+ return
+ PowerActivatedSuccessfully() // blood & cooldown only altered if power activated successfully - less "fuck you"-y
+ target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time)
+ REMOVE_TRAIT(L, TRAIT_COMBAT_MODE_LOCKED, src)
+ target.face_atom(L)
+ target.Stun(power_time)
+ to_chat(L, "[target] is fixed in place by your hypnotic gaze. ")
+ target.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // target.changeNext_move(power_time) // check click.dm
+ target.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze.
+ spawn(power_time)
+ if(istype(target) && success)
+ target.notransform = FALSE
+ REMOVE_TRAIT(target, TRAIT_COMBAT_MODE_LOCKED, src)
+ if(istype(L) && target.stat == CONSCIOUS && (target in view(10, get_turf(L)))) // They Woke Up! (Notice if within view)
+ to_chat(L, "[target] has snapped out of their trance. ")
- // 3 second windup
- sleep(30)
- if(success)
- PowerActivatedSuccessfully() // blood & cooldown only altered if power activated successfully - less "fuck you"-y
- target.face_atom(user)
- target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time) // pretty much purely cosmetic
- target.Stun(power_time)
- to_chat(user, "[target] is fixed in place by your hypnotic gaze. ")
- target.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // target.changeNext_move(power_time) // check click.dm
- target.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze.
- spawn(power_time)
- if(istype(target) && success)
- target.notransform = FALSE
- // They Woke Up! (Notice if within view)
- if(istype(user) && target.stat == CONSCIOUS && (target in view(10, get_turf(user))) )
- to_chat(user, "[target] has snapped out of their trance. ")
/datum/action/bloodsucker/targeted/mesmerize/ContinueActive(mob/living/user, mob/living/target)
return ..() && CheckCanUse() && CheckCanTarget(target)
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index cc15147312..967715ce2f 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -31,6 +31,7 @@
var/isabsorbing = 0
var/islinking = 0
var/geneticpoints = 10
+ var/maxgeneticpoints = 10
var/purchasedpowers = list()
var/mimicing = ""
var/canrespec = 0
@@ -98,17 +99,24 @@
to_chat(H, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.")
H.dna.remove_mutation(CLOWNMUT)
-/datum/antagonist/changeling/proc/reset_properties()
+/datum/antagonist/changeling/proc/reset_properties(hardReset = FALSE)
changeling_speak = 0
chosen_sting = null
- geneticpoints = initial(geneticpoints)
+
+ geneticpoints = maxgeneticpoints
sting_range = initial(sting_range)
- chem_storage = initial(chem_storage)
- chem_recharge_rate = initial(chem_recharge_rate)
- chem_charges = min(chem_charges, chem_storage)
chem_recharge_slowdown = initial(chem_recharge_slowdown)
mimicing = ""
+ if (hardReset)
+ chem_storage = initial(chem_storage)
+ chem_recharge_rate = initial(chem_recharge_rate)
+ geneticpoints = initial(geneticpoints)
+ maxgeneticpoints = initial(maxgeneticpoints)
+
+ chem_charges = min(chem_charges, chem_storage)
+
+
/datum/antagonist/changeling/proc/remove_changeling_powers()
if(ishuman(owner.current) || ismonkey(owner.current))
reset_properties()
@@ -287,7 +295,6 @@
prof.name_list[slot] = I.name
prof.appearance_list[slot] = I.appearance
prof.flags_cover_list[slot] = I.flags_cover
- prof.item_color_list[slot] = I.item_color
prof.item_state_list[slot] = I.item_state
prof.exists_list[slot] = 1
else
@@ -503,7 +510,6 @@
var/list/appearance_list = list()
var/list/flags_cover_list = list()
var/list/exists_list = list()
- var/list/item_color_list = list()
var/list/item_state_list = list()
var/underwear
@@ -526,7 +532,6 @@
newprofile.appearance_list = appearance_list.Copy()
newprofile.flags_cover_list = flags_cover_list.Copy()
newprofile.exists_list = exists_list.Copy()
- newprofile.item_color_list = item_color_list.Copy()
newprofile.item_state_list = item_state_list.Copy()
newprofile.underwear = underwear
newprofile.undershirt = undershirt
diff --git a/code/modules/antagonists/changeling/changeling_power.dm b/code/modules/antagonists/changeling/changeling_power.dm
index 574edf225a..aa45c56892 100644
--- a/code/modules/antagonists/changeling/changeling_power.dm
+++ b/code/modules/antagonists/changeling/changeling_power.dm
@@ -28,8 +28,7 @@
action.Remove(user)
return
-/obj/effect/proc_holder/changeling/Click()
- var/mob/user = usr
+/obj/effect/proc_holder/changeling/Trigger(mob/user)
if(!user || !user.mind || !user.mind.has_antag_datum(/datum/antagonist/changeling))
return
try_to_sting(user)
diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm
index 5cb4faa86e..c3c4ec78a3 100644
--- a/code/modules/antagonists/changeling/powers/absorb.dm
+++ b/code/modules/antagonists/changeling/powers/absorb.dm
@@ -96,6 +96,7 @@
to_chat(user, "[target] was one of us. We have absorbed their power. ")
target_ling.remove_changeling_powers()
changeling.geneticpoints += round(target_ling.geneticpoints/2)
+ changeling.maxgeneticpoints += round(target_ling.geneticpoints/2)
target_ling.geneticpoints = 0
target_ling.canrespec = 0
changeling.chem_storage += round(target_ling.chem_storage/2)
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 49c34f4d1f..8514df4bd6 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -441,23 +441,23 @@
var/remaining_uses //Set by the changeling ability.
-/obj/item/shield/changeling/Initialize()
+/obj/item/shield/changeling/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT)
if(ismob(loc))
loc.visible_message("The end of [loc.name]\'s hand inflates rapidly, forming a huge shield-like mass! ", "We inflate our hand into a strong shield. ", "You hear organic matter ripping and tearing! ")
-/obj/item/shield/changeling/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(remaining_uses < 1)
+/obj/item/shield/changeling/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ block_return[BLOCK_RETURN_BLOCK_CAPACITY] = (block_return[BLOCK_RETURN_BLOCK_CAPACITY] || 0) + remaining_uses
+ return ..()
+
+/obj/item/shield/changeling/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ . = ..()
+ if(--remaining_uses < 1)
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
H.visible_message("With a sickening crunch, [H] reforms [H.p_their()] shield into an arm! ", "We assimilate our shield into our body ", "You press your hand onto [src], golden tendrils of light latching onto you. Was this the best of ideas? ")
+ if(add_servant_of_ratvar(user, FALSE, FALSE, /datum/antagonist/clockcult/neutered/traitor))
+ spent = TRUE
+ // Add some (5 KW) power so they don't suffer for 100 ticks
+ GLOB.clockwork_power += 5000
+ // This intentionally does not use adjust_clockwork_power.
+ else
+ to_chat(user, "[src] falls dark. It appears you weren't worthy. ")
+ return ..()
+
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/clockwork/slab/debug/attack_hand(mob/living/user)
if(!is_servant_of_ratvar(user))
@@ -103,8 +121,8 @@
. = ..()
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
-/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(isinhands && item_state && inhand_overlay)
var/mutable_appearance/M = mutable_appearance(icon_file, "slab_[inhand_overlay]")
. += M
diff --git a/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm
index e4722dbcb0..faa5e025ca 100644
--- a/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm
+++ b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm
@@ -232,7 +232,7 @@
background_icon_state = "bg_clock"
buttontooltipstyle = "clockcult"
-/datum/action/innate/eminence/IsAvailable()
+/datum/action/innate/eminence/IsAvailable(silent = FALSE)
if(!iseminence(owner))
qdel(src)
return
@@ -283,7 +283,7 @@
desc = "Initiates a mass recall, warping all servants to the Ark after a short delay. This can only be used once."
button_icon_state = "Spatial Gateway"
-/datum/action/innate/eminence/mass_recall/IsAvailable()
+/datum/action/innate/eminence/mass_recall/IsAvailable(silent = FALSE)
. = ..()
if(.)
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar
diff --git a/code/modules/antagonists/clockcult/clock_scripture.dm b/code/modules/antagonists/clockcult/clock_scripture.dm
index 753de786dc..16d251fe92 100644
--- a/code/modules/antagonists/clockcult/clock_scripture.dm
+++ b/code/modules/antagonists/clockcult/clock_scripture.dm
@@ -30,6 +30,7 @@ Applications: 8 servants, 3 caches, and 100 CV
var/primary_component
var/important = FALSE //important scripture will be italicized in the slab's interface
var/sort_priority = 1 //what position the scripture should have in a list of scripture. Should be based off of component costs/reqs, but you can't initial() lists.
+ var/requires_full_power = FALSE //requires the user to be a full, non neutered servant of ratvar
//messages for offstation scripture recital, courtesy ratvar's generals(and neovgre)
var/static/list/neovgre_penalty = list("Go to the station.", "Useless.", "Don't waste time.", "Pathetic.", "Wasteful.")
@@ -77,6 +78,9 @@ Applications: 8 servants, 3 caches, and 100 CV
/datum/clockwork_scripture/proc/can_recite() //If the words can be spoken
if(!invoker || !slab || invoker.get_active_held_item() != slab)
return FALSE
+ if(!is_servant_of_ratvar(invoker, requires_full_power))
+ to_chat(invoker, "You aren't strongly connected enough to Ratvar to invoke this! ")
+ return FALSE
if(!invoker.can_speak_vocal())
to_chat(invoker, "You are unable to speak the words of the scripture! ")
return FALSE
@@ -236,18 +240,21 @@ Applications: 8 servants, 3 caches, and 100 CV
return FALSE
return TRUE
+/datum/clockwork_scripture/create_object/proc/get_spawn_path(mob/user)
+ return object_path
+
/datum/clockwork_scripture/create_object/scripture_effects()
if(creator_message && observer_message)
invoker.visible_message(observer_message, creator_message)
else if(creator_message)
to_chat(invoker, creator_message)
- var/obj/O = new object_path (get_turf(invoker))
+ var/to_spawn = get_spawn_path(invoker)
+ var/obj/O = new to_spawn(get_turf(invoker))
O.ratvar_act() //update the new object so it gets buffed if ratvar is alive
if(isitem(O) && put_object_in_hands)
invoker.put_in_hands(O)
return TRUE
-
//Used specifically to create construct shells.
/datum/clockwork_scripture/create_object/construct
put_object_in_hands = FALSE
diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm
index 5d7a95222f..6349ecb581 100644
--- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm
+++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm
@@ -88,7 +88,7 @@
sort_priority = 4
quickbind = TRUE
quickbind_desc = "Creates a Sigil of Submission, which will convert non-Servants that remain on it."
-
+ requires_full_power = TRUE
//Kindle: Charges the slab with blazing energy. It can be released to stun and silence a target.
/datum/clockwork_scripture/ranged_ability/kindle
@@ -211,6 +211,7 @@
quickbind = TRUE
quickbind_desc = "Returns you to Reebe."
var/client_color
+ requires_full_power = TRUE
/datum/clockwork_scripture/abscond/check_special_requirements()
if(is_reebe(invoker.z))
diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
index 4e1a5b42cb..130fc24583 100644
--- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
+++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
@@ -50,7 +50,6 @@
return FALSE
return ..()
-
//Vitality Matrix: Creates a sigil which will drain health from nonservants and can use that health to heal or even revive servants.
/datum/clockwork_scripture/create_object/vitality_matrix
descname = "Trap, Damage to Healing"
@@ -77,6 +76,10 @@
return FALSE
return ..()
+/datum/clockwork_scripture/create_object/vitality_matrix/get_spawn_path(mob/user)
+ if(!is_servant_of_ratvar(user, TRUE))
+ return /obj/effect/clockwork/sigil/vitality/neutered
+ return ..()
//Judicial Visor: Creates a judicial visor, which can smite an area.
/datum/clockwork_scripture/create_object/judicial_visor
@@ -150,7 +153,7 @@
/obj/item/clothing/head/helmet/space,
/obj/item/clothing/shoes/magboots)) //replace this only if ratvar is up
-/datum/action/innate/clockwork_armaments/IsAvailable()
+/datum/action/innate/clockwork_armaments/IsAvailable(silent = FALSE)
if(!is_servant_of_ratvar(owner))
qdel(src)
return
diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm
index cf3d88983c..cbfd443744 100644
--- a/code/modules/antagonists/clockcult/clockcult.dm
+++ b/code/modules/antagonists/clockcult/clockcult.dm
@@ -5,15 +5,27 @@
antagpanel_category = "Clockcult"
job_rank = ROLE_SERVANT_OF_RATVAR
antag_moodlet = /datum/mood_event/cult
+ var/datum/action/innate/hierophant/hierophant_network = new
threat = 3
- var/datum/action/innate/hierophant/hierophant_network = new()
var/datum/team/clockcult/clock_team
var/make_team = TRUE //This should be only false for tutorial scarabs
+ var/neutered = FALSE //can not use round ending, gibbing, converting, or similar things with unmatched round impact
+ var/ignore_eligibility_check = FALSE
+ var/ignore_holy_water = FALSE
/datum/antagonist/clockcult/silent
silent = TRUE
show_in_antagpanel = FALSE //internal
+/datum/antagonist/clockcult/neutered
+ neutered = TRUE
+
+/datum/antagonist/clockcult/neutered/traitor
+ ignore_eligibility_check = TRUE
+ ignore_holy_water = TRUE
+ show_in_roundend = FALSE
+ make_team = FALSE
+
/datum/antagonist/clockcult/Destroy()
qdel(hierophant_network)
return ..()
@@ -38,7 +50,7 @@
/datum/antagonist/clockcult/can_be_owned(datum/mind/new_owner)
. = ..()
- if(.)
+ if(. && !ignore_eligibility_check)
. = is_eligible_servant(new_owner.current)
/datum/antagonist/clockcult/greet()
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 9a086b75a2..d64e99d206 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -17,7 +17,7 @@
qdel(X)
..()
-/datum/action/innate/cult/blood_magic/IsAvailable()
+/datum/action/innate/cult/blood_magic/IsAvailable(silent = FALSE)
if(!iscultist(owner))
return FALSE
return ..()
@@ -118,7 +118,7 @@
hand_magic = null
..()
-/datum/action/innate/cult/blood_spell/IsAvailable()
+/datum/action/innate/cult/blood_spell/IsAvailable(silent = FALSE)
if(!iscultist(owner) || owner.incapacitated() || !charges)
return FALSE
return ..()
@@ -439,7 +439,7 @@
"A feeling of warmth washes over you, rays of holy light surround your body and protect you from the flash of light! ")
else // cult doesn't stun any longer when halos are out, instead it does burn damage + knockback!
var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
- if(user_antag.cult_team.cult_ascendent)
+ if(user_antag.cult_team?.cult_ascendent)
if(!iscultist(L))
L.adjustFireLoss(20)
if(L.move_resist < MOVE_FORCE_STRONG)
@@ -577,7 +577,9 @@
var/turf/T = get_turf(target)
if(istype(target, /obj/item/stack/sheet/metal))
var/obj/item/stack/sheet/candidate = target
- if(candidate.use(50))
+ if(!iscultist(user, TRUE))
+ to_chat(user, "You are not strongly connected enough to Nar'sie to use make constructs... ")
+ else if(candidate.use(50))
uses--
to_chat(user, "A dark cloud emanates from your hand and swirls around the metal, twisting it into a construct shell! ")
new /obj/structure/constructshell(T)
@@ -600,7 +602,9 @@
SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25))
else if(istype(target,/mob/living/silicon/robot))
var/mob/living/silicon/robot/candidate = target
- if(candidate.mmi)
+ if(!iscultist(user, TRUE))
+ to_chat(user, "You are not strongly connected enough to Nar'sie to use make constructs... ")
+ else if(candidate.mmi)
user.visible_message("A dark cloud emanates from [user]'s hand and swirls around [candidate]! ")
playsound(T, 'sound/machines/airlock_alien_prying.ogg', 80, 1)
var/prev_color = candidate.color
@@ -656,6 +660,7 @@
C.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), SLOT_WEAR_SUIT)
C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), SLOT_SHOES)
C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), SLOT_BACK)
+ C.equip_to_slot_or_del(new /obj/item/clothing/gloves/fingerless/pugilist/hungryghost(user), SLOT_GLOVES)
if(C == user)
qdel(src) //Clears the hands
C.put_in_hands(new /obj/item/melee/cultblade(user))
@@ -819,6 +824,8 @@
if("Blood Beam (500)")
if(uses < 500)
to_chat(user, "You need 500 charges to perform this rite. ")
+ else if(!iscultist(user, TRUE))
+ to_chat(user, "You are not strongly connected to Nar'sie enough to use something of this power. ")
else
var/obj/rite = new /obj/item/blood_beam()
uses -= 500
diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm
index 1746fd135c..023794182a 100644
--- a/code/modules/antagonists/cult/cult.dm
+++ b/code/modules/antagonists/cult/cult.dm
@@ -11,15 +11,27 @@
var/datum/action/innate/cult/blood_magic/magic = new
job_rank = ROLE_CULTIST
var/ignore_implant = FALSE
+ var/make_team = TRUE
var/give_equipment = FALSE
var/datum/team/cult/cult_team
+ var/neutered = FALSE //can not use round ending, gibbing, converting, or similar things with unmatched round impact
+ var/ignore_eligibility_checks = FALSE
+ var/ignore_holy_water = FALSE
+/datum/antagonist/cult/neutered
+ neutered = TRUE
+
+/datum/antagonist/cult/neutered/traitor
+ ignore_eligibility_checks = TRUE
+ ignore_holy_water = TRUE
+ show_in_roundend = FALSE
+ make_team = FALSE
/datum/antagonist/cult/get_team()
return cult_team
/datum/antagonist/cult/create_team(datum/team/cult/new_team)
- if(!new_team)
+ if(!new_team && make_team)
//todo remove this and allow admin buttons to create more than one cult
for(var/datum/antagonist/cult/H in GLOB.antagonists)
if(!H.owner)
@@ -30,12 +42,12 @@
cult_team = new /datum/team/cult
cult_team.setup_objectives()
return
- if(!istype(new_team))
+ if(make_team && !istype(new_team))
stack_trace("Wrong team type passed to [type] initialization.")
cult_team = new_team
/datum/antagonist/cult/proc/add_objectives()
- objectives |= cult_team.objectives
+ objectives |= cult_team?.objectives
/datum/antagonist/cult/Destroy()
QDEL_NULL(communion)
@@ -44,7 +56,7 @@
/datum/antagonist/cult/can_be_owned(datum/mind/new_owner)
. = ..()
- if(. && !ignore_implant)
+ if(. && !ignore_implant && !ignore_eligibility_checks)
. = is_convertable_to_cult(new_owner.current,cult_team)
/datum/antagonist/cult/greet()
@@ -62,7 +74,7 @@
SSticker.mode.update_cult_icons_added(owner)
current.log_message("has been converted to the cult of Nar'Sie!", LOG_ATTACK, color="#960000")
- if(cult_team.blood_target && cult_team.blood_target_image && current.client)
+ if(cult_team?.blood_target && cult_team.blood_target_image && current.client)
current.client.images += cult_team.blood_target_image
@@ -105,13 +117,13 @@
current = mob_override
current.faction |= "cult"
current.grant_language(/datum/language/narsie)
- if(!cult_team.cult_master)
+ if(!cult_team?.cult_master)
vote.Grant(current)
communion.Grant(current)
if(ishuman(current))
magic.Grant(current)
current.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
- if(cult_team.cult_risen)
+ if(cult_team?.cult_risen)
cult_team.rise(current)
if(cult_team.cult_ascendent)
cult_team.ascend(current)
@@ -144,7 +156,7 @@
owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.current.p_their()] old faith! ", null, null, null, owner.current)
to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant. ")
owner.current.log_message("has renounced the cult of Nar'Sie!", LOG_ATTACK, color="#960000")
- if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client)
+ if(cult_team?.blood_target && cult_team.blood_target_image && owner.current.client)
owner.current.client.images -= cult_team.blood_target_image
. = ..()
@@ -206,7 +218,7 @@
throwing.Grant(current)
current.update_action_buttons_icon()
current.apply_status_effect(/datum/status_effect/cult_master)
- if(cult_team.cult_risen)
+ if(cult_team?.cult_risen)
cult_team.rise(current)
if(cult_team.cult_ascendent)
cult_team.ascend(current)
diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm
index 761412e9f8..77893225fa 100644
--- a/code/modules/antagonists/cult/cult_comms.dm
+++ b/code/modules/antagonists/cult/cult_comms.dm
@@ -6,7 +6,7 @@
buttontooltipstyle = "cult"
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS
-/datum/action/innate/cult/IsAvailable()
+/datum/action/innate/cult/IsAvailable(silent = FALSE)
if(!iscultist(owner))
return FALSE
return ..()
@@ -51,7 +51,7 @@
name = "Spiritual Communion"
desc = "Conveys a message from the spirit realm that all cultists can hear."
-/datum/action/innate/cult/comm/spirit/IsAvailable()
+/datum/action/innate/cult/comm/spirit/IsAvailable(silent = FALSE)
if(iscultist(owner.mind.current))
return TRUE
@@ -72,9 +72,9 @@
name = "Assert Leadership"
button_icon_state = "cultvote"
-/datum/action/innate/cult/mastervote/IsAvailable()
+/datum/action/innate/cult/mastervote/IsAvailable(silent = FALSE)
var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
- if(!C || C.cult_team.cult_vote_called || !ishuman(owner))
+ if(!C?.cult_team || C.cult_team.cult_vote_called || !ishuman(owner))
return FALSE
return ..()
@@ -82,6 +82,9 @@
var/choice = alert(owner, "The mantle of leadership is heavy. Success in this role requires an expert level of communication and experience. Are you sure?",, "Yes", "No")
if(choice == "Yes" && IsAvailable())
var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
+ if(!C.cult_team)
+ to_chat(owner, "Do you not alreaady lead yourself? ")
+ return
pollCultists(owner,C.cult_team)
/proc/pollCultists(var/mob/living/Nominee,datum/team/cult/team) //Cult Master Poll
@@ -137,7 +140,7 @@
to_chat(B.current,"[Nominee] has won the cult's support and is now their master. Follow [Nominee.p_their()] orders to the best of your ability! ")
return TRUE
-/datum/action/innate/cult/master/IsAvailable()
+/datum/action/innate/cult/master/IsAvailable(silent = FALSE)
if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master) || GLOB.cult_narsie)
return 0
return ..()
@@ -151,6 +154,9 @@
var/datum/antagonist/cult/antag = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
if(!antag)
return
+ if(!antag.cult_team)
+ to_chat(owner, "You have no team. You are alone. ")
+ return
for(var/i in 1 to 4)
chant(i)
var/list/destinations = list()
@@ -220,9 +226,9 @@
CM.attached_action = src
..()
-/datum/action/innate/cult/master/cultmark/IsAvailable()
+/datum/action/innate/cult/master/cultmark/IsAvailable(silent = FALSE)
if(cooldown > world.time)
- if(!CM.active)
+ if(!CM.active && !silent)
to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can mark another target! ")
return FALSE
return ..()
@@ -261,7 +267,10 @@
return FALSE
var/datum/antagonist/cult/C = caller.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
-
+ if(!C.cult_team)
+ to_chat(ranged_ability_user, "What is the point of marking a target for yourself? ")
+ remove_ranged_ability()
+ return
if(target in view(7, get_turf(ranged_ability_user)))
if(C.cult_team.blood_target)
to_chat(ranged_ability_user, "The cult has already designated a target! ")
@@ -299,7 +308,7 @@
name = "Mark a Blood Target for the Cult"
desc = "Marks a target for the entire cult to track."
-/datum/action/innate/cult/master/cultmark/ghost/IsAvailable()
+/datum/action/innate/cult/master/cultmark/ghost/IsAvailable(silent = FALSE)
if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current))
return TRUE
else
@@ -313,7 +322,7 @@
var/cooldown = 0
var/base_cooldown = 600
-/datum/action/innate/cult/ghostmark/IsAvailable()
+/datum/action/innate/cult/ghostmark/IsAvailable(silent = FALSE)
if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current))
return TRUE
else
@@ -330,8 +339,11 @@
/datum/action/innate/cult/ghostmark/Activate()
var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
+ if(!C.cult_team)
+ to_chat(owner, "You are alone. You do not have a team. ")
+ return
if(C.cult_team.blood_target)
- if(cooldown>world.time)
+ if(cooldown > world.time)
reset_blood_target(C.cult_team)
to_chat(owner, "You have cleared the cult's blood target! ")
deltimer(C.cult_team.blood_target_reset_timer)
@@ -339,7 +351,7 @@
else
to_chat(owner, "The cult has already designated a target! ")
return
- if(cooldown>world.time)
+ if(cooldown > world.time)
to_chat(owner, "You aren't ready to place another blood mark yet! ")
return
target = owner.orbiting?.parent || get_turf(owner)
@@ -389,11 +401,11 @@
PM.attached_action = src
..()
-/datum/action/innate/cult/master/pulse/IsAvailable()
+/datum/action/innate/cult/master/pulse/IsAvailable(silent = FALSE)
if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master))
return FALSE
if(cooldown > world.time)
- if(!PM.active)
+ if(!PM.active && !silent)
to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can pulse again! ")
return FALSE
return ..()
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index edeb74eeaf..b05aa7f769 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -6,6 +6,21 @@
throw_range = 5
w_class = WEIGHT_CLASS_SMALL
+/obj/item/tome/traitor
+ var/spent = FALSE
+
+/obj/item/tome/traitor/check_uplink_validity()
+ return !spent
+
+/obj/item/tome/traitor/attack_self(mob/living/user)
+ if(!iscultist(user) && !spent)
+ to_chat(user, "You press your hand onto [src], sinister tendrils of corrupted magic swirling around you. Was this the best of ideas? ")
+ if(user.mind.add_antag_datum(/datum/antagonist/cult/neutered/traitor))
+ spent = TRUE
+ else
+ to_chat(user, "[src] falls dark. It appears you weren't worthy. ")
+ return ..()
+
/obj/item/melee/cultblade/dagger
name = "ritual dagger"
desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods."
@@ -162,24 +177,20 @@
jaunt.Remove(user)
user.update_icons()
-/obj/item/twohanded/required/cult_bastard/IsReflect()
- if(spinning)
+/obj/item/twohanded/required/cult_bastard/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(spinning && is_energy_reflectable_projectile(object) && (attack_type & ATTACK_TYPE_PROJECTILE))
playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, 1)
- return TRUE
- else
- ..()
-
-/obj/item/twohanded/required/cult_bastard/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT
if(prob(final_block_chance))
- if(attack_type == PROJECTILE_ATTACK)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
owner.visible_message("[owner] deflects [attack_text] with [src]! ")
playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, 1)
- return TRUE
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT
else
playsound(src, 'sound/weapons/parry.ogg', 75, 1)
owner.visible_message("[owner] parries [attack_text] with [src]! ")
- return TRUE
- return FALSE
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return BLOCK_NONE
/obj/item/twohanded/required/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters)
. = ..()
@@ -211,7 +222,7 @@
phasein = /obj/effect/temp_visual/dir_setting/cult/phase
phaseout = /obj/effect/temp_visual/dir_setting/cult/phase/out
-/datum/action/innate/dash/cult/IsAvailable()
+/datum/action/innate/dash/cult/IsAvailable(silent = FALSE)
if(iscultist(holder) && current_charges)
return TRUE
else
@@ -231,7 +242,7 @@
sword = bastard
holder = user
-/datum/action/innate/cult/spin2win/IsAvailable()
+/datum/action/innate/cult/spin2win/IsAvailable(silent = FALSE)
if(iscultist(holder) && cooldown <= world.time)
return TRUE
else
@@ -353,6 +364,11 @@
brightness_on = 0
actions_types = list()
+
+/obj/item/clothing/head/helmet/space/hardsuit/cult/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/spellcasting, SPELL_CULT_HELMET, ITEM_SLOT_HEAD)
+
/obj/item/clothing/suit/space/hardsuit/cult
name = "\improper Nar'Sien hardened armor"
icon_state = "cult_armor"
@@ -363,6 +379,10 @@
armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult
+/obj/item/clothing/suit/space/hardsuit/cult/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/spellcasting, SPELL_CULT_ARMOR, ITEM_SLOT_OCLOTHING)
+
/obj/item/sharpener/cult
name = "eldritch whetstone"
desc = "A block, empowered by dark magic. Sharp weapons will be enhanced when used on the stone."
@@ -414,7 +434,13 @@
user.adjustBruteLoss(25)
user.dropItemToGround(src, TRUE)
-/obj/item/clothing/suit/hooded/cultrobes/cult_shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/clothing/suit/hooded/cultrobes/cult_shield/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(current_charges)
+ block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = 100
+ block_return[BLOCK_RETURN_BLOCK_CAPACITY] = (block_return[BLOCK_RETURN_BLOCK_CAPACITY] || 0) + current_charges
+ return ..()
+
+/obj/item/clothing/suit/hooded/cultrobes/cult_shield/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(current_charges)
owner.visible_message("\The [attack_text] is deflected in a burst of blood-red sparks! ")
current_charges--
@@ -422,11 +448,11 @@
if(!current_charges)
owner.visible_message("The runed shield around [owner] suddenly disappears! ")
owner.update_inv_wear_suit()
- return 1
- return 0
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return BLOCK_NONE
-/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(!isinhands && current_charges)
. += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01)
@@ -498,7 +524,7 @@
var/static/curselimit = 0
/obj/item/shuttle_curse/attack_self(mob/living/user)
- if(!iscultist(user))
+ if(!iscultist(user, TRUE))
user.dropItemToGround(src, TRUE)
user.DefaultCombatKnockdown(100)
to_chat(user, "A powerful force shoves you away from [src]! ")
@@ -725,19 +751,19 @@
playsound(T, 'sound/effects/glassbr3.ogg', 100)
qdel(src)
-/obj/item/twohanded/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/twohanded/cult_spear/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(wielded)
final_block_chance *= 2
if(prob(final_block_chance))
- if(attack_type == PROJECTILE_ATTACK)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
owner.visible_message("[owner] deflects [attack_text] with [src]! ")
playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, 1)
- return TRUE
+ return BLOCK_SUCCESS | BLOCK_SHOULD_REDIRECT | BLOCK_REDIRECTED | BLOCK_PHYSICAL_EXTERNAL
else
playsound(src, 'sound/weapons/parry.ogg', 100, 1)
owner.visible_message("[owner] parries [attack_text] with [src]! ")
- return TRUE
- return FALSE
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return BLOCK_NONE
/datum/action/innate/cult/spear
name = "Bloody Bond"
@@ -936,10 +962,18 @@
hitsound = 'sound/weapons/smash.ogg'
var/illusions = 2
-/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/shield/mirror/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ block_return[BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE] = max(block_return[BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE] || null, final_block_chance)
+ return ..()
+
+/obj/item/shield/mirror/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(iscultist(owner))
- if(istype(hitby, /obj/item/projectile))
- var/obj/item/projectile/P = hitby
+ if(istype(object, /obj/item/projectile) && (attack_type == ATTACK_TYPE_PROJECTILE))
+ if(is_energy_reflectable_projectile(object))
+ if(prob(final_block_chance))
+ return BLOCK_SUCCESS | BLOCK_SHOULD_REDIRECT | BLOCK_PHYSICAL_EXTERNAL | BLOCK_REDIRECTED
+ return BLOCK_NONE //To avoid reflection chance double-dipping with block chance
+ var/obj/item/projectile/P = object
if(P.damage >= 30)
var/turf/T = get_turf(owner)
T.visible_message("The sheer force from [P] shatters the mirror shield! ")
@@ -947,11 +981,9 @@
playsound(T, 'sound/effects/glassbr3.ogg', 100)
owner.DefaultCombatKnockdown(25)
qdel(src)
- return FALSE
- if(P.is_reflectable)
- return FALSE //To avoid reflection chance double-dipping with block chance
+ return BLOCK_NONE
. = ..()
- if(.)
+ if(. & BLOCK_SUCCESS)
playsound(src, 'sound/weapons/parry.ogg', 100, 1)
if(illusions > 0)
illusions--
@@ -966,7 +998,7 @@
E.Copy_Parent(owner, 70, 10)
E.GiveTarget(owner)
E.Goto(owner, owner.movement_delay(), E.minimum_distance)
- return TRUE
+ return
else
if(prob(50))
var/mob/living/simple_animal/hostile/illusion/H = new(owner.loc)
@@ -975,7 +1007,7 @@
H.GiveTarget(owner)
H.move_to_delay = owner.movement_delay()
to_chat(owner, "[src] betrays you! ")
- return FALSE
+ return BLOCK_NONE
/obj/item/shield/mirror/proc/readd()
illusions++
@@ -983,11 +1015,6 @@
var/mob/living/holder = loc
to_chat(holder, "The shield's illusions are back at full strength! ")
-/obj/item/shield/mirror/IsReflect()
- if(prob(block_chance))
- return TRUE
- return FALSE
-
/obj/item/shield/mirror/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
var/turf/T = get_turf(hit_atom)
var/datum/thrownthing/D = throwingdatum
diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm
index e92f562db3..40804ccc24 100644
--- a/code/modules/antagonists/cult/ritual.dm
+++ b/code/modules/antagonists/cult/ritual.dm
@@ -59,6 +59,9 @@ This file contains the cult dagger and rune list code
rune_to_scribe = GLOB.rune_types[entered_rune_name]
if(!rune_to_scribe)
return
+ if(!iscultist(user, initial(rune_to_scribe.requires_full_power)))
+ to_chat(user, "You aren't strongly connected enough to Nar'sie to do draw this. ")
+ return
if(initial(rune_to_scribe.req_keyword))
chosen_keyword = stripped_input(user, "Enter a keyword for the new rune.", "Words of Power")
if(!chosen_keyword)
@@ -84,8 +87,8 @@ This file contains the cult dagger and rune list code
to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning! ")
return
if(ispath(rune_to_scribe, /obj/effect/rune/narsie))
- var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives
- var/datum/objective/sacrifice/sac_objective = locate() in user_antag.cult_team.objectives
+ var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team?.objectives
+ var/datum/objective/sacrifice/sac_objective = locate() in user_antag.cult_team?.objectives
if(!summon_objective)
to_chat(user, "Nar'Sie does not wish to be summoned! ")
return
diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm
index 60a8527860..b164246060 100644
--- a/code/modules/antagonists/cult/rune_spawn_action.dm
+++ b/code/modules/antagonists/cult/rune_spawn_action.dm
@@ -14,7 +14,7 @@
var/obj/effect/temp_visual/cult/rune_spawn/rune_center_type
var/rune_color
-/datum/action/innate/cult/create_rune/IsAvailable()
+/datum/action/innate/cult/create_rune/IsAvailable(silent = FALSE)
if(!rune_type || cooldown > world.time)
return FALSE
return ..()
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index ec763a66d7..b0538d6521 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -32,6 +32,7 @@ Runes can either be invoked by one's self or with many different cultists. Each
var/scribe_delay = 40 //how long the rune takes to create
var/scribe_damage = 0.1 //how much damage you take doing it
+ var/requires_full_power = FALSE //requires full power to draw or invoke
var/invoke_damage = 0 //how much damage invokers take when invoking it
var/construct_invoke = TRUE //if constructs can invoke it
@@ -185,6 +186,7 @@ structure_check() searches for nearby cultist structures required for the invoca
color = RUNE_COLOR_OFFER
req_cultists = 1
rune_in_use = FALSE
+ requires_full_power = TRUE
/obj/effect/rune/convert/do_invoke_glow()
return
@@ -458,6 +460,7 @@ structure_check() searches for nearby cultist structures required for the invoca
pixel_y = -32
scribe_delay = 500 //how long the rune takes to create
scribe_damage = 40.1 //how much damage you take doing it
+ requires_full_power = TRUE
var/used = FALSE
/obj/effect/rune/narsie/Initialize(mapload, set_keyword)
@@ -482,6 +485,9 @@ structure_check() searches for nearby cultist structures required for the invoca
fail_invoke()
return
var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
+ if(!user_antag.cult_team)
+ to_chat(user, "You can't seem to make the arcane links to your fellows that you'd need to use this. ")
+ return
var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives
var/area/place = get_area(src)
if(!(place in summon_objective.summon_spots))
@@ -812,6 +818,7 @@ structure_check() searches for nearby cultist structures required for the invoca
invoke_damage = 10
construct_invoke = FALSE
color = RUNE_COLOR_DARKRED
+ requires_full_power = TRUE
var/mob/living/affecting = null
var/ghost_limit = 3
var/ghosts = 0
@@ -942,6 +949,7 @@ structure_check() searches for nearby cultist structures required for the invoca
color = RUNE_COLOR_DARKRED
req_cultists = 3
scribe_delay = 100
+ requires_full_power = TRUE
/obj/effect/rune/apocalypse/invoke(var/list/invokers)
if(rune_in_use)
@@ -950,6 +958,9 @@ structure_check() searches for nearby cultist structures required for the invoca
var/area/place = get_area(src)
var/mob/living/user = invokers[1]
var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
+ if(!user_antag.cult_team)
+ to_chat(user, "You can't seem to make the arcane links to your fellows that you'd need to use this. ")
+ return
var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives
if(summon_objective.summon_spots.len <= 1)
to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning! ")
diff --git a/code/modules/antagonists/devil/true_devil/inventory.dm b/code/modules/antagonists/devil/true_devil/inventory.dm
index 778c421616..579dfb4fb1 100644
--- a/code/modules/antagonists/devil/true_devil/inventory.dm
+++ b/code/modules/antagonists/devil/true_devil/inventory.dm
@@ -12,12 +12,7 @@
var/obj/item/r_hand = get_item_for_held_index(2)
if(r_hand)
-
- var/r_state = r_hand.item_state
- if(!r_state)
- r_state = r_hand.icon_state
-
- var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(state = r_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
+ var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(default_layer = DEVIL_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
hands_overlays += r_hand_overlay
@@ -28,12 +23,7 @@
client.screen |= r_hand
if(l_hand)
-
- var/l_state = l_hand.item_state
- if(!l_state)
- l_state = l_hand.icon_state
-
- var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(state = l_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
+ var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
hands_overlays += l_hand_overlay
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 2c91e18bd8..b4f896fa08 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -414,11 +414,11 @@
if(safety)
to_chat(usr, "The safety is still on. ")
return
+ if(!timing && nuclear_cooldown > world.time)
+ to_chat(usr, "[src]'s timer protocols are currently on cooldown, please stand by. ")
+ return
timing = !timing
if(timing)
- if(nuclear_cooldown > world.time)
- to_chat(usr, "[src]'s timer protocols are currently on cooldown, please stand by. ")
- return
previous_level = get_security_level()
detonation_timer = world.time + (timer_set * 10)
for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list)
diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm
index a99e3900b0..2d84ed7c22 100644
--- a/code/modules/antagonists/revenant/revenant_abilities.dm
+++ b/code/modules/antagonists/revenant/revenant_abilities.dm
@@ -117,7 +117,7 @@
tinfoil_check = FALSE
/obj/effect/proc_holder/spell/aoe_turf/revenant
- clothes_req = 0
+ clothes_req = NONE
action_icon = 'icons/mob/actions/actions_revenant.dmi'
action_background_icon_state = "bg_revenant"
panel = "Revenant Abilities (Locked)"
@@ -135,7 +135,7 @@
else
name = "[initial(name)] ([cast_amount]E)"
-/obj/effect/proc_holder/spell/aoe_turf/revenant/can_cast(mob/living/simple_animal/revenant/user = usr)
+/obj/effect/proc_holder/spell/aoe_turf/revenant/can_cast(mob/living/simple_animal/revenant/user = usr, skipcharge = FALSE, silent = FALSE)
if(charge_counter < charge_max)
return FALSE
if(!istype(user)) //Badmins, no. Badmins, don't do it.
diff --git a/code/modules/antagonists/santa/santa.dm b/code/modules/antagonists/santa/santa.dm
index bf42188cf6..f58a21ba42 100644
--- a/code/modules/antagonists/santa/santa.dm
+++ b/code/modules/antagonists/santa/santa.dm
@@ -18,7 +18,7 @@
owner.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/presents)
var/obj/effect/proc_holder/spell/targeted/area_teleport/teleport/telespell = new
- telespell.clothes_req = 0 //santa robes aren't actually magical.
+ telespell.clothes_req = NONE //santa robes aren't actually magical.
owner.AddSpell(telespell) //does the station have chimneys? WHO KNOWS!
/datum/antagonist/santa/proc/give_objective()
diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm
index 724c4e6f76..c1f493ac52 100644
--- a/code/modules/antagonists/swarmer/swarmer.dm
+++ b/code/modules/antagonists/swarmer/swarmer.dm
@@ -179,8 +179,8 @@
/obj/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
if(resistance_flags & INDESTRUCTIBLE)
return FALSE
- for(var/mob/living/L in contents)
- if(!issilicon(L) && !isbrain(L))
+ for(var/mob/living/L in GetAllContents())
+ if(!ispAI(L) && !isbrain(L))
to_chat(S, "An organism has been detected inside this object. Aborting. ")
return FALSE
return ..()
@@ -416,6 +416,57 @@
to_chat(S, "Destroying this object would cause a catastrophic chain reaction. Aborting. ")
return FALSE
+/obj/machinery/ore_silo/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "Destroying this object, however tempting it's, will disrupt the research development that may serve for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/machinery/rnd/server/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "Destroying this object, will disrupt the research development that may serve for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/machinery/pool/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) //pool's closed, but not.
+ to_chat(S, "The pool must not be closed, it will provide healthy fun for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/structure/pool/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "The pool must not be closed, it will provide healthy fun for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/structure/holosign/barrier/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ var/static/list/lazy_typecache = typecacheof(list(/obj/structure/holosign/barrier/engineering, /obj/structure/holosign/barrier/firelock, /obj/structure/holosign/barrier/atmos, /obj/structure/holosign/barrier/combifan))
+ if(lazy_typecache[type])
+ to_chat(S, "Destroying this holographic barrier may not benefit us. Aborting. ")
+ return FALSE
+ return ..()
+
+/obj/machinery/dominator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "This advanced piece of technology may be of use for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/machinery/computer/bsa_control/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "This advanced piece of technology may be of use for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/machinery/bsa/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "This advanced piece of technology may be of use for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/machinery/dna_vault/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "This advanced piece of technology may be of use for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/structure/filler/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "This advanced piece of technology may be of use for our masters in the future. Aborting. ")
+ return FALSE
+
+/obj/machinery/computer/sat_control/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "Destroying this object will lower the station shielding against space debris. Aborting. ")
+ return FALSE
+
+/obj/machinery/satellite/meteor_shield/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ to_chat(S, "Destroying this object will lower the station shielding against space debris. Aborting. ")
+ return FALSE
+
////END CTRL CLICK FOR SWARMERS////
/mob/living/simple_animal/hostile/swarmer/proc/Fabricate(atom/fabrication_object,fabrication_cost = 0)
@@ -429,6 +480,14 @@
return new fabrication_object(loc)
/mob/living/simple_animal/hostile/swarmer/proc/Integrate(atom/movable/target)
+ if(isobj(target))
+ var/obj/O = target
+ if(O.resistance_flags & INDESTRUCTIBLE)
+ return FALSE
+ for(var/mob/living/L in GetAllContents())
+ if(!ispAI(L) && !isbrain(L))
+ to_chat(src, "An organism has been detected inside this object. Aborting. ")
+ return FALSE
var/resource_gain = target.IntegrateAmount()
if(resources + resource_gain > max_resources)
to_chat(src, "We cannot hold more materials! ")
diff --git a/code/modules/antagonists/swarmer/swarmer_event.dm b/code/modules/antagonists/swarmer/swarmer_event.dm
index 6ef35fdbaa..c626799a53 100644
--- a/code/modules/antagonists/swarmer/swarmer_event.dm
+++ b/code/modules/antagonists/swarmer/swarmer_event.dm
@@ -1,10 +1,10 @@
/datum/round_event_control/spawn_swarmer
name = "Spawn Swarmer Shell"
typepath = /datum/round_event/spawn_swarmer
- weight = 0
- max_occurrences = 0
+ weight = 7
+ max_occurrences = 1 //Only once okay fam
earliest_start = 30 MINUTES
- min_players = 15
+ min_players = 35
gamemode_blacklist = list("dynamic")
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index 338d135b4c..f7dc7ad6d1 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -38,8 +38,8 @@
weights[C] = weight
var/choice = pickweightAllowZero(weights)
if(!choice)
- choice = GLOB.traitor_classes[TRAITOR_HUMAN]
- set_traitor_kind(pickweightAllowZero(weights))
+ choice = GLOB.traitor_classes[TRAITOR_HUMAN] // it's an "easter egg"
+ set_traitor_kind(choice)
traitor_kind.weight *= 0.8 // less likely this round
SSticker.mode.traitors += owner
owner.special_role = special_role
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index e6ca95472e..6616eea006 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
else
owner_AI = owner
-/datum/action/innate/ai/IsAvailable()
+/datum/action/innate/ai/IsAvailable(silent = FALSE)
. = ..()
if(owner_AI && owner_AI.malf_cooldown > world.time)
return FALSE
diff --git a/code/modules/antagonists/traitor/syndicate_contract.dm b/code/modules/antagonists/traitor/syndicate_contract.dm
index d62792042f..daa9127591 100644
--- a/code/modules/antagonists/traitor/syndicate_contract.dm
+++ b/code/modules/antagonists/traitor/syndicate_contract.dm
@@ -89,7 +89,7 @@
/datum/syndicate_contract/proc/handleVictimExperience(var/mob/living/M) // They're off to holding - handle the return timer and give some text about what's going on.
addtimer(CALLBACK(src, .proc/returnVictim, M), 4 MINUTES) // Ship 'em back - dead or alive... 4 minutes wait.
if(M.stat != DEAD) //Even if they weren't the target, we're still treating them the same.
- M.reagents.add_reagent(/datum/reagent/medicine/omnizine, 20) // Heal them up - gets them out of crit/soft crit.
+ M.reagents.add_reagent(/datum/reagent/medicine/regen_jelly, 20) // Heal them up - gets them out of crit/soft crit. -- now 100% toxinlover friendly!!
M.flash_act()
M.confused += 10
M.blur_eyes(5)
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm
index 0f43dfaf3a..d7f1046cd7 100644
--- a/code/modules/antagonists/wizard/equipment/soulstone.dm
+++ b/code/modules/antagonists/wizard/equipment/soulstone.dm
@@ -31,12 +31,12 @@
/obj/item/soulstone/pickup(mob/living/user)
..()
- if(!iscultist(user) && !iswizard(user) && !usability)
+ if(!iscultist(user, TRUE) && !iswizard(user) && !usability)
to_chat(user, "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly. ")
/obj/item/soulstone/examine(mob/user)
. = ..()
- if(usability || iscultist(user) || iswizard(user) || isobserver(user))
+ if(usability || iscultist(user, TRUE) || iswizard(user) || isobserver(user))
if (old_shard)
. += "A soulstone, used to capture a soul, either from dead humans or from freed shades. "
else
@@ -53,7 +53,7 @@
//////////////////////////////Capturing////////////////////////////////////////////////////////
/obj/item/soulstone/attack(mob/living/carbon/human/M, mob/living/user)
- if(!iscultist(user) && !iswizard(user) && !usability)
+ if(!iscultist(user, TRUE) && !iswizard(user) && !usability)
user.Unconscious(100)
to_chat(user, "Your body is wracked with debilitating pain! ")
return
@@ -74,7 +74,7 @@
/obj/item/soulstone/attack_self(mob/living/user)
if(!in_range(src, user))
return
- if(!iscultist(user) && !iswizard(user) && !usability)
+ if(!iscultist(user, TRUE) && !iswizard(user) && !usability)
user.Unconscious(100)
to_chat(user, "Your body is wracked with debilitating pain! ")
return
@@ -103,7 +103,7 @@
/obj/structure/constructshell/examine(mob/user)
. = ..()
- if(iscultist(user) || iswizard(user) || user.stat == DEAD)
+ if(iscultist(user, TRUE) || iswizard(user) || user.stat == DEAD)
. += "A construct shell, used to house bound souls from a soulstone. "
. += "Placing a soulstone with a soul into this shell allows you to produce your choice of the following: "
. += "An Artificer , which can produce more shells and soulstones , as well as fortifications. "
@@ -113,7 +113,7 @@
/obj/structure/constructshell/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/soulstone))
var/obj/item/soulstone/SS = O
- if(!iscultist(user) && !iswizard(user) && !SS.usability)
+ if(!iscultist(user, TRUE) && !iswizard(user) && !SS.usability)
to_chat(user, "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly. ")
user.Dizzy(30)
return
@@ -145,7 +145,7 @@
if("VICTIM")
var/mob/living/carbon/human/T = target
var/datum/antagonist/cult/C = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
- if(C && C.cult_team.is_sacrifice_target(T.mind))
+ if(C && C.cult_team?.is_sacrifice_target(T.mind))
if(iscultist(user))
to_chat(user, "\"This soul is mine. SACRIFICE THEM!\" ")
else
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index 494a5208e7..2bcda1d400 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -104,7 +104,7 @@
dat += " Cooldown:[S.charge_max/10]"
dat += " Cost:[cost] "
dat += "[S.desc][desc] "
- dat += "[S.clothes_req?"Needs wizard garb":"Can be cast without wizard garb"] "
+ dat += "[S.clothes_req & SPELL_WIZARD_GARB ? "Needs wizard garb" : "Can be cast without wizard garb"] "
return dat
/datum/spellbook_entry/fireball
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index 13ea317b9b..0fbc5cf71c 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -312,7 +312,7 @@
if(holder)
holder.update_icon()
-/obj/item/assembly/flash/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/assembly/flash/shield/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
activate()
return ..()
diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm
index 19f7bff965..5c34ece723 100644
--- a/code/modules/atmospherics/gasmixtures/gas_types.dm
+++ b/code/modules/atmospherics/gasmixtures/gas_types.dm
@@ -179,7 +179,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
/datum/gas/miasma
id = "miasma"
- specific_heat = 0.00001
+ specific_heat = 20
fusion_power = 50
name = "Miasma"
gas_overlay = "miasma"
diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm
index a79beca4ec..63a03b1d40 100644
--- a/code/modules/atmospherics/machinery/components/components_base.dm
+++ b/code/modules/atmospherics/machinery/components/components_base.dm
@@ -84,7 +84,6 @@
/obj/machinery/atmospherics/components/proc/nullifyPipenet(datum/pipeline/reference)
if(!reference)
CRASH("nullifyPipenet(null) called by [type] on [COORD(src)]")
- return
var/i = parents.Find(reference)
reference.other_airs -= airs[i]
reference.other_atmosmch -= src
@@ -168,4 +167,4 @@
/obj/machinery/atmospherics/components/analyzer_act(mob/living/user, obj/item/I)
- atmosanalyzer_scan(airs, user, src)
\ No newline at end of file
+ atmosanalyzer_scan(airs, user, src)
diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm
index 899b621262..565bbb7b3c 100644
--- a/code/modules/atmospherics/machinery/datum_pipeline.dm
+++ b/code/modules/atmospherics/machinery/datum_pipeline.dm
@@ -131,7 +131,6 @@
var/datum/pipeline/P = returnPipenet(A)
if(!P)
CRASH("null.addMember() called by [type] on [COORD(src)]")
- return
P.addMember(A, src)
@@ -208,7 +207,7 @@
/datum/pipeline/proc/return_air()
. = other_airs + air
if(null in .)
- stack_trace("[src] has one or more null gas mixtures, which may cause bugs. Null mixtures will not be considered in reconcile_air().")
+ stack_trace("[src]([REF(src)]) has one or more null gas mixtures, which may cause bugs. Null mixtures will not be considered in reconcile_air().")
return removeNullsFromList(.)
/datum/pipeline/proc/reconcile_air()
diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm
index 39bb737f1b..f714a86f22 100644
--- a/code/modules/awaymissions/mission_code/Academy.dm
+++ b/code/modules/awaymissions/mission_code/Academy.dm
@@ -309,7 +309,7 @@
name = "Summon Servant"
desc = "This spell can be used to call your servant, whenever you need it."
charge_max = 100
- clothes_req = 0
+ clothes_req = NONE
invocation = "JE VES"
invocation_type = "whisper"
range = -1
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index c45461317d..3418f78dbd 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -488,7 +488,6 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
if (isnull(A)) //If theres no supplypod bay mapped into centcom, throw an error
to_chat(holder.mob, "No /area/centcom/supplypod/loading/one (or /two or /three or /four) in the world! You can make one yourself (then refresh) for now, but yell at a mapper to fix this, today!")
CRASH("No /area/centcom/supplypod/loading/one (or /two or /three or /four) has been mapped into the centcom z-level!")
- return
orderedArea = list()
if (!isemptylist(A.contents)) //Go through the area passed into the proc, and figure out the top left and bottom right corners by calculating max and min values
var/startX = A.contents[1].x //Create the four values (we do it off a.contents[1] so they have some sort of arbitrary initial value. They should be overwritten in a few moments)
diff --git a/code/modules/cargo/exports/gear.dm b/code/modules/cargo/exports/gear.dm
index 10b3d4f707..4db7c68efd 100644
--- a/code/modules/cargo/exports/gear.dm
+++ b/code/modules/cargo/exports/gear.dm
@@ -309,7 +309,7 @@
/datum/export/gear/combatgloves
cost = 80
unit_name = "combat gloves"
- export_types = list(/obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/rapid, /obj/item/clothing/gloves/krav_maga)
+ export_types = list(/obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/fingerless/pugilist/rapid, /obj/item/clothing/gloves/krav_maga)
include_subtypes = TRUE
/datum/export/gear/bonegloves
diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm
index e4efaf0810..660d79cae4 100644
--- a/code/modules/cargo/exports/parts.dm
+++ b/code/modules/cargo/exports/parts.dm
@@ -112,7 +112,7 @@
/datum/export/glasswork_lens
cost = 1800
unit_name = "small glass lens"
- export_types = list(/obj/item/lens)
+ export_types = list(/obj/item/glasswork/glass_base/lens)
/datum/export/glasswork_spouty
cost = 1200
@@ -131,3 +131,27 @@
unit_name = "large flask"
export_types = list(/obj/item/reagent_containers/glass/beaker/flask/large)
include_subtypes = FALSE
+
+/datum/export/glasswork_teaplate
+ cost = 1200
+ unit_name = "tea gear"
+ export_types = list(/obj/item/tea_plate)
+ include_subtypes = FALSE
+
+/datum/export/glasswork_teacup
+ cost = 1800
+ unit_name = "tea gear"
+ export_types = list(/obj/item/tea_cup)
+ include_subtypes = FALSE
+
+/datum/export/glasswork_laserpointer
+ cost = 2600
+ unit_name = "hand made laserpointer"
+ export_types = list(/obj/item/laser_pointer/blue/handmade)
+ include_subtypes = FALSE
+
+/datum/export/glasswork_glasses
+ cost = 5000
+ unit_name = "hand made glasses"
+ export_types = list(/obj/item/glasswork/glasses)
+ include_subtypes = FALSE
diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm
index 836dc044b7..2342603bde 100644
--- a/code/modules/cargo/exports/weapons.dm
+++ b/code/modules/cargo/exports/weapons.dm
@@ -287,7 +287,7 @@
/datum/export/weapon/gloves
cost = 90
unit_name = "star struck gloves"
- export_types = list(/obj/item/clothing/gloves/rapid)
+ export_types = list(/obj/item/clothing/gloves/fingerless/pugilist/rapid)
/datum/export/weapon/l6
cost = 500
diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm
index ef15ab041d..9b2b42da08 100644
--- a/code/modules/cargo/packs/emergency.dm
+++ b/code/modules/cargo/packs/emergency.dm
@@ -287,7 +287,7 @@
/datum/supply_pack/emergency/specialops
name = "Special Ops Supplies"
- desc = "(*!&@#TOO CHEAP FOR THAT NULL_ENTRY, HUH OPERATIVE? WELL, THIS LITTLE ORDER CAN STILL HELP YOU OUT IN A PINCH. CONTAINS A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, AN INCENDIARY GRENADE, AND A \"SLEEPY PEN\" FULL OF NICE TOXINS!#@*$"
+ desc = "(*!&@#NEED SOMETHING TO DEAL WITH THE GREYTIDE, HUH OPERATIVE? WELL, THIS LITTLE ORDER CAN HELP YOU OUT IN A PINCH. CONTAINS A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, AN INCENDIARY GRENADE, AND A \"SLEEPY PEN\" FULL OF NICE TOXINS!#@*$"
hidden = TRUE
cost = 2200
contains = list(/obj/item/storage/box/emps,
diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm
index 273acb10e2..14828729cd 100644
--- a/code/modules/cargo/packs/misc.dm
+++ b/code/modules/cargo/packs/misc.dm
@@ -152,7 +152,7 @@
/obj/item/instrument/trombone,
/obj/item/instrument/recorder,
/obj/item/instrument/harmonica,
- /obj/structure/piano/unanchored)
+ /obj/structure/musician/piano/unanchored)
crate_type = /obj/structure/closet/crate/wooden
/datum/supply_pack/misc/casinocrate
diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm
index 7bafefcf53..6f62701590 100644
--- a/code/modules/client/asset_cache.dm
+++ b/code/modules/client/asset_cache.dm
@@ -529,7 +529,7 @@ GLOBAL_LIST_EMPTY(asset_datums)
"pill21" = 'icons/UI_Icons/Pills/pill21.png',
"pill22" = 'icons/UI_Icons/Pills/pill22.png',
)
-
+
/datum/asset/simple/IRV
assets = list(
"jquery-ui.custom-core-widgit-mouse-sortable-min.js" = 'html/IRV/jquery-ui.custom-core-widgit-mouse-sortable-min.js',
@@ -704,9 +704,43 @@ GLOBAL_LIST_EMPTY(asset_datums)
Insert(initial(D.id), I)
return ..()
+/datum/asset/spritesheet/vending
+ name = "vending"
+
+/datum/asset/spritesheet/vending/register()
+ for(var/k in GLOB.vending_products)
+ var/atom/item = k
+ if(!ispath(item, /atom))
+ continue
+
+ var/icon_file = initial(item.icon)
+ var/icon_state = initial(item.icon_state)
+ var/icon/I
+
+ var/icon_states_list = icon_states(icon_file)
+ if(icon_state in icon_states_list)
+ I = icon(icon_file, icon_state, SOUTH)
+ var/c = initial(item.color)
+ if(!isnull(c) && c != "#FFFFFF")
+ I.Blend(c, ICON_MULTIPLY)
+ else
+ var/icon_states_string
+ for(var/an_icon_state in icon_states_list)
+ if(!icon_states_string)
+ icon_states_string = "[json_encode(an_icon_state)](\ref[an_icon_state])"
+ else
+ icon_states_string += ", [json_encode(an_icon_state)](\ref[an_icon_state])"
+ stack_trace("[item] does not have a valid icon state, icon=[icon_file], icon_state=[json_encode(icon_state)](\ref[icon_state]), icon_states=[icon_states_string]")
+ I = icon('icons/turf/floors.dmi', "", SOUTH)
+
+ var/imgid = replacetext(replacetext("[item]", "/obj/item/", ""), "/", "-")
+
+ Insert(imgid, I)
+ return ..()
+
/datum/asset/simple/genetics
assets = list(
"dna_discovered.gif" = 'html/dna_discovered.gif',
"dna_undiscovered.gif" = 'html/dna_undiscovered.gif',
"dna_extra.gif" = 'html/dna_extra.gif'
-)
\ No newline at end of file
+)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index feaca1836b..adfcd547bc 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -125,6 +125,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"cock_length" = COCK_SIZE_DEF,
"cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
"cock_color" = "fff",
+ "cock_taur" = FALSE,
"has_balls" = FALSE,
"balls_color" = "fff",
"balls_shape" = DEF_BALLS_SHAPE,
@@ -762,7 +763,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
else
dat += "Penis Color: "
dat += " Change "
- dat += "Penis Shape: [features["cock_shape"]] "
+ var/tauric_shape = FALSE
+ if(features["cock_taur"])
+ var/datum/sprite_accessory/penis/P = GLOB.cock_shapes_list[features["cock_shape"]]
+ if(P.taur_icon && pref_species.mutant_bodyparts["taur"])
+ var/datum/sprite_accessory/taur/T = GLOB.taur_list[features["taur"]]
+ if(T.taur_mode & P.accepted_taurs)
+ tauric_shape = TRUE
+ dat += "Penis Shape: [features["cock_shape"]][tauric_shape ? " (Taur)" : ""] "
dat += "Penis Length: [features["cock_length"]] inch(es) "
dat += "Penis Visibility: [features["cock_visibility"]] "
dat += "Has Testicles: [features["has_balls"] == TRUE ? "Yes" : "No"] "
@@ -1610,7 +1618,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
to_chat(user, "Invalid color. Your color is not bright enough. ")
if("mutant_color2")
- var/new_mutantcolor = input(user, "Choose your character's secondary alien/mutant color:", "Character Preference") as color|null
+ var/new_mutantcolor = input(user, "Choose your character's secondary alien/mutant color:", "Character Preference","#"+features["mcolor2"]) as color|null
if(new_mutantcolor)
var/temp_hsv = RGBtoHSV(new_mutantcolor)
if(new_mutantcolor == "#000000")
@@ -1621,7 +1629,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
to_chat(user, "Invalid color. Your color is not bright enough. ")
if("mutant_color3")
- var/new_mutantcolor = input(user, "Choose your character's tertiary alien/mutant color:", "Character Preference") as color|null
+ var/new_mutantcolor = input(user, "Choose your character's tertiary alien/mutant color:", "Character Preference","#"+features["mcolor3"]) as color|null
if(new_mutantcolor)
var/temp_hsv = RGBtoHSV(new_mutantcolor)
if(new_mutantcolor == "#000000")
@@ -1922,7 +1930,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
//Genital code
if("cock_color")
- var/new_cockcolor = input(user, "Penis color:", "Character Preference") as color|null
+ var/new_cockcolor = input(user, "Penis color:", "Character Preference","#"+features["cock_color"]) as color|null
if(new_cockcolor)
var/temp_hsv = RGBtoHSV(new_cockcolor)
if(new_cockcolor == "#000000")
@@ -1941,8 +1949,19 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("cock_shape")
var/new_shape
- new_shape = input(user, "Penis shape:", "Character Preference") as null|anything in GLOB.cock_shapes_list
+ var/list/hockeys = list()
+ if(pref_species.mutant_bodyparts["taur"])
+ var/datum/sprite_accessory/taur/T = GLOB.taur_list[features["taur"]]
+ for(var/A in GLOB.cock_shapes_list)
+ var/datum/sprite_accessory/penis/P = GLOB.cock_shapes_list[A]
+ if(P.taur_icon && T.taur_mode & P.accepted_taurs)
+ LAZYSET(hockeys, "[A] (Taur)", A)
+ new_shape = input(user, "Penis shape:", "Character Preference") as null|anything in (GLOB.cock_shapes_list + hockeys)
if(new_shape)
+ features["cock_taur"] = FALSE
+ if(hockeys[new_shape])
+ new_shape = hockeys[new_shape]
+ features["cock_taur"] = TRUE
features["cock_shape"] = new_shape
if("cock_visibility")
@@ -1951,7 +1970,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["cock_visibility"] = n_vis
if("balls_color")
- var/new_ballscolor = input(user, "Testicles Color:", "Character Preference") as color|null
+ var/new_ballscolor = input(user, "Testicles Color:", "Character Preference","#"+features["balls_color"]) as color|null
if(new_ballscolor)
var/temp_hsv = RGBtoHSV(new_ballscolor)
if(new_ballscolor == "#000000")
@@ -1978,7 +1997,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["breasts_shape"] = new_shape
if("breasts_color")
- var/new_breasts_color = input(user, "Breast Color:", "Character Preference") as color|null
+ var/new_breasts_color = input(user, "Breast Color:", "Character Preference","#"+features["breasts_color"]) as color|null
if(new_breasts_color)
var/temp_hsv = RGBtoHSV(new_breasts_color)
if(new_breasts_color == "#000000")
@@ -2000,7 +2019,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["vag_shape"] = new_shape
if("vag_color")
- var/new_vagcolor = input(user, "Vagina color:", "Character Preference") as color|null
+ var/new_vagcolor = input(user, "Vagina color:", "Character Preference","#"+features["vag_color"]) as color|null
if(new_vagcolor)
var/temp_hsv = RGBtoHSV(new_vagcolor)
if(new_vagcolor == "#000000")
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 7858bc099b..ca51a27dae 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
-#define SAVEFILE_VERSION_MAX 27
+#define SAVEFILE_VERSION_MAX 28
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -151,6 +151,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(tennis == "Hidden")
features["balls_visibility"] = GEN_VISIBLE_NEVER
+ if(current_version < 28)
+ var/hockey
+ S["feature_cock_shape"] >> hockey
+ var/list/malformed_hockeys = list("Taur, Flared" = "Flared", "Taur, Knotted" = "Knotted", "Taur, Tapered" = "Tapered")
+ if(malformed_hockeys[hockey])
+ features["cock_shape"] = malformed_hockeys[hockey]
+ features["cock_taur"] = TRUE
+
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
if(!ckey)
return
@@ -457,6 +465,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_cock_color"] >> features["cock_color"]
S["feature_cock_length"] >> features["cock_length"]
S["feature_cock_diameter"] >> features["cock_diameter"]
+ S["feature_cock_taur"] >> features["cock_taur"]
S["feature_cock_visibility"] >> features["cock_visibility"]
//balls features
S["feature_has_balls"] >> features["has_balls"]
@@ -673,6 +682,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["feature_cock_shape"], features["cock_shape"])
WRITE_FILE(S["feature_cock_color"], features["cock_color"])
WRITE_FILE(S["feature_cock_length"], features["cock_length"])
+ WRITE_FILE(S["feature_cock_taur"], features["cock_taur"])
WRITE_FILE(S["feature_cock_visibility"], features["cock_visibility"])
WRITE_FILE(S["feature_has_balls"], features["has_balls"])
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index cbd1fcff87..9f1111e5d9 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -219,14 +219,13 @@
if(isitem(target))
var/obj/item/I = target
I.item_state = initial(picked_item.item_state)
- I.item_color = initial(picked_item.item_color)
var/obj/item/clothing/CL = target
var/obj/item/clothing/PCL = new picked_item
if(istype(CL) && istype(PCL))
CL.flags_cover = PCL.flags_cover
CL.flags_inv = PCL.flags_inv
CL.mutantrace_variation = PCL.mutantrace_variation
- CL.alternate_worn_icon = PCL.alternate_worn_icon
+ CL.mob_overlay_icon = PCL.mob_overlay_icon
qdel(PCL)
target.icon = initial(picked_item.icon)
@@ -238,7 +237,6 @@
P.desc = initial(picked_item.desc)
P.icon_state = initial(picked_item.icon_state)
P.item_state = initial(picked_item.item_state)
- P.item_color = initial(picked_item.item_color)
P.overlays_offsets = initial(picked_item.overlays_offsets)
P.set_new_overlays()
P.update_icon()
@@ -269,7 +267,6 @@
name = "black jumpsuit"
icon_state = "black"
item_state = "bl_suit"
- item_color = "black"
desc = "It's a plain jumpsuit. It has a small dial on the wrist."
sensor_mode = SENSOR_OFF //Hey who's this guy on the Syndicate Shuttle??
random_sensor = FALSE
@@ -284,7 +281,6 @@
desc = "A tough jumpsuit woven from alloy threads. It can take on the appearance of other jumpsuits."
icon_state = "engine"
item_state = "engi_suit"
- item_color = "engine"
/obj/item/clothing/under/chameleon/Initialize()
. = ..()
@@ -394,7 +390,6 @@
name = "grey cap"
desc = "It's a baseball hat in a tasteful grey colour."
icon_state = "greysoft"
- item_color = "grey"
resistance_flags = NONE
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
@@ -494,7 +489,6 @@
/obj/item/clothing/shoes/chameleon
name = "black shoes"
icon_state = "black"
- item_color = "black"
desc = "A pair of black shoes."
permeability_coefficient = 0.05
resistance_flags = NONE
@@ -520,7 +514,6 @@
/obj/item/clothing/shoes/chameleon/noslip
name = "black shoes"
icon_state = "black"
- item_color = "black"
desc = "A pair of black shoes."
clothing_flags = NOSLIP
@@ -639,7 +632,6 @@
desc = "A neosilk clip-on tie."
icon = 'icons/obj/clothing/neck.dmi'
icon_state = "blacktie"
- item_color = "blacktie"
resistance_flags = NONE
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 7e2d73190a..d484027ad5 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -3,6 +3,7 @@
resistance_flags = FLAMMABLE
max_integrity = 200
integrity_failure = 0.4
+ block_priority = BLOCK_PRIORITY_CLOTHING
var/damaged_clothes = 0 //similar to machine's BROKEN stat and structure's broken var
var/flash_protect = 0 //What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS
var/tint = 0 //Sets the item's level of visual impairment tint, normally set to the same as flash_protect
@@ -46,25 +47,12 @@
//Add a "exclude" string to do the opposite, making it only only species listed that can't wear it.
//You append this to clothing objects.
- //Polychrome stuff:
- var/hasprimary = FALSE //These vars allow you to choose which overlays a clothing has
- var/hassecondary = FALSE
- var/hastertiary = FALSE
- var/primary_color = "#FFFFFF" //RGB in hexcode
- var/secondary_color = "#FFFFFF"
- var/tertiary_color = "#808080"
-
- //No idea what this is but eh -tori
- var/force_alternate_icon = FALSE
-
/obj/item/clothing/Initialize()
. = ..()
if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE))
actions_types += /datum/action/item_action/toggle_voice_box
if(ispath(pocket_storage_component_path))
LoadComponent(pocket_storage_component_path)
- if(hasprimary | hassecondary | hastertiary) //Checks if polychrome is enabled
- update_icon() //Applies the overlays and default colors onto the clothes on spawn.
/obj/item/clothing/MouseDrop(atom/over_object)
. = ..()
@@ -149,8 +137,6 @@
how_cool_are_your_threads += "Adding or removing items from [src] makes no noise.\n"
how_cool_are_your_threads += ""
. += how_cool_are_your_threads.Join()
- if(hasprimary | hassecondary | hastertiary) //Checks if polychrome is enabled
- . += "Alt-click to recolor it. "
/obj/item/clothing/obj_break(damage_flag)
if(!damaged_clothes)
@@ -189,178 +175,11 @@ BLIND // can't see anything
/proc/generate_female_clothing(index,t_color,icon,type)
var/icon/female_clothing_icon = icon("icon"=icon, "icon_state"=t_color)
- var/icon/female_s = icon("icon"='icons/mob/uniform.dmi', "icon_state"="[(type == FEMALE_UNIFORM_FULL) ? "female_full" : "female_top"]")
+ var/icon/female_s = icon("icon"='icons/mob/clothing/uniform.dmi', "icon_state"="[(type == FEMALE_UNIFORM_FULL) ? "female_full" : "female_top"]")
female_clothing_icon.Blend(female_s, ICON_MULTIPLY)
female_clothing_icon = fcopy_rsc(female_clothing_icon)
GLOB.female_clothing_icons[index] = female_clothing_icon
-/obj/item/clothing/under/verb/toggle()
- set name = "Adjust Suit Sensors"
- set category = "Object"
- set src in usr
- var/mob/M = usr
- if (istype(M, /mob/dead/))
- return
- if (!can_use(M))
- return
- if(src.has_sensor == LOCKED_SENSORS)
- to_chat(usr, "The controls are locked.")
- return 0
- if(src.has_sensor == BROKEN_SENSORS)
- to_chat(usr, "The sensors have shorted out!")
- return 0
- if(src.has_sensor <= NO_SENSORS)
- to_chat(usr, "This suit does not have any sensors.")
- return 0
-
- var/list/modes = list("Off", "Binary vitals", "Exact vitals", "Tracking beacon")
- var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
- if(get_dist(usr, src) > 1)
- to_chat(usr, "You have moved too far away! ")
- return
- sensor_mode = modes.Find(switchMode) - 1
-
- if (src.loc == usr)
- switch(sensor_mode)
- if(0)
- to_chat(usr, "You disable your suit's remote sensing equipment. ")
- if(1)
- to_chat(usr, "Your suit will now only report whether you are alive or dead. ")
- if(2)
- to_chat(usr, "Your suit will now only report your exact vital lifesigns. ")
- if(3)
- to_chat(usr, "Your suit will now report your exact vital lifesigns as well as your coordinate position. ")
-
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- if(H.w_uniform == src)
- H.update_suit_sensors()
-
-
-/obj/item/clothing/under/CtrlClick(mob/user)
- . = ..()
-
- if (!(item_flags & IN_INVENTORY))
- return
-
- if(!isliving(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
- return
-
- if(has_sensor == LOCKED_SENSORS)
- to_chat(user, "The controls are locked.")
- return
- if(has_sensor == BROKEN_SENSORS)
- to_chat(user, "The sensors have shorted out!")
- return
- if(has_sensor <= NO_SENSORS)
- to_chat(user, "This suit does not have any sensors.")
- return
-
- sensor_mode = SENSOR_COORDS
-
- to_chat(user, "Your suit will now report your exact vital lifesigns as well as your coordinate position. ")
-
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if(H.w_uniform == src)
- H.update_suit_sensors()
-
-/obj/item/clothing/under/AltClick(mob/user)
- . = ..()
- if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
- return
- if(attached_accessory)
- remove_accessory(user)
- else
- rolldown()
- // Polychrome stuff:
- if(hasprimary | hassecondary | hastertiary)
- var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays
- switch(choice) //Lets the list's options actually lead to something
- if("Primary Color")
- var/primary_color_input = input(usr,"","Choose Primary Color",primary_color) as color|null //color input menu, the "|null" adds a cancel button to it.
- if(primary_color_input) //Checks if the color selected is NULL, rejects it if it is NULL.
- primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) //formats the selected color properly
- update_icon() //updates the item icon
- user.regenerate_icons() //updates the worn icon. Probably a bad idea, but it works.
- if("Secondary Color")
- var/secondary_color_input = input(usr,"","Choose Secondary Color",secondary_color) as color|null
- if(secondary_color_input)
- secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1)
- update_icon()
- user.regenerate_icons()
- if("Tertiary Color")
- var/tertiary_color_input = input(usr,"","Choose Tertiary Color",tertiary_color) as color|null
- if(tertiary_color_input)
- tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1)
- update_icon()
- user.regenerate_icons()
- return TRUE
-
-/obj/item/clothing/neck/AltClick(mob/user)
- . = ..()
- if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
- return
- // Polychrome stuff:
- if(hasprimary | hassecondary | hastertiary)
- var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays
- switch(choice) //Lets the list's options actually lead to something
- if("Primary Color")
- var/primary_color_input = input(usr,"","Choose Primary Color",primary_color) as color|null //color input menu, the "|null" adds a cancel button to it.
- if(primary_color_input) //Checks if the color selected is NULL, rejects it if it is NULL.
- primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) //formats the selected color properly
- update_icon() //updates the item icon
- user.regenerate_icons() //updates the worn icon. Probably a bad idea, but it works.
- if("Secondary Color")
- var/secondary_color_input = input(usr,"","Choose Secondary Color",secondary_color) as color|null
- if(secondary_color_input)
- secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1)
- update_icon()
- user.regenerate_icons()
- if("Tertiary Color")
- var/tertiary_color_input = input(usr,"","Choose Tertiary Color",tertiary_color) as color|null
- if(tertiary_color_input)
- tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1)
- update_icon()
- user.regenerate_icons()
- return TRUE
-
-/obj/item/clothing/under/verb/jumpsuit_adjust()
- set name = "Adjust Jumpsuit Style"
- set category = null
- set src in usr
- rolldown()
-
-/obj/item/clothing/under/proc/rolldown()
- if(!can_use(usr))
- return
- if(!can_adjust)
- to_chat(usr, "You cannot wear this suit any differently! ")
- return
- if(toggle_jumpsuit_adjust())
- to_chat(usr, "You adjust the suit to wear it more casually. ")
- else
- to_chat(usr, "You adjust the suit back to normal. ")
- if(ishuman(usr))
- var/mob/living/carbon/human/H = usr
- H.update_inv_w_uniform()
- H.update_body()
-
-/obj/item/clothing/under/proc/toggle_jumpsuit_adjust()
- adjusted = !adjusted
-
- if(adjusted)
- if(fitted != FEMALE_UNIFORM_TOP)
- fitted = NO_FEMALE_UNIFORM
- if(!alt_covers_chest) // for the special snowflake suits that expose the chest when adjusted
- body_parts_covered &= ~CHEST
- else
- fitted = initial(fitted)
- if(!alt_covers_chest)
- body_parts_covered |= CHEST
-
- return adjusted
-
/obj/item/clothing/proc/weldingvisortoggle(mob/user) //proc to toggle welding visors on helmets, masks, goggles, etc.
if(!can_use(user))
return FALSE
@@ -440,15 +259,3 @@ BLIND // can't see anything
return FALSE
return TRUE
-
-/obj/item/clothing/update_overlays() // Polychrome stuff
- . = ..()
- if(hasprimary) //Checks if the overlay is enabled
- var/mutable_appearance/primary_overlay = mutable_appearance(icon, "[item_color]-primary", color = primary_color) //Automagically picks overlays
- . += primary_overlay //Applies the coloured overlay onto the item sprite. but NOT the mob sprite.
- if(hassecondary)
- var/mutable_appearance/secondary_overlay = mutable_appearance(icon, "[item_color]-secondary", color = secondary_color)
- . += secondary_overlay
- if(hastertiary)
- var/mutable_appearance/tertiary_overlay = mutable_appearance(icon, "[item_color]-tertiary", color = tertiary_color)
- . += tertiary_overlay
\ No newline at end of file
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 66dcf89a7a..8cbc416b2e 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -132,7 +132,7 @@
name = "prescription night vision goggles"
desc = "NVGs but for those with nearsightedness."
vision_correction = 1
-
+
/obj/item/clothing/glasses/night/syndicate
name = "combat night vision goggles"
desc = "See everything, without fear."
@@ -346,11 +346,11 @@
add_atom_colour("#[user.eye_color]", FIXED_COLOUR_PRIORITY)
colored_before = TRUE
-/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(!isinhands && ishuman(loc) && !colored_before)
var/mob/living/carbon/human/H = loc
- var/mutable_appearance/M = mutable_appearance('icons/mob/eyes.dmi', "blindfoldwhite")
+ var/mutable_appearance/M = mutable_appearance('icons/mob/clothing/eyes.dmi', "blindfoldwhite")
M.appearance_flags |= RESET_COLOR
M.color = "#[H.eye_color]"
. += M
diff --git a/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm
index 1c9afcfd6f..92eaaef35b 100644
--- a/code/modules/clothing/glasses/phantomthief.dm
+++ b/code/modules/clothing/glasses/phantomthief.dm
@@ -1,7 +1,7 @@
/obj/item/clothing/glasses/phantomthief
name = "suspicious paper mask"
desc = "A cheap, Syndicate-branded paper face mask. They'll never see it coming."
- alternate_worn_icon = 'icons/mob/mask.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/mask.dmi'
icon = 'icons/obj/clothing/masks.dmi'
icon_state = "s-ninja"
item_state = "s-ninja"
diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm
index 0729317eac..ddf5e4b584 100644
--- a/code/modules/clothing/gloves/_gloves.dm
+++ b/code/modules/clothing/gloves/_gloves.dm
@@ -26,8 +26,8 @@
user.visible_message("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed! ")
return OXYLOSS
-/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(!isinhands)
if(damaged_clothes)
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves")
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index cf3541fd89..77f06a8a74 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -1,3 +1,6 @@
+/obj/item/clothing/gloves/color
+ dying_key = DYE_REGISTRY_GLOVES
+
/obj/item/clothing/gloves/color/yellow
desc = "These gloves will protect the wearer from electric shock."
name = "insulated gloves"
@@ -5,7 +8,6 @@
item_state = "ygloves"
siemens_coefficient = 0
permeability_coefficient = 0.05
- item_color="yellow"
resistance_flags = NONE
var/can_be_cut = 1
@@ -16,7 +18,6 @@
item_state = "ygloves"
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
permeability_coefficient = 0.05
- item_color="yellow"
resistance_flags = NONE
var/can_be_cut = 1
@@ -70,21 +71,14 @@
name = "black gloves"
icon_state = "black"
item_state = "blackgloves"
- item_color="black"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = NONE
- var/can_be_cut = 1
+ var/can_be_cut = TRUE
strip_mod = 1.2
-/obj/item/clothing/gloves/color/black/hos
- item_color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
-
-/obj/item/clothing/gloves/color/black/ce
- item_color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
-
/obj/item/clothing/gloves/color/black/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/wirecutters))
if(can_be_cut && icon_state == initial(icon_state))//only if not dyed
@@ -99,15 +93,12 @@
desc = "A pair of gloves, they don't look special in any way."
icon_state = "orange"
item_state = "orangegloves"
- item_color="orange"
/obj/item/clothing/gloves/color/red
name = "red gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "red"
item_state = "redgloves"
- item_color = "red"
-
/obj/item/clothing/gloves/color/red/insulated
name = "insulated gloves"
@@ -121,68 +112,48 @@
desc = "A pair of gloves, they don't look special in any way."
icon_state = "rainbow"
item_state = "rainbowgloves"
- item_color = "rainbow"
-
-/obj/item/clothing/gloves/color/rainbow/clown
- item_color = "clown"
/obj/item/clothing/gloves/color/blue
name = "blue gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "blue"
item_state = "bluegloves"
- item_color="blue"
/obj/item/clothing/gloves/color/purple
name = "purple gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "purple"
item_state = "purplegloves"
- item_color="purple"
/obj/item/clothing/gloves/color/green
name = "green gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "green"
item_state = "greengloves"
- item_color="green"
/obj/item/clothing/gloves/color/grey
name = "grey gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "gray"
item_state = "graygloves"
- item_color="grey"
-
-/obj/item/clothing/gloves/color/grey/rd
- item_color = "director" //Exists for washing machines. Is not different from gray gloves in any way.
-
-/obj/item/clothing/gloves/color/grey/hop
- item_color = "hop" //Exists for washing machines. Is not different from gray gloves in any way.
/obj/item/clothing/gloves/color/light_brown
name = "light brown gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "lightbrown"
item_state = "lightbrowngloves"
- item_color="light brown"
/obj/item/clothing/gloves/color/brown
name = "brown gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "brown"
item_state = "browngloves"
- item_color="brown"
-
-/obj/item/clothing/gloves/color/brown/cargo
- item_color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
/obj/item/clothing/gloves/color/captain
desc = "Regal blue gloves, with a nice gold trim, a diamond anti-shock coating, and an integrated thermal barrier. Swanky."
name = "captain's gloves"
icon_state = "captain"
item_state = "egloves"
- item_color = "captain"
siemens_coefficient = 0
permeability_coefficient = 0.05
cold_protection = HANDS
@@ -199,7 +170,6 @@
item_state = "lgloves"
siemens_coefficient = 0.3
permeability_coefficient = 0.01
- item_color="mime"
transfer_prints = TRUE
resistance_flags = NONE
var/carrytrait = TRAIT_QUICK_CARRY
@@ -207,18 +177,17 @@
/obj/item/clothing/gloves/color/latex/equipped(mob/user, slot)
..()
if(slot == SLOT_GLOVES)
- ADD_TRAIT(user, carrytrait, CLOTHING_TRAIT)
+ ADD_TRAIT(user, carrytrait, GLOVE_TRAIT)
/obj/item/clothing/gloves/color/latex/dropped(mob/user)
..()
- REMOVE_TRAIT(user, carrytrait, CLOTHING_TRAIT)
+ REMOVE_TRAIT(user, carrytrait, GLOVE_TRAIT)
/obj/item/clothing/gloves/color/latex/nitrile
name = "nitrile gloves"
desc = "Pricy sterile gloves that are stronger than latex. Transfers advanced paramedical knowledge to the wearer via the use of nanochips."
icon_state = "nitrile"
item_state = "nitrilegloves"
- item_color = "cmo"
transfer_prints = FALSE
carrytrait = TRAIT_QUICKER_CARRY
@@ -236,7 +205,3 @@
desc = "These look pretty fancy."
icon_state = "white"
item_state = "wgloves"
- item_color="white"
-
-/obj/item/clothing/gloves/color/white/redcoat
- item_color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way.
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 9f4b89f607..a37dc8b638 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -4,7 +4,6 @@
desc = "Plain black gloves without fingertips for the hard working."
icon_state = "fingerless"
item_state = "fingerless"
- item_color = null //So they don't wash.
transfer_prints = TRUE
strip_delay = 40
equip_delay_other = 20
@@ -12,6 +11,135 @@
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
strip_mod = 0.9
+/obj/item/clothing/gloves/fingerless/pugilist
+ name = "armwraps"
+ desc = "A series of armwraps. Makes you pretty keen to start punching people."
+ icon_state = "armwraps"
+ item_state = "armwraps"
+ body_parts_covered = ARMS
+ cold_protection = ARMS
+ strip_delay = 300 //you can't just yank them off
+ ///Extra damage through the punch.
+ var/enhancement = 0 //it's a +0 to your punches because it isn't magical
+ ///Main trait added by the gloves to the user on wear.
+ var/inherited_trait = TRAIT_NOGUNS //what are you, dishonoroable?
+ ///Secondary trait added by the gloves to the user on wear.
+ var/secondary_trait = TRAIT_FEARLESS //what are you, a coward?
+
+/obj/item/clothing/gloves/fingerless/pugilist/equipped(mob/user, slot)
+ . = ..()
+ if(slot == SLOT_GLOVES)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ ADD_TRAIT(H, TRAIT_PUGILIST, GLOVE_TRAIT)
+ ADD_TRAIT(H, inherited_trait, GLOVE_TRAIT)
+ ADD_TRAIT(H, secondary_trait, GLOVE_TRAIT)
+ H.dna.species.punchdamagehigh += enhancement
+ H.dna.species.punchdamagelow += enhancement
+
+/obj/item/clothing/gloves/fingerless/pugilist/dropped(mob/user)
+
+ REMOVE_TRAIT(user, TRAIT_PUGILIST, GLOVE_TRAIT)
+ REMOVE_TRAIT(user, inherited_trait, GLOVE_TRAIT)
+ REMOVE_TRAIT(user, secondary_trait, GLOVE_TRAIT)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ H.dna.species.punchdamagehigh = initial(H.dna.species.punchdamagehigh)
+ H.dna.species.punchdamagelow = initial(H.dna.species.punchdamagelow)
+ return ..()
+
+/obj/item/clothing/gloves/fingerless/pugilist/chaplain
+ name = "armwraps of unyielding resolve"
+ desc = "A series of armwraps, soaked in holy water. Makes you pretty keen to smite evil magic users."
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ enhancement = 1 //It is not magic that makes you punch harder, but force of will. Trust me.
+ secondary_trait = TRAIT_ANTIMAGIC
+ var/chaplain_spawnable = TRUE
+
+/obj/item/clothing/gloves/fingerless/pugilist/chaplain/Initialize()
+ . = ..()
+ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
+
+/obj/item/clothing/gloves/fingerless/pugilist/magic
+ name = "armwraps of mighty fists"
+ desc = "A series of armwraps. Makes you pretty keen to go adventuring and punch dragons."
+ resistance_flags = FIRE_PROOF | ACID_PROOF //magic items are harder to damage with energy this is a dnd joke okay?
+ enhancement = 1 //They're +1!
+
+/obj/item/clothing/gloves/fingerless/pugilist/hungryghost
+ name = "armwraps of the hungry ghost"
+ desc = "A series of blackened, bloodstained armwraps stitched with strange geometric symbols. Makes you pretty keen to commit horrible acts against the living through bloody carnage."
+ icon_state = "narsiearmwraps"
+ item_state = "narsiearmwraps"
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 35, "rad" = 0, "fire" = 50, "acid" = 50)
+ enhancement = 3
+ secondary_trait = TRAIT_KI_VAMPIRE
+
+/obj/item/clothing/gloves/fingerless/pugilist/brassmountain
+ name = "armbands of the brass mountain"
+ desc = "A series of scolding hot brass armbands. Makes you pretty keen to bring the light to the unenlightened through unmitigated violence."
+ icon_state = "ratvararmwraps"
+ item_state = "ratvararmwraps"
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ armor = list("melee" = 10, "bullet" = 0, "laser" = -10, "energy" = 0, "bomb" = 0, "bio" = 35, "rad" = 0, "fire" = 50, "acid" = 50)
+ enhancement = 4 //The artifice of Ratvar is unmatched except when it is.
+ secondary_trait = TRAIT_STRONG_GRABBER
+
+/obj/item/clothing/gloves/fingerless/pugilist/rapid
+ name = "Bands of the North Star"
+ desc = "The armbands of a deadly martial artist. Makes you pretty keen to put an end to evil in an extremely violent manner."
+ icon_state = "rapid"
+ item_state = "rapid"
+ enhancement = 10 //omae wa mou shindeiru
+ var/warcry = "AT"
+ secondary_trait = TRAIT_NOSOFTCRIT //basically extra health
+
+/obj/item/clothing/gloves/fingerless/pugilist/rapid/Initialize()
+ . = ..()
+ ADD_TRAIT(src, TRAIT_NODROP, GLOVE_TRAIT)
+
+/obj/item/clothing/gloves/fingerless/pugilist/rapid/Touch(atom/target, proximity = TRUE)
+ if(!isliving(target))
+ return
+
+ var/mob/living/M = loc
+ M.changeNext_move(CLICK_CD_RAPID)
+ if(warcry)
+ M.say("[warcry]", ignore_spam = TRUE, forced = TRUE)
+
+ return FALSE
+
+/obj/item/clothing/gloves/fingerless/pugilist/rapid/AltClick(mob/user)
+ var/input = stripped_input(user,"What do you want your battlecry to be? Max length of 6 characters.", ,"", 7)
+ if(input)
+ warcry = input
+
+/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug
+ name = "Hugs of the North Star"
+ desc = "The armbands of a humble friend. Makes you pretty keen to go let everyone know how much you appreciate them!"
+ warcry = "owo" //Shouldn't ever come into play
+ enhancement = 0
+ secondary_trait = TRAIT_PACIFISM //You are only here to hug and be friends!
+
+/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug/Touch(mob/target, proximity = TRUE)
+ if(!isliving(target))
+ return
+
+ var/mob/living/M = loc
+
+ if(M.a_intent != INTENT_HELP)
+ return FALSE
+ if(target.stat != CONSCIOUS) //Can't hug people who are dying/dead
+ return FALSE
+ else
+ M.changeNext_move(CLICK_CD_RAPID)
+
+ return FALSE
+
+/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug/AltClick(mob/user)
+ return FALSE
+
/obj/item/clothing/gloves/botanic_leather
name = "botanist's leather gloves"
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin. They're also quite warm."
@@ -48,7 +176,6 @@
desc = "For when you're expecting to get slapped on the wrist. Offers modest protection to your arms."
icon_state = "bracers"
item_state = "bracers"
- item_color = null //So they don't wash.
transfer_prints = TRUE
strip_delay = 40
equip_delay_other = 20
@@ -59,54 +186,6 @@
resistance_flags = NONE
armor = list("melee" = 15, "bullet" = 35, "laser" = 35, "energy" = 20, "bomb" = 35, "bio" = 35, "rad" = 35, "fire" = 0, "acid" = 0)
-/obj/item/clothing/gloves/rapid
- name = "Gloves of the North Star"
- desc = "Just looking at these fills you with an urge to beat the shit out of people. Violently."
- icon_state = "rapid"
- item_state = "rapid"
- transfer_prints = TRUE
- var/warcry = "AT"
-
-/obj/item/clothing/gloves/rapid/Touch(mob/living/target,proximity = TRUE)
- if(!istype(target))
- return
-
- var/mob/living/M = loc
- M.changeNext_move(CLICK_CD_RAPID)
- M.adjustStaminaLoss(-3.5) // used to be -2 with some comment about stamina buffer management but *shrug -hatterhat
- if(warcry)
- M.say("[warcry]", ignore_spam = TRUE, forced = "north star warcry")
-
- .= FALSE
-
-
-/obj/item/clothing/gloves/rapid/attack_self(mob/user)
- var/input = stripped_input(user,"What do you want your battlecry to be? Max length of 6 characters.", ,"", 7)
- if(input)
- warcry = input
-
-/obj/item/clothing/gloves/rapid/hug
- name = "Hugs of the North Star"
- desc = "Just looking at these fills you with an urge to hug the shit out of people. In a very friendly manner."
- warcry = "owo" //Shouldn't ever come into play
-
-/obj/item/clothing/gloves/rapid/hug/Touch(mob/living/target,proximity = TRUE)
- if(!istype(target))
- return
-
- var/mob/living/M = loc
-
- if(M.a_intent == INTENT_HELP)
- if(target.health >= 0 && !HAS_TRAIT(target, TRAIT_FAKEDEATH)) //Can't hug people who are dying/dead
- if(target.on_fire || target.lying) //No spamming extinguishing, helping them up, or other non-hugging/patting help interactions
- return
- else
- M.changeNext_move(CLICK_CD_RAPID)
- . = FALSE
-
-/obj/item/clothing/gloves/rapid/hug/attack_self(mob/user)
- return FALSE
-
/obj/item/clothing/gloves/thief
name = "black gloves"
desc = "Gloves made with completely frictionless, insulated cloth, easier to steal from people with."
@@ -117,4 +196,4 @@
strip_delay = 80
transfer_prints = FALSE
strip_mod = 5
- strip_silence = TRUE
\ No newline at end of file
+ strip_silence = TRUE
diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm
index d599fbf6f7..475e7a4e51 100644
--- a/code/modules/clothing/head/_head.dm
+++ b/code/modules/clothing/head/_head.dm
@@ -48,8 +48,8 @@
-/obj/item/clothing/head/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clothing/head/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(!isinhands)
if(damaged_clothes)
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet")
diff --git a/code/modules/clothing/head/beanie.dm b/code/modules/clothing/head/beanie.dm
index a5fb04d393..4117e88811 100644
--- a/code/modules/clothing/head/beanie.dm
+++ b/code/modules/clothing/head/beanie.dm
@@ -5,7 +5,6 @@
name = "white beanie"
desc = "A stylish beanie. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their heads."
icon_state = "beanie" //Default white
- item_color = "beanie"
/obj/item/clothing/head/beanie/black
name = "black beanie"
@@ -52,33 +51,27 @@
/obj/item/clothing/head/beanie/christmas
name = "christmas beanie"
icon_state = "beaniechristmas"
- item_color = "beaniechristmas"
/obj/item/clothing/head/beanie/striped
name = "striped beanie"
icon_state = "beaniestriped"
- item_color = "beaniestriped"
/obj/item/clothing/head/beanie/stripedred
name = "red striped beanie"
icon_state = "beaniestripedred"
- item_color = "beaniestripedred"
/obj/item/clothing/head/beanie/stripedblue
name = "blue striped beanie"
icon_state = "beaniestripedblue"
- item_color = "beaniestripedblue"
/obj/item/clothing/head/beanie/stripedgreen
name = "green striped beanie"
icon_state = "beaniestripedgreen"
- item_color = "beaniestripedgreen"
/obj/item/clothing/head/beanie/durathread
name = "durathread beanie"
desc = "A beanie made from durathread, its resilient fibres provide some protection to the wearer."
icon_state = "beaniedurathread"
- item_color = null
armor = list("melee" = 25, "bullet" = 10, "laser" = 20,"energy" = 10, "bomb" = 30, "bio" = 15, "rad" = 20, "fire" = 100, "acid" = 50)
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 29b0aa9552..ffd50cbfbe 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -7,7 +7,7 @@
light_color = "#FFCC66"
var/power_on = 0.8
var/on = FALSE
- item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite)
+ var/hat_type = "yellow" //Determines used sprites: hardhat[on]_[hat_type] and hardhat[on]_[hat_type]2 (lying down sprite)
armor = list("melee" = 15, "bullet" = 5, "laser" = 20,"energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50)
flags_inv = 0
actions_types = list(/datum/action/item_action/toggle_helmet_light)
@@ -33,8 +33,8 @@
update_icon()
/obj/item/clothing/head/hardhat/update_icon_state()
- icon_state = "hardhat[on]_[item_color]"
- item_state = "hardhat[on]_[item_color]"
+ icon_state = "hardhat[on]_[hat_type]"
+ item_state = "hardhat[on]_[hat_type]"
/obj/item/clothing/head/hardhat/proc/turn_on(mob/user)
set_light(brightness_on, power_on)
@@ -45,13 +45,13 @@
/obj/item/clothing/head/hardhat/orange
icon_state = "hardhat0_orange"
item_state = "hardhat0_orange"
- item_color = "orange"
+ hat_type = "orange"
dog_fashion = null
/obj/item/clothing/head/hardhat/red
icon_state = "hardhat0_red"
item_state = "hardhat0_red"
- item_color = "red"
+ hat_type = "red"
dog_fashion = null
name = "firefighter helmet"
clothing_flags = STOPSPRESSUREDAMAGE
@@ -63,7 +63,7 @@
/obj/item/clothing/head/hardhat/white
icon_state = "hardhat0_white"
item_state = "hardhat0_white"
- item_color = "white"
+ hat_type = "white"
clothing_flags = STOPSPRESSUREDAMAGE
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
@@ -74,13 +74,13 @@
/obj/item/clothing/head/hardhat/dblue
icon_state = "hardhat0_dblue"
item_state = "hardhat0_dblue"
- item_color = "dblue"
+ hat_type = "dblue"
dog_fashion = null
/obj/item/clothing/head/hardhat/atmos
icon_state = "hardhat0_atmos"
item_state = "hardhat0_atmos"
- item_color = "atmos"
+ hat_type = "atmos"
dog_fashion = null
name = "atmospheric technician's firefighting helmet"
desc = "A firefighter's helmet, able to keep the user cool in any situation."
@@ -124,12 +124,12 @@
playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing
update_icon()
-/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands)
- . += mutable_appearance('icons/mob/head.dmi', "weldhelmet")
+ . += mutable_appearance('icons/mob/clothing/head.dmi', "weldhelmet")
if(!up)
- . += mutable_appearance('icons/mob/head.dmi', "weldvisor")
+ . += mutable_appearance('icons/mob/clothing/head.dmi', "weldvisor")
/obj/item/clothing/head/hardhat/weldhat/update_overlays()
. = ..()
@@ -139,14 +139,14 @@
/obj/item/clothing/head/hardhat/weldhat/orange
icon_state = "hardhat0_orange"
item_state = "hardhat0_orange"
- item_color = "orange"
+ hat_type = "orange"
/obj/item/clothing/head/hardhat/weldhat/white
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight AND welding shield!" //This bulb is not smaller
icon_state = "hardhat0_white"
item_state = "hardhat0_white"
brightness_on = 4 //Boss always takes the best stuff
- item_color = "white"
+ hat_type = "white"
clothing_flags = STOPSPRESSUREDAMAGE
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
@@ -156,4 +156,4 @@
/obj/item/clothing/head/hardhat/weldhat/dblue
icon_state = "hardhat0_dblue"
item_state = "hardhat0_dblue"
- item_color = "dblue"
\ No newline at end of file
+ hat_type = "dblue"
\ No newline at end of file
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 9253c4e9aa..638a0c2f23 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -364,7 +364,6 @@
name = "durathread beret"
desc = "A beret made from durathread, its resilient fibres provide some protection to the wearer."
icon_state = "beretdurathread"
- item_color = null
armor = list("melee" = 25, "bullet" = 10, "laser" = 20,"energy" = 10, "bomb" = 30, "bio" = 15, "rad" = 20, "fire" = 100, "acid" = 50)
#undef DRILL_DEFAULT
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 189fb46e46..2cb043ba88 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -372,14 +372,12 @@
name = "Telegram cap"
desc = "A bright red cap warn by hotel staff. Or people who want to be a singing telegram"
icon_state = "telegram"
- item_color = "telegram"
dog_fashion = /datum/dog_fashion/head/telegram
/obj/item/clothing/head/colour
name = "Singer cap"
desc = "A light white hat that has bands of color. Just makes you want to sing and dance!"
icon_state = "colour"
- item_color = "colour"
dog_fashion = /datum/dog_fashion/head/colour
/obj/item/clothing/head/christmashat
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 0b58ea234c..9c96223a6f 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -42,7 +42,6 @@
desc = "You put the cake on your head. Brilliant."
icon_state = "hardhat0_cakehat"
item_state = "hardhat0_cakehat"
- item_color = "cakehat"
hitsound = 'sound/weapons/tap.ogg'
flags_inv = HIDEEARS|HIDEHAIR
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
@@ -114,7 +113,6 @@
desc = "A jack o' lantern! Believed to ward off evil spirits."
icon_state = "hardhat0_pumpkin"
item_state = "hardhat0_pumpkin"
- item_color = "pumpkin"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
brightness_on = 2 //luminosity when on
@@ -151,7 +149,6 @@
desc = "Some fake antlers and a very fake red nose."
icon_state = "hardhat0_reindeer"
item_state = "hardhat0_reindeer"
- item_color = "reindeer"
flags_inv = 0
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
brightness_on = 1 //luminosity when on
@@ -187,14 +184,15 @@
/obj/item/clothing/head/wig
name = "wig"
desc = "A bunch of hair without a head attached."
- icon_state = ""
- item_state = "pwig"
+ icon = 'icons/mob/human_face.dmi' // default icon for all hairs
+ icon_state = "hair_vlong"
flags_inv = HIDEHAIR
+ color = "#000"
var/hair_style = "Very Long Hair"
- var/hair_color = "#000"
/obj/item/clothing/head/wig/Initialize(mapload)
. = ..()
+ icon_state = "" //Shitty hack that i dont know if it is even neccesary to deal with the vendor stack exception
update_icon()
/obj/item/clothing/head/wig/update_icon_state()
@@ -202,29 +200,24 @@
if(!S)
icon = 'icons/obj/clothing/hats.dmi'
icon_state = "pwig"
+ else
+ icon = S.icon
+ icon_state = S.icon_state
-/obj/item/clothing/head/wig/update_overlays()
+/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
. = ..()
- var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style]
- if(S)
- var/mutable_appearance/M = mutable_appearance(S.icon, S.icon_state, color = hair_color)
- M.appearance_flags |= RESET_COLOR
- . += M
-
-/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
if(!isinhands)
var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style]
if(!S)
return
var/mutable_appearance/M = mutable_appearance(S.icon, S.icon_state,layer = -HAIR_LAYER)
M.appearance_flags |= RESET_COLOR
- M.color = hair_color
+ M.color = color
. += M
/obj/item/clothing/head/wig/random/Initialize(mapload)
hair_style = pick(GLOB.hair_styles_list - "Bald") //Don't want invisible wig
- hair_color = "#[random_short_color()]"
+ color = "#[random_short_color()]"
. = ..()
/obj/item/clothing/head/bronze
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 19ff6bc8b2..2f4bd44e4f 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -3,14 +3,14 @@
desc = "It's a baseball hat in a tasteless yellow colour."
icon_state = "cargosoft"
item_state = "helmet"
- item_color = "cargo"
+ var/soft_type = "cargo"
dog_fashion = /datum/dog_fashion/head/cargo_tech
var/flipped = 0
/obj/item/clothing/head/soft/dropped(mob/user)
- icon_state = "[item_color]soft"
+ icon_state = "[soft_type]soft"
flipped = FALSE
return ..()
@@ -33,10 +33,10 @@
if(!user.incapacitated())
src.flipped = !src.flipped
if(src.flipped)
- icon_state = "[item_color]soft_flipped"
+ icon_state = "[soft_type]soft_flipped"
to_chat(user, "You flip the hat backwards. ")
else
- icon_state = "[item_color]soft"
+ icon_state = "[soft_type]soft"
to_chat(user, "You flip the hat back in normal position. ")
usr.update_inv_head() //so our mob-overlays update
@@ -48,77 +48,77 @@
name = "red cap"
desc = "It's a baseball hat in a tasteless red colour."
icon_state = "redsoft"
- item_color = "red"
+ soft_type = "red"
dog_fashion = null
/obj/item/clothing/head/soft/blue
name = "blue cap"
desc = "It's a baseball hat in a tasteless blue colour."
icon_state = "bluesoft"
- item_color = "blue"
+ soft_type = "blue"
dog_fashion = null
/obj/item/clothing/head/soft/green
name = "green cap"
desc = "It's a baseball hat in a tasteless green colour."
icon_state = "greensoft"
- item_color = "green"
+ soft_type = "green"
dog_fashion = null
/obj/item/clothing/head/soft/yellow
name = "yellow cap"
desc = "It's a baseball hat in a tasteless yellow colour."
icon_state = "yellowsoft"
- item_color = "yellow"
+ soft_type = "yellow"
dog_fashion = null
/obj/item/clothing/head/soft/grey
name = "grey cap"
desc = "It's a baseball hat in a tasteful grey colour."
icon_state = "greysoft"
- item_color = "grey"
+ soft_type = "grey"
dog_fashion = null
/obj/item/clothing/head/soft/orange
name = "orange cap"
desc = "It's a baseball hat in a tasteless orange colour."
icon_state = "orangesoft"
- item_color = "orange"
+ soft_type = "orange"
dog_fashion = null
/obj/item/clothing/head/soft/mime
name = "white cap"
desc = "It's a baseball hat in a tasteless white colour."
icon_state = "mimesoft"
- item_color = "mime"
+ soft_type = "mime"
dog_fashion = null
/obj/item/clothing/head/soft/purple
name = "purple cap"
desc = "It's a baseball hat in a tasteless purple colour."
icon_state = "purplesoft"
- item_color = "purple"
+ soft_type = "purple"
dog_fashion = null
/obj/item/clothing/head/soft/black
name = "black cap"
desc = "It's a baseball hat in a tasteless black colour."
icon_state = "blacksoft"
- item_color = "black"
+ soft_type = "black"
dog_fashion = null
/obj/item/clothing/head/soft/rainbow
name = "rainbow cap"
desc = "It's a baseball hat in a bright rainbow of colors."
icon_state = "rainbowsoft"
- item_color = "rainbow"
+ soft_type = "rainbow"
dog_fashion = null
/obj/item/clothing/head/soft/sec
name = "security cap"
desc = "It's a robust baseball hat in tasteful red colour."
icon_state = "secsoft"
- item_color = "sec"
+ soft_type = "sec"
armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
dog_fashion = null
@@ -127,14 +127,14 @@
name = "EMT cap"
desc = "It's a baseball hat with a dark turquoise color and a reflective cross on the top."
icon_state = "emtsoft"
- item_color = "emt"
+ soft_type = "emt"
dog_fashion = null
/obj/item/clothing/head/soft/baseball
name = "baseball cap"
desc = "It's a robust baseball hat, this one belongs to syndicate major league team."
icon_state = "baseballsoft"
- item_color = "baseballsoft"
+ soft_type = "baseballsoft"
item_state = "baseballsoft"
flags_inv = HIDEEYES|HIDEFACE
armor = list("melee" = 35, "bullet" = 35, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 90)
diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm
index 5019633cf0..7df38661e5 100644
--- a/code/modules/clothing/masks/_masks.dm
+++ b/code/modules/clothing/masks/_masks.dm
@@ -28,8 +28,8 @@
/obj/item/clothing/mask/proc/handle_speech()
-/obj/item/clothing/mask/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clothing/mask/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(!isinhands)
if(body_parts_covered & HEAD)
if(damaged_clothes)
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 38f0a7c20a..144b17e510 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -68,6 +68,7 @@
clothing_flags = ALLOWINTERNALS
icon_state = "clown"
item_state = "clown_hat"
+ dye_color = "clown"
flags_cover = MASKCOVERSEYES
resistance_flags = FLAMMABLE
actions_types = list(/datum/action/item_action/adjust)
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index c743f26363..3813ced2c4 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -132,7 +132,6 @@
/obj/item/clothing/mask/cowmask
name = "Cow mask with a builtin voice modulator."
desc = "A rubber cow mask,"
- icon = 'icons/mob/mask.dmi'
icon_state = "cowmask"
item_state = "cowmask"
clothing_flags = VOICEBOX_TOGGLABLE
@@ -343,3 +342,45 @@
desc = "A bandana made from durathread, you wish it would provide some protection to its wearer, but it's far too thin..."
icon_state = "banddurathread"
+/obj/item/clothing/mask/paper
+ name = "paper mask"
+ desc = "A neat, circular mask made out of paper."
+ icon_state = "plainmask"
+ item_state = "plainmask"
+ flags_inv = HIDEFACE|HIDEFACIALHAIR
+ resistance_flags = FLAMMABLE
+ max_integrity = 100
+ actions_types = list(/datum/action/item_action/adjust)
+
+
+/obj/item/clothing/mask/paper/ui_action_click(mob/user)
+ if(!istype(user) || user.incapacitated())
+ return
+
+ var/list/options = list()
+ options["Blank"] = "plainmask"
+ options["Neutral"] = "neutralmask"
+ options["Eyes"] = "eyemask"
+ options["Sleeping"] ="sleepingmask"
+ options["Heart"] = "heartmask"
+ options["Core"] = "coremask"
+ options["Plus"] = "plusmask"
+ options["Square"] ="squaremask"
+ options["Bullseye"] = "bullseyemask"
+ options["Vertical"] = "verticalmask"
+ options["Horizontal"] = "horizontalmask"
+ options["X"] ="xmask"
+ options["Bugeyes"] = "bugmask"
+ options["Double"] = "doublemask"
+ options["Mark"] = "markmask"
+
+ var/choice = input(user,"What symbol would you want on this mask?","Morph Mask") in options
+
+ if(src && choice && !user.incapacitated() && in_range(user,src))
+ icon_state = options[choice]
+ user.update_inv_wear_mask()
+ for(var/X in actions)
+ var/datum/action/A = X
+ A.UpdateButtonIcon()
+ to_chat(user, "Your paper mask now has a [choice] symbol! ")
+ return 1
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index 530af7777d..402ea37f21 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -6,8 +6,8 @@
strip_delay = 40
equip_delay_other = 40
-/obj/item/clothing/neck/worn_overlays(isinhands = FALSE, icon_flag, style_flags = NONE)
- . = list()
+/obj/item/clothing/neck/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(!isinhands)
if(body_parts_covered & HEAD)
if(damaged_clothes)
@@ -21,35 +21,29 @@
icon = 'icons/obj/clothing/neck.dmi'
icon_state = "bluetie"
item_state = "" //no inhands
- item_color = "bluetie"
w_class = WEIGHT_CLASS_SMALL
/obj/item/clothing/neck/tie/blue
name = "blue tie"
icon_state = "bluetie"
- item_color = "bluetie"
/obj/item/clothing/neck/tie/red
name = "red tie"
icon_state = "redtie"
- item_color = "redtie"
/obj/item/clothing/neck/tie/black
name = "black tie"
icon_state = "blacktie"
- item_color = "blacktie"
/obj/item/clothing/neck/tie/horrible
name = "horrible tie"
desc = "A neosilk clip-on tie. This one is disgusting."
icon_state = "horribletie"
- item_color = "horribletie"
/obj/item/clothing/neck/stethoscope
name = "stethoscope"
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
icon_state = "stethoscope"
- item_color = "stethoscope"
/obj/item/clothing/neck/stethoscope/suicide_act(mob/living/carbon/user)
user.visible_message("[user] puts \the [src] to [user.p_their()] chest! It looks like [user.p_they()] wont hear much! ")
@@ -94,7 +88,6 @@
name = "white scarf"
icon_state = "scarf"
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
- item_color = "scarf"
dog_fashion = /datum/dog_fashion/head
/obj/item/clothing/neck/scarf/black
@@ -148,12 +141,10 @@
/obj/item/clothing/neck/scarf/zebra
name = "zebra scarf"
icon_state = "zebrascarf"
- item_color = "zebrascarf"
/obj/item/clothing/neck/scarf/christmas
name = "christmas scarf"
icon_state = "christmasscarf"
- item_color = "christmasscarf"
//The three following scarves don't have the scarf subtype
//This is because Ian can equip anything from that subtype
@@ -161,17 +152,14 @@
/obj/item/clothing/neck/stripedredscarf
name = "striped red scarf"
icon_state = "stripedredscarf"
- item_color = "stripedredscarf"
/obj/item/clothing/neck/stripedgreenscarf
name = "striped green scarf"
icon_state = "stripedgreenscarf"
- item_color = "stripedgreenscarf"
/obj/item/clothing/neck/stripedbluescarf
name = "striped blue scarf"
icon_state = "stripedbluescarf"
- item_color = "stripedbluescarf"
///////////
//COLLARS//
@@ -181,57 +169,44 @@
name = "pet collar"
desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule. It seems to be made out of a polychromic material."
icon_state = "petcollar"
- item_color = "petcollar"
- alternate_worn_icon = 'icons/mob/neck.dmi' //Because, as it appears, the item itself is normally not directly aware of its worn overlays, so this is about the easiest way, without adding a new var.
- hasprimary = TRUE
- primary_color = "#00BBBB"
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar
+ var/poly_states = 1
+ var/poly_colors = list("#00BBBB")
var/tagname = null
+ var/treat_path = /obj/item/reagent_containers/food/snacks/cookie
+
+/obj/item/clothing/neck/petcollar/Initialize()
+ . = ..()
+ if(treat_path)
+ new treat_path(src)
+
+/obj/item/clothing/neck/petcollar/ComponentInitialize()
+ . = ..()
+ if(!poly_states)
+ return
+ AddElement(/datum/element/polychromic, poly_colors, poly_states)
/obj/item/clothing/neck/petcollar/attack_self(mob/user)
tagname = stripped_input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot", MAX_NAME_LEN)
name = "[initial(name)] - [tagname]"
-/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file, style_flags = NONE)
- . = ..()
- if(hasprimary | hassecondary | hastertiary)
- if(!isinhands) //prevents the worn sprites from showing up if you're just holding them
- if(hasprimary) //checks if overlays are enabled
- var/mutable_appearance/primary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-primary") //automagical sprite selection
- primary_worn.color = primary_color //colors the overlay
- . += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite
- if(hassecondary)
- var/mutable_appearance/secondary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-secondary")
- secondary_worn.color = secondary_color
- . += secondary_worn
- if(hastertiary)
- var/mutable_appearance/tertiary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-tertiary")
- tertiary_worn.color = tertiary_color
- . += tertiary_worn
-
/obj/item/clothing/neck/petcollar/leather
name = "leather pet collar"
icon_state = "leathercollar"
- item_color = "leathercollar"
-
- hasprimary = TRUE
- hassecondary = TRUE
- primary_color = "#222222"
- secondary_color = "#888888"
+ poly_states = 2
+ poly_colors = list("#222222", "#888888")
/obj/item/clothing/neck/petcollar/choker
desc = "Quite fashionable... if you're somebody who's just read their first BDSM-themed erotica novel."
name = "choker"
icon_state = "choker"
- item_color = "choker"
-
- hasprimary = TRUE
- primary_color = "#222222"
+ poly_colors = list("#222222")
/obj/item/clothing/neck/petcollar/locked
name = "locked collar"
desc = "A collar that has a small lock on it to keep it from being removed."
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar/locked
+ treat_path = /obj/item/key/collar
var/lock = FALSE
/obj/item/clothing/neck/petcollar/locked/attackby(obj/item/K, mob/user, params)
@@ -253,34 +228,19 @@
/obj/item/clothing/neck/petcollar/locked/leather
name = "leather pet collar"
icon_state = "leathercollar"
- item_color = "leathercollar"
-
- hasprimary = TRUE
- hassecondary = TRUE
- primary_color = "#222222"
- secondary_color = "#888888"
+ poly_states = 2
+ poly_colors = list("#222222", "#888888")
/obj/item/clothing/neck/petcollar/locked/choker
name = "choker"
desc = "Quite fashionable... if you're somebody who's just read their first BDSM-themed erotica novel."
icon_state = "choker"
- item_color = "choker"
-
- hasprimary = TRUE
- primary_color = "#222222"
+ poly_colors = list("#222222")
/obj/item/key/collar
name = "Collar Key"
desc = "A key for a tiny lock on a collar or bag."
-/obj/item/clothing/neck/petcollar/Initialize()
- . = ..()
- new /obj/item/reagent_containers/food/snacks/cookie(src)
-
-/obj/item/clothing/neck/petcollar/locked/Initialize()
- . = ..()
- new /obj/item/key/collar(src)
-
//////////////
//DOPE BLING//
//////////////
@@ -290,7 +250,6 @@
desc = "Damn, it feels good to be a gangster."
icon = 'icons/obj/clothing/neck.dmi'
icon_state = "bling"
- item_color = "bling"
//////////////////////////////////
//VERY SUPER BADASS NECKERCHIEFS//
@@ -304,7 +263,7 @@ obj/item/clothing/neck/neckerchief
/obj/item/clothing/neck/neckerchief/worn_overlays(isinhands)
. = ..()
if(!isinhands)
- var/mutable_appearance/realOverlay = mutable_appearance('icons/mob/mask.dmi', icon_state)
+ var/mutable_appearance/realOverlay = mutable_appearance('icons/mob/clothing/mask.dmi', icon_state)
realOverlay.pixel_y = -3
. += realOverlay
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 4c6d3a8f88..802dd7265e 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -49,8 +49,8 @@
last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works
last_blood_DNA = blood_dna[blood_dna.len]
-/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(!isinhands)
var/bloody = FALSE
if(blood_DNA)
@@ -61,7 +61,7 @@
if(damaged_clothes)
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
if(bloody)
- var/file2use = style_flags & STYLE_DIGITIGRADE ? 'icons/mob/feet_digi.dmi' : 'icons/effects/blood.dmi'
+ var/file2use = style_flags & STYLE_DIGITIGRADE ? 'icons/mob/clothing/feet_digi.dmi' : 'icons/effects/blood.dmi'
. += mutable_appearance(file2use, "shoeblood", color = blood_DNA_to_color())
/obj/item/clothing/shoes/equipped(mob/user, slot)
diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm
index c45b9b443a..df0f03f614 100644
--- a/code/modules/clothing/shoes/colour.dm
+++ b/code/modules/clothing/shoes/colour.dm
@@ -1,9 +1,9 @@
/obj/item/clothing/shoes/sneakers
+ dying_key = DYE_REGISTRY_SNEAKERS
/obj/item/clothing/shoes/sneakers/black
name = "black shoes"
icon_state = "black"
- item_color = "black"
desc = "A pair of black shoes."
cold_protection = FEET
@@ -11,80 +11,49 @@
heat_protection = FEET
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
-/obj/item/clothing/shoes/sneakers/black/redcoat
- item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
-
/obj/item/clothing/shoes/sneakers/brown
name = "brown shoes"
desc = "A pair of brown shoes."
icon_state = "brown"
- item_color = "brown"
-
-/obj/item/clothing/shoes/sneakers/brown/captain
- item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
-
-/obj/item/clothing/shoes/sneakers/brown/hop
- item_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
-
-/obj/item/clothing/shoes/sneakers/brown/ce
- item_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
-
-/obj/item/clothing/shoes/sneakers/brown/rd
- item_color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
-
-/obj/item/clothing/shoes/sneakers/brown/cmo
- item_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
-
-/obj/item/clothing/shoes/sneakers/brown/qm
- item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
/obj/item/clothing/shoes/sneakers/blue
name = "blue shoes"
icon_state = "blue"
- item_color = "blue"
/obj/item/clothing/shoes/sneakers/green
name = "green shoes"
icon_state = "green"
- item_color = "green"
/obj/item/clothing/shoes/sneakers/yellow
name = "yellow shoes"
icon_state = "yellow"
- item_color = "yellow"
/obj/item/clothing/shoes/sneakers/purple
name = "purple shoes"
icon_state = "purple"
- item_color = "purple"
/obj/item/clothing/shoes/sneakers/brown
name = "brown shoes"
icon_state = "brown"
- item_color = "brown"
/obj/item/clothing/shoes/sneakers/red
name = "red shoes"
desc = "Stylish red shoes."
icon_state = "red"
- item_color = "red"
/obj/item/clothing/shoes/sneakers/white
name = "white shoes"
icon_state = "white"
permeability_coefficient = 0.01
- item_color = "white"
/obj/item/clothing/shoes/sneakers/rainbow
name = "rainbow shoes"
desc = "Very gay shoes."
icon_state = "rain_bow"
- item_color = "rainbow"
/obj/item/clothing/shoes/sneakers/orange
name = "orange shoes"
icon_state = "orange"
- item_color = "orange"
/obj/item/clothing/shoes/sneakers/orange/attack_self(mob/user)
if (src.chained)
@@ -120,5 +89,4 @@
to_chat(c, "You need help taking these off! ")
return
return ..()
-
-
\ No newline at end of file
+
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 32d9dd4483..7a3ed902ea 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -4,7 +4,6 @@
/obj/item/clothing/shoes/sneakers/mime
name = "mime shoes"
icon_state = "mime"
- item_color = "mime"
/obj/item/clothing/shoes/combat //basic syndicate combat boots for nuke ops and mob corpses
name = "combat boots"
@@ -124,7 +123,6 @@
icon_state = "jackboots"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
- item_color = "hosred"
strip_delay = 50
equip_delay_other = 50
resistance_flags = NONE
@@ -181,7 +179,6 @@
name = "\improper Nar'Sien invoker boots"
desc = "A pair of boots worn by the followers of Nar'Sie."
icon_state = "cult"
- item_color = "cult"
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
heat_protection = FEET
@@ -227,7 +224,6 @@
name = "jump boots"
desc = "A specialized pair of combat boots with a built-in propulsion system for rapid foward movement."
icon_state = "jetboots"
- item_color = "hosred"
resistance_flags = FIRE_PROOF
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
actions_types = list(/datum/action/item_action/bhop)
@@ -381,3 +377,99 @@
name = "black cowboy boots"
desc = "A pair of black cowboy boots, pretty easy to scuff up."
icon_state = "cowboyboots_black"
+
+/obj/item/clothing/shoes/wallwalkers
+ name = "wall walking boots"
+ desc = "Contrary to popular belief, these do not allow you to walk on walls. Through bluespace magic stolen from an organisation that hoards technology, they simply allow you to slip through the atoms that make up anything, but only while walking, for safety reasons. As well as this, they unfortunately cause minor breath loss as the majority of atoms in your lungs are sucked out into any solid object you walk through. Make sure not to overuse them."
+ icon_state = "walkboots"
+ var/walkcool = 0
+ var/wallcharges = 4
+ var/newlocobject = null
+
+/obj/item/clothing/shoes/wallwalkers/equipped(mob/user,slot)
+ . = ..()
+ if(slot == SLOT_SHOES)
+ RegisterSignal(user, COMSIG_MOB_CLIENT_MOVE,.proc/intercept_user_move)
+
+/obj/item/clothing/shoes/wallwalkers/dropped(mob/user)
+ . = ..()
+ UnregisterSignal(user, COMSIG_MOB_CLIENT_MOVE)
+
+/obj/item/clothing/shoes/wallwalkers/attackby(obj/item/W, mob/user, params)
+ . = ..()
+ if(!istype(W, /obj/item/bluespacerecharge))
+ return
+ var/obj/item/bluespacerecharge/ER = W
+ if(ER.uses)
+ wallcharges += ER.uses
+ to_chat(user, "You charged the bluespace crystal in the [src]. It now has [wallcharges] charges left. ")
+ ER.uses = 0
+ ER.icon_state = "[initial(ER.icon_state)]0"
+ else
+ to_chat(user, "[ER] has no crystal on it. ")
+
+/obj/item/clothing/shoes/wallwalkers/examine(mob/user)
+ . = ..()
+ . += "It has [wallcharges] charges left. "
+
+/obj/item/clothing/shoes/wallwalkers/proc/intercept_user_move(mob/living/m, client/client, dir, newloc, oldloc)
+ if (walkcool >= world.time || m.m_intent != MOVE_INTENT_WALK || wallcharges <= 0)
+ return
+ walkcool = world.time + m.movement_delay()
+ var/issolid = FALSE
+ var/turf/K = newloc
+ if (istype(K))
+ if (K.density)
+ issolid = TRUE
+ if (!issolid)
+ for (var/atom/T in newloc) //stuff on the new turf
+ if (!T.CanPass(m,newloc) && T != m)
+ issolid = TRUE
+ newlocobject = T
+ break
+ if (!issolid)
+ for (var/atom/T in oldloc) //directional shit on the old turf
+ if (!T.CanPass(m,newloc) && T != m && T != newlocobject)
+ issolid = TRUE
+ break
+ newlocobject = null //stopping structures from using two charges because of how shitty the canpass code is
+ m.forceMove(newloc)
+ if (!issolid)
+ return
+ m.adjustOxyLoss(rand(5,13))
+ if (prob(15))
+ m.adjustBruteLoss(rand(4,7))
+ to_chat(m,"You feel as if travelling through the solid object left something behind and it hurts! ")
+ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
+ s.set_up(5, 1, oldloc)
+ s.start()
+ flash_lighting_fx(3, 3, LIGHT_COLOR_ORANGE)
+ wallcharges--
+
+/obj/item/bluespacerecharge
+ name = "bluespace crystal recharging device"
+ desc = "A small cell with two prongs lazily jabbed into it. It looks like it's made for replacing the crystals in bluespace devices."
+ icon = 'icons/obj/module.dmi'
+ icon_state = "bluespace_charge"
+ item_flags = NOBLUDGEON
+ w_class = WEIGHT_CLASS_TINY
+ var/uses = 6
+
+/obj/item/bluespacerecharge/examine(mob/user)
+ . = ..()
+ if(uses)
+ . += "It can add up to [uses] charges to compatible devices. "
+ else
+ . += "The crystal is gone. "
+
+/obj/item/bluespacerecharge/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(!istype(I, /obj/item/stack/ore/bluespace_crystal) || uses)
+ return
+ var/obj/item/stack/ore/bluespace_crystal/B = I
+ if (B.amount < 10)
+ return
+ uses += 3
+ to_chat(user, "You insert [I] into [src]. ")
+ B.use(10)
+ icon_state = initial(icon_state)
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 4311aa5166..94ccdf94c6 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -321,7 +321,7 @@
check_flags = AB_CHECK_CONSCIOUS //|AB_CHECK_INSIDE
var/obj/item/clothing/suit/space/chronos/chronosuit = null
-/datum/action/innate/chrono_teleport/IsAvailable()
+/datum/action/innate/chrono_teleport/IsAvailable(silent = FALSE)
return (chronosuit && chronosuit.activated && chronosuit.camera && !chronosuit.teleporting)
/datum/action/innate/chrono_teleport/Activate()
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 1bad198c73..93b34f4522 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -10,7 +10,7 @@
var/brightness_on = 4 //luminosity when on
var/on = FALSE
var/obj/item/clothing/suit/space/hardsuit/suit
- item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
+ var/hardsuit_type = "engineering" //Determines used sprites: hardsuit[on]-[type]
actions_types = list(/datum/action/item_action/toggle_helmet_light)
var/rad_count = 0
@@ -30,16 +30,14 @@
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
on = !on
- icon_state = "[basestate][on]-[item_color]"
user.update_inv_head() //so our mob-overlays update
-
if(on)
set_light(brightness_on)
else
set_light(0)
- for(var/X in actions)
- var/datum/action/A = X
- A.UpdateButtonIcon()
+
+/obj/item/clothing/head/helmet/space/hardsuit/update_icon_state()
+ icon_state = "[basestate][on]-[hardsuit_type]"
/obj/item/clothing/head/helmet/space/hardsuit/dropped(mob/user)
..()
@@ -103,6 +101,7 @@
actions_types = list(/datum/action/item_action/toggle_helmet)
var/helmettype = /obj/item/clothing/head/helmet/space/hardsuit
var/obj/item/tank/jetpack/suit/jetpack = null
+ var/hardsuit_type
/obj/item/clothing/suit/space/hardsuit/Initialize()
@@ -169,7 +168,7 @@
icon_state = "hardsuit0-engineering"
item_state = "eng_helm"
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75)
- item_color = "engineering"
+ hardsuit_type = "engineering"
resistance_flags = FIRE_PROOF
/obj/item/clothing/suit/space/hardsuit/engine
@@ -188,7 +187,7 @@
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has thermal shielding."
icon_state = "hardsuit0-atmospherics"
item_state = "atmo_helm"
- item_color = "atmospherics"
+ hardsuit_type = "atmospherics"
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
@@ -209,7 +208,7 @@
desc = "An advanced helmet designed for work in a hazardous, low pressure environment. Shines with a high polish."
icon_state = "hardsuit0-white"
item_state = "ce_helm"
- item_color = "white"
+ hardsuit_type = "white"
armor = list("melee" = 40, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 90)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
@@ -231,7 +230,7 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating for wildlife encounters and dual floodlights."
icon_state = "hardsuit0-mining"
item_state = "mining_helm"
- item_color = "mining"
+ hardsuit_type = "mining"
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF
heat_protection = HEAD
@@ -267,7 +266,7 @@
alt_desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
- item_color = "syndi"
+ hardsuit_type = "syndi"
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)
on = FALSE
var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null
@@ -276,7 +275,7 @@
visor_flags = STOPSPRESSUREDAMAGE
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon_state()
- icon_state = "hardsuit[on]-[item_color]"
+ icon_state = "hardsuit[on]-[hardsuit_type]"
/obj/item/clothing/head/helmet/space/hardsuit/syndi/Initialize()
. = ..()
@@ -332,7 +331,7 @@
linkedsuit.clothing_flags &= ~STOPSPRESSUREDAMAGE
linkedsuit.cold_protection &= ~(CHEST | GROIN | LEGS | FEET | ARMS | HANDS)
- linkedsuit.icon_state = "hardsuit[on]-[item_color]"
+ linkedsuit.icon_state = "hardsuit[on]-[hardsuit_type]"
linkedsuit.update_icon()
user.update_inv_wear_suit()
user.update_inv_w_uniform()
@@ -344,7 +343,7 @@
alt_desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
- item_color = "syndi"
+ hardsuit_type = "syndi"
w_class = WEIGHT_CLASS_NORMAL
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)
allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
@@ -358,7 +357,7 @@
desc = "An elite version of the syndicate helmet, with improved armour and fireproofing. It is in EVA mode. Property of Gorlex Marauders."
alt_desc = "An elite version of the syndicate helmet, with improved armour and fireproofing. It is in combat mode. Property of Gorlex Marauders."
icon_state = "hardsuit0-syndielite"
- item_color = "syndielite"
+ hardsuit_type = "syndielite"
armor = list("melee" = 60, "bullet" = 60, "laser" = 50, "energy" = 25, "bomb" = 55, "bio" = 100, "rad" = 70, "fire" = 100, "acid" = 100)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
@@ -375,7 +374,7 @@
desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode."
alt_desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in combat mode."
icon_state = "hardsuit0-syndielite"
- item_color = "syndielite"
+ hardsuit_type = "syndielite"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
armor = list("melee" = 60, "bullet" = 60, "laser" = 50, "energy" = 25, "bomb" = 55, "bio" = 100, "rad" = 70, "fire" = 100, "acid" = 100)
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -394,7 +393,7 @@
alt_desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in combat mode."
icon_state = "hardsuit1-owl"
item_state = "s_helmet"
- item_color = "owl"
+ hardsuit_type = "owl"
visor_flags_inv = 0
visor_flags = 0
on = FALSE
@@ -405,7 +404,7 @@
alt_desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in combat mode."
icon_state = "hardsuit1-owl"
item_state = "s_suit"
- item_color = "owl"
+ hardsuit_type = "owl"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl
mutantrace_variation = STYLE_DIGITIGRADE
@@ -416,12 +415,16 @@
desc = "A bizarre gem-encrusted helmet that radiates magical energies."
icon_state = "hardsuit0-wiz"
item_state = "wiz_helm"
- item_color = "wiz"
+ hardsuit_type = "wiz"
resistance_flags = FIRE_PROOF | ACID_PROOF //No longer shall our kind be foiled by lone chemists with spray bottles!
armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 20, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+/obj/item/clothing/head/helmet/space/hardsuit/wizard/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/spellcasting, SPELL_WIZARD_HAT, ITEM_SLOT_HEAD)
+
/obj/item/clothing/suit/space/hardsuit/wizard
icon_state = "hardsuit-wiz"
name = "gem-encrusted hardsuit"
@@ -436,9 +439,10 @@
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard
mutantrace_variation = STYLE_DIGITIGRADE
-/obj/item/clothing/suit/space/hardsuit/wizard/Initialize()
+/obj/item/clothing/suit/space/hardsuit/wizard/ComponentInitialize()
. = ..()
AddComponent(/datum/component/anti_magic, TRUE, FALSE, FALSE, ITEM_SLOT_OCLOTHING, INFINITY, FALSE)
+ AddElement(/datum/element/spellcasting, SPELL_WIZARD_ROBE, ITEM_SLOT_OCLOTHING)
//Medical hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/medical
@@ -446,7 +450,7 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light."
icon_state = "hardsuit0-medical"
item_state = "medical_helm"
- item_color = "medical"
+ hardsuit_type = "medical"
flash_protect = 0
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
@@ -479,7 +483,7 @@
name = "prototype hardsuit helmet"
desc = "A prototype helmet designed for research in a hazardous, low pressure environment. Scientific data flashes across the visor."
icon_state = "hardsuit0-rd"
- item_color = "rd"
+ hardsuit_type = "rd"
resistance_flags = ACID_PROOF | FIRE_PROOF
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
@@ -521,7 +525,7 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "hardsuit0-sec"
item_state = "sec_helm"
- item_color = "sec"
+ hardsuit_type = "sec"
armor = list("melee" = 35, "bullet" = 15, "laser" = 30,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
/obj/item/clothing/suit/space/hardsuit/security
@@ -542,7 +546,7 @@
name = "head of security's hardsuit helmet"
desc = "A special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "hardsuit0-hos"
- item_color = "hos"
+ hardsuit_type = "hos"
armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
/obj/item/clothing/suit/space/hardsuit/security/hos
@@ -591,7 +595,7 @@
icon_state = "hardsuit0-clown"
item_state = "hardsuit0-clown"
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 30)
- item_color = "clown"
+ hardsuit_type = "clown"
/obj/item/clothing/suit/space/hardsuit/clown
name = "cosmohonk hardsuit"
@@ -617,7 +621,7 @@
icon_state = "hardsuit0-ancient"
item_state = "anc_helm"
armor = list("melee" = 30, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75)
- item_color = "ancient"
+ hardsuit_type = "ancient"
resistance_flags = FIRE_PROOF
/obj/item/clothing/suit/space/hardsuit/ancient
@@ -653,7 +657,7 @@
icon_state = "hardsuit0-ancient"
item_state = "anc_helm"
armor = list("melee" = 20, "bullet" = 15, "laser" = 15, "energy" = 45, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
- item_color = "ancient"
+ hardsuit_type = "ancient"
brightness_on = 16
flash_protect = 5 //We will not be flash by bombs
tint = 1
@@ -715,7 +719,7 @@
name = "soviet hardhelmet"
desc = "Crafted with the pride of the proletariat. The vengeful gaze of the visor roots out all fascists and capitalists."
item_state = "rig0-soviet"
- item_color = "soviet"
+ hardsuit_type = "soviet"
icon_state = "rig0-soviet"
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 75)
mutantrace_variation = NONE
@@ -757,7 +761,13 @@
if(!allowed)
allowed = GLOB.advanced_hardsuit_allowed
-/obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/clothing/suit/space/hardsuit/shielded/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(current_charges > 0)
+ block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = 100
+ block_return[BLOCK_RETURN_BLOCK_CAPACITY] = (block_return[BLOCK_RETURN_BLOCK_CAPACITY] || 0) + current_charges
+ return ..()
+
+/obj/item/clothing/suit/space/hardsuit/shielded/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
recharge_cooldown = world.time + recharge_delay
if(current_charges > 0)
var/datum/effect_system/spark_spread/s = new
@@ -771,8 +781,8 @@
owner.visible_message("[owner]'s shield overloads!")
shield_state = "broken"
owner.update_inv_wear_suit()
- return 1
- return 0
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return BLOCK_NONE
/obj/item/clothing/suit/space/hardsuit/shielded/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -790,7 +800,7 @@
var/mob/living/carbon/human/C = loc
C.update_inv_wear_suit()
-/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands)
var/file2use = style_flags & STYLE_ALL_TAURIC ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/effects.dmi'
@@ -806,7 +816,7 @@
desc = "Standard issue hardsuit for playing capture the flag."
icon_state = "ert_medical"
item_state = "ert_medical"
- item_color = "ert_medical"
+ hardsuit_type = "ert_medical"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf
armor = list("melee" = 0, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 95)
slowdown = 0
@@ -820,7 +830,7 @@
name = "red shielded hardsuit"
icon_state = "ert_security"
item_state = "ert_security"
- item_color = "ert_security"
+ hardsuit_type = "ert_security"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/red
shield_state = "shield-red"
shield_on = "shield-red"
@@ -837,20 +847,20 @@
desc = "Standard issue hardsuit helmet for playing capture the flag."
icon_state = "hardsuit0-ert_medical"
item_state = "hardsuit0-ert_medical"
- item_color = "ert_medical"
+ hardsuit_type = "ert_medical"
armor = list("melee" = 0, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 95)
/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/red
icon_state = "hardsuit0-ert_security"
item_state = "hardsuit0-ert_security"
- item_color = "ert_security"
+ hardsuit_type = "ert_security"
/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/blue
name = "shielded hardsuit helmet"
desc = "Standard issue hardsuit helmet for playing capture the flag."
icon_state = "hardsuit0-ert_commander"
item_state = "hardsuit0-ert_commander"
- item_color = "ert_commander"
+ hardsuit_type = "ert_commander"
//////Syndicate Version
@@ -859,7 +869,7 @@
desc = "An advanced hardsuit with built in energy shielding."
icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
- item_color = "syndi"
+ hardsuit_type = "syndi"
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
@@ -875,7 +885,7 @@
desc = "An advanced hardsuit helmet with built in energy shielding."
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
- item_color = "syndi"
+ hardsuit_type = "syndi"
armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
///SWAT version
@@ -884,7 +894,7 @@
desc = "An advanced hardsuit favored by commandos for use in special operations."
icon_state = "deathsquad"
item_state = "swat_suit"
- item_color = "syndi"
+ hardsuit_type = "syndi"
max_charges = 4
current_charges = 4
recharge_delay = 15
@@ -899,7 +909,7 @@
desc = "A tactical helmet with built in energy shielding."
icon_state = "deathsquad"
item_state = "deathsquad"
- item_color = "syndi"
+ hardsuit_type = "syndi"
armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
@@ -914,7 +924,7 @@
desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
icon_state = "knight_cydonia"
item_state = "knight_yellow"
- item_color = null
+ hardsuit_type = null
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | LAVA_PROOF
heat_protection = HEAD
@@ -947,7 +957,7 @@
. = ..()
. += mutable_appearance(icon, "knight_cydonia_overlay", color = energy_color)
-/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands)
var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
@@ -978,7 +988,7 @@
. = ..()
. += mutable_appearance(icon, "knight_cydonia_overlay", color = energy_color)
-/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
+/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands)
var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 8c39427c49..e1deb5d28c 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -174,7 +174,7 @@ Contains:
desc = "Standard issue command helmet for the ERT."
icon_state = "hardsuit0-ert_commander"
item_state = "hardsuit0-ert_commander"
- item_color = "ert_commander"
+ hardsuit_type = "ert_commander"
armor = list("melee" = 65, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80)
strip_delay = 130
brightness_on = 7
@@ -201,7 +201,7 @@ Contains:
desc = "Standard issue security helmet for the ERT."
icon_state = "hardsuit0-ert_security"
item_state = "hardsuit0-ert_security"
- item_color = "ert_security"
+ hardsuit_type = "ert_security"
/obj/item/clothing/suit/space/hardsuit/ert/sec
desc = "Standard issue security suit for the ERT."
@@ -214,7 +214,7 @@ Contains:
desc = "Standard issue engineer helmet for the ERT."
icon_state = "hardsuit0-ert_engineer"
item_state = "hardsuit0-ert_engineer"
- item_color = "ert_engineer"
+ hardsuit_type = "ert_engineer"
/obj/item/clothing/suit/space/hardsuit/ert/engi
desc = "Standard issue engineer suit for the ERT."
@@ -227,7 +227,7 @@ Contains:
desc = "Standard issue medical helmet for the ERT."
icon_state = "hardsuit0-ert_medical"
item_state = "hardsuit0-ert_medical"
- item_color = "ert_medical"
+ hardsuit_type = "ert_medical"
/obj/item/clothing/suit/space/hardsuit/ert/med
desc = "Standard issue medical suit for the ERT."
@@ -243,7 +243,7 @@ Contains:
desc = "Red alert command helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_commander-alert"
item_state = "hardsuit0-ert_commander-alert"
- item_color = "ert_commander-alert"
+ hardsuit_type = "ert_commander-alert"
armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
brightness_on = 8
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -263,7 +263,7 @@ Contains:
desc = "Red alert security helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_security-alert"
item_state = "hardsuit0-ert_security-alert"
- item_color = "ert_security-alert"
+ hardsuit_type = "ert_security-alert"
/obj/item/clothing/suit/space/hardsuit/ert/alert/sec
desc = "Red alert security suit for the ERT. This one is more armored than its standard version."
@@ -276,7 +276,7 @@ Contains:
desc = "Red alert engineer helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_engineer-alert"
item_state = "hardsuit0-ert_engineer-alert"
- item_color = "ert_engineer-alert"
+ hardsuit_type = "ert_engineer-alert"
/obj/item/clothing/suit/space/hardsuit/ert/alert/engi
desc = "Red alert engineer suit for the ERT. This one is more armored than its standard version."
@@ -289,7 +289,7 @@ Contains:
desc = "Red alert medical helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_medical-alert"
item_state = "hardsuit0-ert_medical-alert"
- item_color = "ert_medical-alert"
+ hardsuit_type = "ert_medical-alert"
/obj/item/clothing/suit/space/hardsuit/ert/alert/med
desc = "Red alert medical suit for the ERT. This one is more armored than its standard version."
@@ -320,7 +320,6 @@ Contains:
icon_state = "cespace_helmet"
item_state = "nothing"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
- item_color = "engineering"
resistance_flags = FIRE_PROOF
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
actions_types = list()
@@ -391,7 +390,7 @@ Contains:
desc = "A helmet worn by those who deal with paranormal threats for a living."
icon_state = "hardsuit0-prt"
item_state = "hardsuit0-prt"
- item_color = "knight_grey"
+ hardsuit_type = "knight_grey"
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
actions_types = list()
resistance_flags = FIRE_PROOF
@@ -456,7 +455,8 @@ Contains:
armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 0, "acid" = 0)
strip_delay = 65
-/obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/clothing/suit/space/fragile/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ . = ..()
if(!torn && prob(50) && damage >= 5)
to_chat(owner, "[src] tears from the damage, breaking the air-tight seal! ")
clothing_flags &= ~STOPSPRESSUREDAMAGE
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index fee8dbce33..f17eb91b74 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -67,7 +67,7 @@
var/datum/action/A=X
A.UpdateButtonIcon()
-/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands && on)
. += mutable_appearance(icon_file, light_overlay)
diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm
index 1b2080feb1..8de49c63de 100644
--- a/code/modules/clothing/suits/_suits.dm
+++ b/code/modules/clothing/suits/_suits.dm
@@ -1,6 +1,7 @@
/obj/item/clothing/suit
icon = 'icons/obj/clothing/suits.dmi'
name = "suit"
+ block_priority = BLOCK_PRIORITY_WEAR_SUIT
var/fire_resist = T0C+100
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
@@ -11,7 +12,7 @@
var/suittoggled = FALSE
mutantrace_variation = STYLE_DIGITIGRADE
-/obj/item/clothing/suit/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
+/obj/item/clothing/suit/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands)
if(damaged_clothes)
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 7384fbde21..a19dfaa889 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -173,12 +173,13 @@
armor = list("melee" = 10, "bullet" = 10, "laser" = 60, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/hit_reflect_chance = 40
+ var/list/protected_zones = list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN)
-/obj/item/clothing/suit/armor/laserproof/IsReflect(def_zone)
- if(!(def_zone in list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN))) //If not shot where ablative is covering you, you don't get the reflection bonus!
- return 0
- if (prob(hit_reflect_chance))
- return 1
+/obj/item/clothing/suit/armor/laserproof/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(def_zone in protected_zones)
+ if(prob(hit_reflect_chance))
+ return BLOCK_SHOULD_REDIRECT | BLOCK_REDIRECTED | BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
+ return ..()
/obj/item/clothing/suit/armor/vest/det_suit
name = "detective's armor vest"
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 7d56fbe6dd..ce3d2576f9 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -91,3 +91,14 @@
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF | GOLIATH_RESISTANCE
+
+/obj/item/clothing/neck/cloak/polychromic
+ name = "polychromic cloak"
+ desc = "For when you want to show off your horrible colour coordination skills."
+ icon_state = "polyce"
+ item_state = "qmcloak"
+ var/list/poly_colors = list("#FFFFFF", "#FFFFFF", "#808080")
+
+/obj/item/clothing/neck/cloak/polychromic/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, poly_colors, 3)
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 6f61bf56cb..c133ea7c88 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -973,73 +973,12 @@
name = "polychromic winter coat"
icon_state = "coatpoly"
item_state = "coatpoly"
- item_color = "coatpoly"
hoodtype = /obj/item/clothing/head/hooded/winterhood/polychromic
- hasprimary = TRUE
- hassecondary = TRUE
- hastertiary = TRUE
- primary_color = "#6A6964"
- secondary_color = "#C4B8A6"
- tertiary_color = "#0000FF"
+
+/obj/item/clothing/suit/hooded/wintercoat/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#6A6964", "#C4B8A6", "#0000FF"), 3)
/obj/item/clothing/head/hooded/winterhood/polychromic
icon_state = "winterhood_poly"
- item_color = "winterhood_poly"
item_state = "winterhood_poly"
-
-/obj/item/clothing/head/hooded/winterhood/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens.
- . = ..()
- if(suit.hasprimary | suit.hassecondary)
- if(!isinhands) //prevents the worn sprites from showing up if you're just holding them
- if(suit.hasprimary) //checks if overlays are enabled
- var/mutable_appearance/primary_worn = mutable_appearance(icon_file, "[item_color]-primary") //automagical sprite selection
- primary_worn.color = suit.primary_color //colors the overlay
- . += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite.
- if(suit.hassecondary)
- var/mutable_appearance/secondary_worn = mutable_appearance(icon_file, "[item_color]-secondary")
- secondary_worn.color = suit.secondary_color
- . += secondary_worn
-
-/obj/item/clothing/suit/hooded/wintercoat/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens.
- . = ..()
- if(hasprimary | hassecondary | hastertiary)
- if(!isinhands) //prevents the worn sprites from showing up if you're just holding them
- if(hasprimary) //checks if overlays are enabled
- var/mutable_appearance/primary_worn = mutable_appearance(icon_file, "[item_color]-primary[suittoggled ? "_t" : ""]") //automagical sprite selection
- primary_worn.color = primary_color //colors the overlay
- . += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite.
- if(hassecondary)
- var/mutable_appearance/secondary_worn = mutable_appearance(icon_file, "[item_color]-secondary[suittoggled ? "_t" : ""]")
- secondary_worn.color = secondary_color
- . += secondary_worn
- if(hastertiary)
- var/mutable_appearance/tertiary_worn = mutable_appearance(icon_file, "[item_color]-tertiary[suittoggled ? "_t" : ""]")
- tertiary_worn.color = tertiary_color
- . += tertiary_worn
-
-/obj/item/clothing/suit/hooded/wintercoat/AltClick(mob/user)
- . = ..()
- if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
- return
- if(hasprimary | hassecondary | hastertiary)
- var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays
- switch(choice) //Lets the list's options actually lead to something
- if("Primary Color")
- var/primary_color_input = input(usr,"","Choose Primary Color",primary_color) as color|null //color input menu, the "|null" adds a cancel button to it.
- if(primary_color_input) //Checks if the color selected is NULL, rejects it if it is NULL.
- primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) //formats the selected color properly
- update_icon() //updates the item icon
- user.regenerate_icons() //updates the worn icon. Probably a bad idea, but it works.
- if("Secondary Color")
- var/secondary_color_input = input(usr,"","Choose Secondary Color",secondary_color) as color|null
- if(secondary_color_input)
- secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1)
- update_icon()
- user.regenerate_icons()
- if("Tertiary Color")
- var/tertiary_color_input = input(usr,"","Choose Tertiary Color",tertiary_color) as color|null
- if(tertiary_color_input)
- tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1)
- update_icon()
- user.regenerate_icons()
- return TRUE
diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm
index 87e7098ebd..c8f54f8bda 100644
--- a/code/modules/clothing/suits/reactive_armour.dm
+++ b/code/modules/clothing/suits/reactive_armour.dm
@@ -36,8 +36,8 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
actions_types = list(/datum/action/item_action/toggle)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
- hit_reaction_chance = 50 // Only on the chest yet blocks all attacks?
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
+ var/hit_reaction_chance = 50
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user)
active = !(active)
@@ -62,6 +62,14 @@
item_state = "reactiveoff"
reactivearmor_cooldown = world.time + 200
+/obj/item/clothing/suit/armor/reactive/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!active)
+ return BLOCK_NONE
+ return block_action(owner, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return)
+
+/obj/item/clothing/suit/armor/reactive/proc/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ return BLOCK_NONE
+
//When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!)
/obj/item/clothing/suit/armor/reactive/teleport
name = "reactive teleport armor"
@@ -71,18 +79,15 @@
var/rad_amount_before = 120
reactivearmor_cooldown_duration = 100
-/obj/item/clothing/suit/armor/reactive/teleport/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- . = FALSE
- if(!active)
- return
+/obj/item/clothing/suit/armor/reactive/teleport/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(prob(hit_reaction_chance))
var/mob/living/carbon/human/H = owner
if(world.time < reactivearmor_cooldown)
owner.visible_message("The reactive teleport system is still recharging! It fails to teleport [H]! ")
return
owner.visible_message("The reactive teleport system flings [H] clear of [attack_text], shutting itself off in the process! ")
- playsound(get_turf(owner),'sound/magic/blink.ogg', 100, 1)
- var/list/turfs = new/list()
+ playsound(get_turf(owner), 'sound/magic/blink.ogg', 100, 1)
+ var/list/turfs = new
var/turf/old = get_turf(src)
for(var/turf/T in orange(tele_range, H))
if(T.density)
@@ -101,7 +106,9 @@
radiation_pulse(old, rad_amount_before)
radiation_pulse(src, rad_amount)
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
- return TRUE
+ block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_PASSTHROUGH
+ return BLOCK_SUCCESS | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT | BLOCK_TARGET_DODGED
+ return BLOCK_NONE
//Fire
@@ -109,9 +116,7 @@
name = "reactive incendiary armor"
desc = "An experimental suit of armor with a reactive sensor array rigged to a flame emitter. For the stylish pyromaniac."
-/obj/item/clothing/suit/armor/reactive/fire/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(!active)
- return 0
+/obj/item/clothing/suit/armor/reactive/fire/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(prob(hit_reaction_chance))
if(world.time < reactivearmor_cooldown)
owner.visible_message("The reactive incendiary armor on [owner] activates, but fails to send out flames as it is still recharging its flame jets! ")
@@ -124,8 +129,8 @@
C.IgniteMob()
owner.fire_stacks = -20
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
- return 1
- return 0
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
+ return BLOCK_NONE
//Stealth
@@ -134,9 +139,7 @@
reactivearmor_cooldown_duration = 65
desc = "An experimental suit of armor that renders the wearer invisible on detection of imminent harm, and creates a decoy that runs away from the owner. You can't fight what you can't see."
-/obj/item/clothing/suit/armor/reactive/stealth/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(!active)
- return 0
+/obj/item/clothing/suit/armor/reactive/stealth/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(prob(hit_reaction_chance))
if(world.time < reactivearmor_cooldown)
owner.visible_message("The reactive stealth system on [owner] activates, but is still recharging its holographic emitters! ")
@@ -150,7 +153,8 @@
spawn(40)
owner.alpha = initial(owner.alpha)
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
- return 1
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
+ return BLOCK_NONE
//Tesla
@@ -175,9 +179,7 @@
if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item?
user.flags_1 |= TESLA_IGNORE_1
-/obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(!active)
- return FALSE
+/obj/item/clothing/suit/armor/reactive/tesla/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(prob(hit_reaction_chance))
if(world.time < reactivearmor_cooldown)
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
@@ -196,7 +198,8 @@
M.adjustFireLoss(legacy_dmg)
playsound(M, 'sound/machines/defib_zap.ogg', 50, 1, -1)
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
- return TRUE
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
+ return NONE
//Repulse
@@ -205,9 +208,7 @@
reactivearmor_cooldown_duration = 20
desc = "An experimental suit of armor that violently throws back attackers."
-/obj/item/clothing/suit/armor/reactive/repulse/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(!active)
- return 0
+/obj/item/clothing/suit/armor/reactive/repulse/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(prob(hit_reaction_chance))
if(world.time < reactivearmor_cooldown)
owner.visible_message("The repulse generator is still recharging! ")
@@ -234,7 +235,8 @@
AM.throw_at(throwtarget,10,1)
safety--
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
- return 1
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
+ return BLOCK_NONE
/obj/item/clothing/suit/armor/reactive/table
name = "reactive table armor"
@@ -242,9 +244,7 @@
desc = "If you can't beat the memes, embrace them."
var/tele_range = 10
-/obj/item/clothing/suit/armor/reactive/table/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(!active)
- return 0
+/obj/item/clothing/suit/armor/reactive/table/block_action(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(prob(hit_reaction_chance))
var/mob/living/carbon/human/H = owner
if(world.time < reactivearmor_cooldown)
@@ -270,8 +270,8 @@
H.forceMove(picked)
new /obj/structure/table(get_turf(owner))
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
- return 1
- return 0
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
+ return BLOCK_NONE
/obj/item/clothing/suit/armor/reactive/table/emp_act()
return
diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm
index cbbd64ebcc..4f29eab6ab 100644
--- a/code/modules/clothing/suits/toggles.dm
+++ b/code/modules/clothing/suits/toggles.dm
@@ -6,7 +6,7 @@
var/hoodtype = /obj/item/clothing/head/hooded/winterhood //so the chaplain hoodie or other hoodies can override this
/obj/item/clothing/suit/hooded/New()
- MakeHood()
+ hood = MakeHelmet()
..()
/obj/item/clothing/suit/hooded/Destroy()
@@ -14,11 +14,15 @@
qdel(hood)
hood = null
-/obj/item/clothing/suit/hooded/proc/MakeHood()
+/obj/item/clothing/suit/proc/MakeHelmet(obj/item/clothing/head/H)
+ SEND_SIGNAL(src, COMSIG_SUIT_MADE_HELMET, H)
+ return H
+
+/obj/item/clothing/suit/hooded/MakeHelmet(obj/item/clothing/head/hooded/H)
if(!hood)
- var/obj/item/clothing/head/hooded/W = new hoodtype(src)
- W.suit = src
- hood = W
+ H = new hoodtype(src)
+ H.suit = src
+ return ..()
/obj/item/clothing/suit/hooded/ui_action_click()
ToggleHood()
@@ -125,7 +129,7 @@
//Hardsuit toggle code
/obj/item/clothing/suit/space/hardsuit/Initialize()
- MakeHelmet()
+ helmet = MakeHelmet()
. = ..()
/obj/item/clothing/suit/space/hardsuit/Destroy()
@@ -140,13 +144,13 @@
suit.helmet = null
return ..()
-/obj/item/clothing/suit/space/hardsuit/proc/MakeHelmet()
+/obj/item/clothing/suit/space/hardsuit/MakeHelmet(obj/item/clothing/head/helmet/space/hardsuit/H)
if(!helmettype)
return
if(!helmet)
- var/obj/item/clothing/head/helmet/space/hardsuit/W = new helmettype(src)
- W.suit = src
- helmet = W
+ H = new helmettype(src)
+ H.suit = src
+ return ..()
/obj/item/clothing/suit/space/hardsuit/ui_action_click()
..()
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 3731a1a35e..c3ddda2328 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -9,6 +9,12 @@
equip_delay_other = 50
resistance_flags = FIRE_PROOF | ACID_PROOF
dog_fashion = /datum/dog_fashion/head/blue_wizard
+ var/magic_flags = SPELL_WIZARD_HAT
+
+/obj/item/clothing/head/wizard/ComponentInitialize()
+ . = ..()
+ if(magic_flags)
+ AddElement(/datum/element/spellcasting, magic_flags, ITEM_SLOT_HEAD)
/obj/item/clothing/head/wizard/red
name = "red wizard hat"
@@ -36,7 +42,7 @@
permeability_coefficient = 1
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
- dog_fashion = /datum/dog_fashion/head/blue_wizard
+ magic_flags = NONE
/obj/item/clothing/head/wizard/marisa
name = "witch hat"
@@ -50,6 +56,7 @@
icon_state = "magus"
item_state = "magus"
dog_fashion = null
+ magic_flags = SPELL_WIZARD_HAT|SPELL_CULT_HELMET
/obj/item/clothing/head/wizard/santa
name = "Santa's hat"
@@ -72,6 +79,12 @@
strip_delay = 50
equip_delay_other = 50
resistance_flags = FIRE_PROOF | ACID_PROOF
+ var/magic_flags = SPELL_WIZARD_ROBE
+
+/obj/item/clothing/suit/wizrobe/ComponentInitialize()
+ . = ..()
+ if(magic_flags)
+ AddElement(/datum/element/spellcasting, magic_flags, ITEM_SLOT_OCLOTHING)
/obj/item/clothing/suit/wizrobe/red
name = "red wizard robe"
@@ -102,13 +115,14 @@
desc = "A set of armored robes that seem to radiate a dark power."
icon_state = "magusblue"
item_state = "magusblue"
+ magic_flags = SPELL_WIZARD_ROBE|SPELL_CULT_ARMOR
/obj/item/clothing/suit/wizrobe/magusred
name = "\improper Magus robe"
desc = "A set of armored robes that seem to radiate a dark power."
icon_state = "magusred"
item_state = "magusred"
-
+ magic_flags = SPELL_WIZARD_ROBE|SPELL_CULT_ARMOR
/obj/item/clothing/suit/wizrobe/santa
name = "Santa's suit"
@@ -117,33 +131,27 @@
item_state = "santa"
/obj/item/clothing/suit/wizrobe/fake
- name = "wizard robe"
desc = "A rather dull blue robe meant to mimick real wizard robes."
icon_state = "wizard-fake"
- item_state = "wizrobe"
gas_transfer_coefficient = 1
permeability_coefficient = 1
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
+ magic_flags = NONE
/obj/item/clothing/head/wizard/marisa/fake
- name = "witch hat"
- desc = "Strange-looking hat-wear, makes you want to cast fireballs."
- icon_state = "marisa"
gas_transfer_coefficient = 1
permeability_coefficient = 1
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
+ magic_flags = NONE
/obj/item/clothing/suit/wizrobe/marisa/fake
- name = "witch robe"
- desc = "Magic is all about the spell power, ZE!"
- icon_state = "marisa"
- item_state = "marisarobe"
gas_transfer_coefficient = 1
permeability_coefficient = 1
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
+ magic_flags = NONE
/obj/item/clothing/suit/wizrobe/paper
name = "papier-mache robe" // no non-latin characters!
@@ -198,6 +206,10 @@
slowdown = 0
resistance_flags = FIRE_PROOF | ACID_PROOF
+/obj/item/clothing/suit/space/hardsuit/shielded/wizard/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/spellcasting, SPELL_WIZARD_HAT, ITEM_SLOT_HEAD)
+
/obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard
name = "battlemage helmet"
desc = "A suitably impressive helmet.."
@@ -209,6 +221,10 @@
actions_types = null //No inbuilt light
resistance_flags = FIRE_PROOF | ACID_PROOF
+/obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/spellcasting, SPELL_WIZARD_ROBE, ITEM_SLOT_OCLOTHING)
+
/obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard/attack_self(mob/user)
return
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index cc91391393..fe3aaf4bda 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -3,8 +3,10 @@
name = "under"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
permeability_coefficient = 0.9
+ block_priority = BLOCK_PRIORITY_UNIFORM
slot_flags = ITEM_SLOT_ICLOTHING
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ mutantrace_variation = STYLE_DIGITIGRADE
var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women
var/has_sensor = HAS_SENSORS // For the crew computer
var/random_sensor = TRUE
@@ -15,30 +17,15 @@
var/dummy_thick = FALSE // is able to hold accessories on its item
var/obj/item/clothing/accessory/attached_accessory
var/mutable_appearance/accessory_overlay
- mutantrace_variation = STYLE_DIGITIGRADE
-/obj/item/clothing/under/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
+/obj/item/clothing/under/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
+ . = ..()
if(isinhands)
return
if(damaged_clothes)
. += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
if(blood_DNA)
. += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color())
- if(accessory_overlay)
- . += accessory_overlay
- if(hasprimary) //checks if overlays are enabled
- var/mutable_appearance/primary_worn = mutable_appearance(icon_file, "[item_color]-primary") //automagical sprite selection
- primary_worn.color = primary_color //colors the overlay
- . += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite.
- if(hassecondary)
- var/mutable_appearance/secondary_worn = mutable_appearance(icon_file, "[item_color]-secondary")
- secondary_worn.color = secondary_color
- . += secondary_worn
- if(hastertiary)
- var/mutable_appearance/tertiary_worn = mutable_appearance(icon_file, "[item_color]-tertiary")
- tertiary_worn.color = tertiary_color
- . += tertiary_worn
/obj/item/clothing/under/attackby(obj/item/I, mob/user, params)
if((has_sensor == BROKEN_SENSORS) && istype(I, /obj/item/stack/cable_coil))
@@ -112,10 +99,8 @@
if((flags_inv & HIDEACCESSORY) || (A.flags_inv & HIDEACCESSORY))
return TRUE
- var/accessory_color = attached_accessory.item_color
- if(!accessory_color)
- accessory_color = attached_accessory.icon_state
- accessory_overlay = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]")
+ var/accessory_color = attached_accessory.icon_state
+ accessory_overlay = mutable_appearance('icons/mob/clothing/accessories.dmi', "[accessory_color]")
accessory_overlay.alpha = attached_accessory.alpha
accessory_overlay.color = attached_accessory.color
@@ -166,4 +151,123 @@
if(SENSOR_COORDS)
. += "Its vital tracker and tracking beacon appear to be enabled."
if(attached_accessory)
- . += "\A [attached_accessory] is attached to it."
\ No newline at end of file
+ . += "\A [attached_accessory] is attached to it."
+
+/obj/item/clothing/under/verb/toggle()
+ set name = "Adjust Suit Sensors"
+ set category = "Object"
+ set src in usr
+ var/mob/M = usr
+ if (istype(M, /mob/dead/))
+ return
+ if (!can_use(M))
+ return
+ if(src.has_sensor == LOCKED_SENSORS)
+ to_chat(usr, "The controls are locked.")
+ return 0
+ if(src.has_sensor == BROKEN_SENSORS)
+ to_chat(usr, "The sensors have shorted out!")
+ return 0
+ if(src.has_sensor <= NO_SENSORS)
+ to_chat(usr, "This suit does not have any sensors.")
+ return 0
+
+ var/list/modes = list("Off", "Binary vitals", "Exact vitals", "Tracking beacon")
+ var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
+ if(get_dist(usr, src) > 1)
+ to_chat(usr, "You have moved too far away! ")
+ return
+ sensor_mode = modes.Find(switchMode) - 1
+
+ if (src.loc == usr)
+ switch(sensor_mode)
+ if(0)
+ to_chat(usr, "You disable your suit's remote sensing equipment. ")
+ if(1)
+ to_chat(usr, "Your suit will now only report whether you are alive or dead. ")
+ if(2)
+ to_chat(usr, "Your suit will now only report your exact vital lifesigns. ")
+ if(3)
+ to_chat(usr, "Your suit will now report your exact vital lifesigns as well as your coordinate position. ")
+
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = loc
+ if(H.w_uniform == src)
+ H.update_suit_sensors()
+
+
+/obj/item/clothing/under/CtrlClick(mob/user)
+ . = ..()
+
+ if (!(item_flags & IN_INVENTORY))
+ return
+
+ if(!isliving(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
+ return
+
+ if(has_sensor == LOCKED_SENSORS)
+ to_chat(user, "The controls are locked.")
+ return
+ if(has_sensor == BROKEN_SENSORS)
+ to_chat(user, "The sensors have shorted out!")
+ return
+ if(has_sensor <= NO_SENSORS)
+ to_chat(user, "This suit does not have any sensors.")
+ return
+
+ sensor_mode = SENSOR_COORDS
+
+ to_chat(user, "Your suit will now report your exact vital lifesigns as well as your coordinate position. ")
+
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(H.w_uniform == src)
+ H.update_suit_sensors()
+
+/obj/item/clothing/under/AltClick(mob/user)
+ . = ..()
+ if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
+ return
+ if(attached_accessory)
+ remove_accessory(user)
+ else
+ rolldown()
+
+/obj/item/clothing/under/verb/jumpsuit_adjust()
+ set name = "Adjust Jumpsuit Style"
+ set category = null
+ set src in usr
+ rolldown()
+
+/obj/item/clothing/under/proc/rolldown()
+ if(!can_use(usr))
+ return
+ if(!can_adjust)
+ to_chat(usr, "You cannot wear this suit any differently! ")
+ return
+ if(toggle_jumpsuit_adjust())
+ to_chat(usr, "You adjust the suit to wear it more casually. ")
+ else
+ to_chat(usr, "You adjust the suit back to normal. ")
+ if(ishuman(usr))
+ var/mob/living/carbon/human/H = usr
+ H.update_inv_w_uniform()
+ H.update_body()
+
+/obj/item/clothing/under/proc/toggle_jumpsuit_adjust()
+ adjusted = !adjusted
+
+ if(adjusted)
+ if(fitted != FEMALE_UNIFORM_TOP)
+ fitted = NO_FEMALE_UNIFORM
+ if(!alt_covers_chest) // for the special snowflake suits that expose the chest when adjusted
+ body_parts_covered &= ~CHEST
+ else
+ fitted = initial(fitted)
+ if(!alt_covers_chest)
+ body_parts_covered |= CHEST
+
+ return adjusted
+
+/obj/item/clothing/under/rank
+ dying_key = DYE_REGISTRY_UNDER
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index 628f7187ca..88821e1afe 100644
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -4,7 +4,6 @@
icon = 'icons/obj/clothing/accessories.dmi'
icon_state = "plasma"
item_state = "" //no inhands
- item_color = "plasma" //On accessories, this controls the worn sprite. That's a bit weird.
slot_flags = 0
w_class = WEIGHT_CLASS_SMALL
var/above_suit = FALSE
@@ -85,7 +84,6 @@
desc = "For some classy, murderous fun."
icon_state = "waistcoat"
item_state = "waistcoat"
- item_color = "waistcoat"
minimize_when_attached = FALSE
/obj/item/clothing/accessory/maidapron
@@ -93,7 +91,6 @@
desc = "The best part of a maid costume."
icon_state = "maidapron"
item_state = "maidapron"
- item_color = "maidapron"
minimize_when_attached = FALSE
//////////
@@ -104,7 +101,6 @@
name = "bronze medal"
desc = "A bronze medal."
icon_state = "bronze"
- item_color = "bronze"
custom_materials = list(/datum/material/iron=1000)
resistance_flags = FIRE_PROOF
var/medaltype = "medal" //Sprite used for medalbox
@@ -173,7 +169,6 @@
name = "ribbon"
desc = "A ribbon"
icon_state = "cargo"
- item_color = "cargo"
/obj/item/clothing/accessory/medal/ribbon/cargo
name = "\"cargo tech of the shift\" award"
@@ -188,7 +183,6 @@
name = "silver medal"
desc = "A silver medal."
icon_state = "silver"
- item_color = "silver"
medaltype = "medal-silver"
custom_materials = list(/datum/material/silver=1000)
@@ -204,7 +198,6 @@
name = "gold medal"
desc = "A prestigious golden medal."
icon_state = "gold"
- item_color = "gold"
medaltype = "medal-gold"
custom_materials = list(/datum/material/gold=1000)
@@ -227,7 +220,6 @@
name = "plasma medal"
desc = "An eccentric medal made of plasma."
icon_state = "plasma"
- item_color = "plasma"
medaltype = "medal-plasma"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = -10, "acid" = 0) //It's made of plasma. Of course it's flammable.
custom_materials = list(/datum/material/plasma=1000)
@@ -250,7 +242,6 @@
name = "red armband"
desc = "An fancy red armband!"
icon_state = "redband"
- item_color = "redband"
/obj/item/clothing/accessory/armband/deputy
name = "security deputy armband"
@@ -260,37 +251,31 @@
name = "cargo bay guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is brown."
icon_state = "cargoband"
- item_color = "cargoband"
/obj/item/clothing/accessory/armband/engine
name = "engineering guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is orange with a reflective strip!"
icon_state = "engieband"
- item_color = "engieband"
/obj/item/clothing/accessory/armband/science
name = "science guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is purple."
icon_state = "rndband"
- item_color = "rndband"
/obj/item/clothing/accessory/armband/hydro
name = "hydroponics guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is green and blue."
icon_state = "hydroband"
- item_color = "hydroband"
/obj/item/clothing/accessory/armband/med
name = "medical guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white."
icon_state = "medband"
- item_color = "medband"
/obj/item/clothing/accessory/armband/medblue
name = "medical guard armband"
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue."
icon_state = "medblueband"
- item_color = "medblueband"
//////////////
//OBJECTION!//
@@ -300,7 +285,6 @@
name = "attorney's badge"
desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet."
icon_state = "lawyerbadge"
- item_color = "lawyerbadge"
/obj/item/clothing/accessory/lawyers_badge/attack_self(mob/user)
if(prob(1))
@@ -324,7 +308,6 @@
name = "pocket protector"
desc = "Can protect your clothing from ink stains, but you'll look like a nerd if you're using one."
icon_state = "pocketprotector"
- item_color = "pocketprotector"
pocket_storage_component_path = /datum/component/storage/concrete/pockets/pocketprotector
/obj/item/clothing/accessory/pocketprotector/full/Initialize()
@@ -346,14 +329,12 @@
name = "bone talisman"
desc = "A hunter's talisman, some say the old gods smile on those who wear it."
icon_state = "talisman"
- item_color = "talisman"
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
/obj/item/clothing/accessory/skullcodpiece
name = "skull codpiece"
desc = "A skull shaped ornament, intended to protect the important things in life."
icon_state = "skull"
- item_color = "skull"
above_suit = TRUE
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
@@ -361,7 +342,6 @@
name = "false codpiece"
desc = "A plastic ornament, intended to protect the important things in life. It's not very good at it."
icon_state = "skull"
- item_color = "skull"
above_suit = TRUE
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
@@ -373,7 +353,6 @@
name = "protective padding"
desc = "A soft padding meant to cushion the wearer from melee harm."
icon_state = "padding"
- item_color = "nothing"
armor = list("melee" = 20, "bullet" = 10, "laser" = 0, "energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -20, "acid" = 45)
flags_inv = HIDEACCESSORY //hidden from indiscrete mob examines.
@@ -381,7 +360,6 @@
name = "kevlar padding"
desc = "A layered kevlar padding meant to cushion the wearer from ballistic harm."
icon_state = "padding"
- item_color = "nothing"
armor = list("melee" = 10, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 25)
flags_inv = HIDEACCESSORY
@@ -389,6 +367,5 @@
name = "ablative padding"
desc = "A thin ultra-refractory composite padding meant to cushion the wearer from energy lasers harm."
icon_state = "plastics"
- item_color = "nothing"
armor = list("melee" = 0, "bullet" = 0, "laser" = 20, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = -40)
flags_inv = HIDEACCESSORY
diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm
index 6b40e08af9..4b04a16b79 100644
--- a/code/modules/clothing/under/color.dm
+++ b/code/modules/clothing/under/color.dm
@@ -1,5 +1,6 @@
/obj/item/clothing/under/color
desc = "A standard issue colored jumpsuit. Variety is the spice of life!"
+ dying_key = DYE_REGISTRY_UNDER
/obj/item/clothing/under/color/jumpskirt
body_parts_covered = CHEST|GROIN|ARMS
@@ -38,7 +39,6 @@
name = "black jumpsuit"
icon_state = "black"
item_state = "bl_suit"
- item_color = "black"
resistance_flags = NONE
/obj/item/clothing/under/color/black/trackless
@@ -49,7 +49,6 @@
name = "black jumpskirt"
icon_state = "black_skirt"
item_state = "bl_suit"
- item_color = "black_skirt"
/obj/item/clothing/under/color/black/ghost
item_flags = DROPDEL
@@ -66,138 +65,119 @@
desc = "A tasteful grey jumpsuit that reminds you of the good old days."
icon_state = "grey"
item_state = "gy_suit"
- item_color = "grey"
/obj/item/clothing/under/color/jumpskirt/grey
name = "grey jumpskirt"
desc = "A tasteful grey jumpskirt that reminds you of the good old days."
icon_state = "grey_skirt"
item_state = "gy_suit"
- item_color = "grey_skirt"
/obj/item/clothing/under/color/grey/glorf
name = "ancient jumpsuit"
desc = "A terribly ragged and frayed grey jumpsuit. It looks like it hasn't been washed in over a decade."
-/obj/item/clothing/under/color/grey/glorf/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- owner.forcesay(GLOB.hit_appends)
- return 0
+/obj/item/clothing/under/color/grey/glorf/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ . = ..()
+ if(ishuman(owner))
+ var/mob/living/carbon/human/H = owner
+ H.forcesay(GLOB.hit_appends)
/obj/item/clothing/under/color/blue
name = "blue jumpsuit"
icon_state = "blue"
item_state = "b_suit"
- item_color = "blue"
/obj/item/clothing/under/color/jumpskirt/blue
name = "blue jumpskirt"
icon_state = "blue_skirt"
item_state = "b_suit"
- item_color = "blue_skirt"
/obj/item/clothing/under/color/green
name = "green jumpsuit"
icon_state = "green"
item_state = "g_suit"
- item_color = "green"
/obj/item/clothing/under/color/jumpskirt/green
name = "green jumpskirt"
icon_state = "green_skirt"
item_state = "g_suit"
- item_color = "green_skirt"
/obj/item/clothing/under/color/orange
name = "orange jumpsuit"
desc = "Don't wear this near paranoid security officers."
icon_state = "orange"
item_state = "o_suit"
- item_color = "orange"
/obj/item/clothing/under/color/jumpskirt/orange
name = "orange jumpskirt"
icon_state = "orange_skirt"
item_state = "o_suit"
- item_color = "orange_skirt"
/obj/item/clothing/under/color/pink
name = "pink jumpsuit"
icon_state = "pink"
desc = "Just looking at this makes you feel fabulous ."
item_state = "p_suit"
- item_color = "pink"
/obj/item/clothing/under/color/jumpskirt/pink
name = "pink jumpskirt"
icon_state = "pink_skirt"
item_state = "p_suit"
- item_color = "pink_skirt"
/obj/item/clothing/under/color/red
name = "red jumpsuit"
icon_state = "red"
item_state = "r_suit"
- item_color = "red"
/obj/item/clothing/under/color/jumpskirt/red
name = "red jumpskirt"
icon_state = "red_skirt"
item_state = "r_suit"
- item_color = "red_skirt"
/obj/item/clothing/under/color/white
name = "white jumpsuit"
icon_state = "white"
item_state = "w_suit"
- item_color = "white"
/obj/item/clothing/under/color/jumpskirt/white
name = "white jumpskirt"
icon_state = "white_skirt"
item_state = "w_suit"
- item_color = "white_skirt"
/obj/item/clothing/under/color/yellow
name = "yellow jumpsuit"
icon_state = "yellow"
item_state = "y_suit"
- item_color = "yellow"
/obj/item/clothing/under/color/jumpskirt/yellow
name = "yellow jumpskirt"
icon_state = "yellow_skirt"
item_state = "y_suit"
- item_color = "yellow_skirt"
/obj/item/clothing/under/color/darkblue
name = "darkblue jumpsuit"
icon_state = "darkblue"
item_state = "b_suit"
- item_color = "darkblue"
/obj/item/clothing/under/color/jumpskirt/darkblue
name = "darkblue jumpskirt"
icon_state = "darkblue_skirt"
item_state = "b_suit"
- item_color = "darkblue_skirt"
/obj/item/clothing/under/color/teal
name = "teal jumpsuit"
icon_state = "teal"
item_state = "b_suit"
- item_color = "teal"
/obj/item/clothing/under/color/jumpskirt/teal
name = "teal jumpskirt"
icon_state = "teal_skirt"
item_state = "b_suit"
- item_color = "teal_skirt"
/obj/item/clothing/under/color/lightpurple
name = "purple jumpsuit"
icon_state = "lightpurple"
item_state = "p_suit"
- item_color = "lightpurple"
/obj/item/clothing/under/color/lightpurple/trackless
desc = "A magically colored jumpsuit. No sensors are attached!"
@@ -207,62 +187,52 @@
name = "lightpurple jumpskirt"
icon_state = "lightpurple_skirt"
item_state = "p_suit"
- item_color = "lightpurple_skirt"
/obj/item/clothing/under/color/darkgreen
name = "darkgreen jumpsuit"
icon_state = "darkgreen"
item_state = "g_suit"
- item_color = "darkgreen"
/obj/item/clothing/under/color/jumpskirt/darkgreen
name = "darkgreen jumpskirt"
icon_state = "darkgreen_skirt"
item_state = "g_suit"
- item_color = "darkgreen_skirt"
/obj/item/clothing/under/color/lightbrown
name = "lightbrown jumpsuit"
icon_state = "lightbrown"
item_state = "lb_suit"
- item_color = "lightbrown"
/obj/item/clothing/under/color/jumpskirt/lightbrown
name = "lightbrown jumpskirt"
icon_state = "lightbrown_skirt"
item_state = "lb_suit"
- item_color = "lightbrown_skirt"
/obj/item/clothing/under/color/brown
name = "brown jumpsuit"
icon_state = "brown"
item_state = "lb_suit"
- item_color = "brown"
/obj/item/clothing/under/color/jumpskirt/brown
name = "brown jumpskirt"
icon_state = "brown_skirt"
item_state = "lb_suit"
- item_color = "brown_skirt"
/obj/item/clothing/under/color/maroon
name = "maroon jumpsuit"
icon_state = "maroon"
item_state = "r_suit"
- item_color = "maroon"
/obj/item/clothing/under/color/jumpskirt/maroon
name = "maroon jumpskirt"
icon_state = "maroon_skirt"
item_state = "r_suit"
- item_color = "maroon_skirt"
/obj/item/clothing/under/color/rainbow
name = "rainbow jumpsuit"
desc = "A multi-colored jumpsuit!"
icon_state = "rainbow"
item_state = "rainbow"
- item_color = "rainbow"
can_adjust = FALSE
/obj/item/clothing/under/color/jumpskirt/rainbow
@@ -270,5 +240,4 @@
desc = "A multi-colored jumpskirt!"
icon_state = "rainbow_skirt"
item_state = "rainbow"
- item_color = "rainbow_skirt"
can_adjust = FALSE
diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm
index be142a04ff..69a1dc67b3 100644
--- a/code/modules/clothing/under/costume.dm
+++ b/code/modules/clothing/under/costume.dm
@@ -2,7 +2,6 @@
name = "\improper Roman armor"
desc = "Ancient Roman armor. Made of metallic and leather straps."
icon_state = "roman"
- item_color = "roman"
item_state = "armor"
can_adjust = FALSE
strip_delay = 100
@@ -13,21 +12,18 @@
desc = "The leather club is two sectors down."
icon_state = "darkholme"
item_state = "darkholme"
- item_color = "darkholme"
can_adjust = FALSE
/obj/item/clothing/under/costume/owl
name = "owl uniform"
desc = "A soft brown jumpsuit made of synthetic feathers and strong conviction."
icon_state = "owl"
- item_color = "owl"
can_adjust = FALSE
/obj/item/clothing/under/costume/griffin
name = "griffon uniform"
desc = "A soft brown jumpsuit with a white feather collar made of synthetic feathers and a lust for mayhem."
icon_state = "griffin"
- item_color = "griffin"
can_adjust = FALSE
/obj/item/clothing/under/costume/schoolgirl
@@ -35,7 +31,6 @@
desc = "It's just like one of my Japanese animes!"
icon_state = "schoolgirl"
item_state = "schoolgirl"
- item_color = "schoolgirl"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -44,26 +39,22 @@
name = "red schoolgirl uniform"
icon_state = "schoolgirlred"
item_state = "schoolgirlred"
- item_color = "schoolgirlred"
/obj/item/clothing/under/costume/schoolgirl/green
name = "green schoolgirl uniform"
icon_state = "schoolgirlgreen"
item_state = "schoolgirlgreen"
- item_color = "schoolgirlgreen"
/obj/item/clothing/under/costume/schoolgirl/orange
name = "orange schoolgirl uniform"
icon_state = "schoolgirlorange"
item_state = "schoolgirlorange"
- item_color = "schoolgirlorange"
/obj/item/clothing/under/costume/pirate
name = "pirate outfit"
desc = "Yarr."
icon_state = "pirate"
item_state = "pirate"
- item_color = "pirate"
can_adjust = FALSE
/obj/item/clothing/under/costume/soviet
@@ -71,7 +62,6 @@
desc = "For the Motherland!"
icon_state = "soviet"
item_state = "soviet"
- item_color = "soviet"
can_adjust = FALSE
/obj/item/clothing/under/costume/redcoat
@@ -79,7 +69,6 @@
desc = "Looks old."
icon_state = "redcoat"
item_state = "redcoat"
- item_color = "redcoat"
can_adjust = FALSE
/obj/item/clothing/under/costume/kilt
@@ -87,7 +76,6 @@
desc = "Includes shoes and plaid."
icon_state = "kilt"
item_state = "kilt"
- item_color = "kilt"
body_parts_covered = CHEST|GROIN|LEGS|FEET
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -103,20 +91,18 @@
name = "polychromic kilt"
desc = "It's not a skirt!"
icon_state = "polykilt"
- item_color = "polykilt"
- hasprimary = TRUE
- hassecondary = TRUE
- primary_color = "#FFFFFF"
- secondary_color = "#F08080"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
mutantrace_variation = NONE
+/obj/item/clothing/under/costume/kilt/polychromic/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#FFFFFF", "#F08080"), 2)
+
/obj/item/clothing/under/costume/gladiator
name = "gladiator uniform"
desc = "Are you not entertained? Is that not why you are here?"
icon_state = "gladiator"
item_state = "gladiator"
- item_color = "gladiator"
body_parts_covered = CHEST|GROIN|ARMS
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -131,7 +117,6 @@
desc = "Maid in China."
icon_state = "maid"
item_state = "maid"
- item_color = "maid"
body_parts_covered = CHEST|GROIN
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -146,7 +131,6 @@
desc = "Just looking at this makes you want to sing."
icon_state = "ysing"
item_state = "ysing"
- item_color = "ysing"
body_parts_covered = CHEST|GROIN|ARMS
fitted = NO_FEMALE_UNIFORM
alternate_worn_layer = ABOVE_SHOES_LAYER
@@ -157,7 +141,6 @@
desc = "Just looking at this makes you want to sing."
icon_state = "bsing"
item_state = "bsing"
- item_color = "bsing"
body_parts_covered = CHEST|GROIN|ARMS
alternate_worn_layer = ABOVE_SHOES_LAYER
fitted = FEMALE_UNIFORM_TOP
@@ -167,7 +150,6 @@
name = "geisha suit"
desc = "Cute space ninja senpai not included."
icon_state = "geisha"
- item_color = "geisha"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
@@ -175,7 +157,6 @@
name = "villain suit"
desc = "A change of wardrobe is necessary if you ever want to catch a real superhero."
icon_state = "villain"
- item_color = "villain"
can_adjust = FALSE
/obj/item/clothing/under/costume/sailor
@@ -183,7 +164,6 @@
desc = "Skipper's in the wardroom drinkin gin'."
icon_state = "sailor"
item_state = "b_suit"
- item_color = "sailor"
can_adjust = FALSE
/obj/item/clothing/under/costume/russian_officer
@@ -191,14 +171,12 @@
desc = "The latest in fashionable russian outfits."
icon_state = "hostanclothes"
item_state = "hostanclothes"
- item_color = "hostanclothes"
/obj/item/clothing/under/costume/mummy
name = "mummy wrapping"
desc = "Return the slab or suffer my stale references."
icon_state = "mummy"
item_state = "mummy"
- item_color = "mummy"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -209,7 +187,6 @@
desc = "Perfect camouflage for hiding in botany."
icon_state = "scarecrow"
item_state = "scarecrow"
- item_color = "scarecrow"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -220,7 +197,6 @@
desc = "A dress inspired by the ancient \"Victorian\" era."
icon_state = "draculass"
item_state = "draculass"
- item_color = "draculass"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -230,7 +206,6 @@
desc = "A modified scientist jumpsuit to look extra cool."
icon_state = "drfreeze"
item_state = "drfreeze"
- item_color = "drfreeze"
can_adjust = FALSE
/obj/item/clothing/under/costume/lobster
@@ -238,7 +213,6 @@
desc = "Who beheaded the college mascot?"
icon_state = "lobster"
item_state = "lobster"
- item_color = "lobster"
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -247,7 +221,6 @@
desc = "Now you're cooking."
icon_state = "gondola"
item_state = "lb_suit"
- item_color = "gondola"
can_adjust = FALSE
/obj/item/clothing/under/costume/skeleton
@@ -255,7 +228,6 @@
desc = "A black jumpsuit with a white bone pattern printed on it. Spooky!"
icon_state = "skeleton"
item_state = "skeleton"
- item_color = "skeleton"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -347,5 +319,4 @@
name = "cloud"
desc = "cloud"
icon_state = "cloud"
- item_color = "cloud"
can_adjust = FALSE
diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
index 74181b05eb..5928819b16 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
@@ -3,86 +3,75 @@
desc = "A joint envirosuit used by plasmamen quartermasters and cargo techs alike, due to the logistical problems of differenciating the two with the length of their pant legs."
icon_state = "cargo_envirosuit"
item_state = "cargo_envirosuit"
- item_color = "cargo_envirosuit"
/obj/item/clothing/under/plasmaman/mining
name = "mining plasma envirosuit"
desc = "An air-tight khaki suit designed for operations on lavaland by plasmamen."
icon_state = "explorer_envirosuit"
item_state = "explorer_envirosuit"
- item_color = "explorer_envirosuit"
-
/obj/item/clothing/under/plasmaman/chef
name = "chef's plasma envirosuit"
desc = "A white plasmaman envirosuit designed for cullinary practices. One might question why a member of a species that doesn't need to eat would become a chef."
icon_state = "chef_envirosuit"
item_state = "chef_envirosuit"
- item_color = "chef_envirosuit"
/obj/item/clothing/under/plasmaman/enviroslacks
name = "enviroslacks"
desc = "The pet project of a particularly posh plasmaman, this custom suit was quickly appropriated by Nano-Trasen for it's detectives, lawyers, and bar-tenders alike."
icon_state = "enviroslacks"
item_state = "enviroslacks"
- item_color = "enviroslacks"
/obj/item/clothing/under/plasmaman/chaplain
name = "chaplain's plasma envirosuit"
desc = "An envirosuit specially designed for only the most pious of plasmamen."
icon_state = "chap_envirosuit"
item_state = "chap_envirosuit"
- item_color = "chap_envirosuit"
/obj/item/clothing/under/plasmaman/curator
name = "curator's plasma envirosuit"
desc = "Made out of a modified voidsuit, this suit was Nano-Trasen's first solution to the *logistical problems* that come with employing plasmamen. Due to the modifications, the suit is no longer space-worthy. Despite their limitations, these suits are still in used by historian and old-styled plasmamen alike."
icon_state = "prototype_envirosuit"
item_state = "prototype_envirosuit"
- item_color = "prototype_envirosuit"
/obj/item/clothing/under/plasmaman/janitor
name = "janitor's plasma envirosuit"
desc = "A grey and purple envirosuit designated for plasmamen janitors."
icon_state = "janitor_envirosuit"
item_state = "janitor_envirosuit"
- item_color = "janitor_envirosuit"
/obj/item/clothing/under/plasmaman/botany
name = "botany envirosuit"
desc = "A green and blue envirosuit designed to protect plasmamen from minor plant-related injuries."
icon_state = "botany_envirosuit"
item_state = "botany_envirosuit"
- item_color = "botany_envirosuit"
/obj/item/clothing/under/plasmaman/hop
name = "head of personell's envirosuit"
desc = "A prestigious azure envirosuit designed for head of personell."
icon_state = "hop_envirosuit"
item_state = "hop_envirosuit"
- item_color = "hop_envirosuit"
/obj/item/clothing/under/plasmaman/captain
name = "captain's envirosuit"
desc = "An expensive piece of plasmaman envirosuit fashion. guaranteed to keep you cool while the station goes down in fierceful fires."
icon_state = "captain_envirosuit"
item_state = "captain_envirosuit"
- item_color = "captain_envirosuit"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95)
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
/obj/item/clothing/under/plasmaman/mime
name = "mime envirosuit"
desc = "It's not very colourful."
icon_state = "mime_envirosuit"
item_state = "mime_envirosuit"
- item_color = "mime_envirosuit"
/obj/item/clothing/under/plasmaman/clown
name = "clown envirosuit"
desc = "'HONK!' "
icon_state = "clown_envirosuit"
item_state = "clown_envirosuit"
- item_color = "clown_envirosuit"
/obj/item/clothing/under/plasmaman/clown/Extinguish(mob/living/carbon/human/H)
if(!istype(H))
@@ -97,4 +86,4 @@
H.visible_message("[H]'s suit spews out a tonne of space lube! ","Your suit spews out a tonne of space lube! ")
H.ExtinguishMob()
new /obj/effect/particle_effect/foam(loc) //Truely terrifying.
- return FALSE
\ No newline at end of file
+ return FALSE
diff --git a/code/modules/clothing/under/jobs/Plasmaman/engineering.dm b/code/modules/clothing/under/jobs/Plasmaman/engineering.dm
index 1f381df4cf..15eb189fa8 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/engineering.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/engineering.dm
@@ -3,7 +3,6 @@
desc = "An air-tight suit designed to be used by plasmamen exployed as engineers, the usual purple stripes being replaced by engineer's orange. It protects the user from fire and acid damage."
icon_state = "engineer_envirosuit"
item_state = "engineer_envirosuit"
- item_color = "engineer_envirosuit"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 10, "fire" = 95, "acid" = 95)
/obj/item/clothing/under/plasmaman/engineering/ce
@@ -11,11 +10,9 @@
desc = "An advanced air-tight suit designed to be used by plasmamen chief engineers, complete with ornamental widgets and gizmo. It protects the user from fire and acid damage."
icon_state = "ce_envirosuit"
item_state = "ce_envirosuit"
- item_color = "ce_envirosuit"
/obj/item/clothing/under/plasmaman/atmospherics
name = "atmospherics plasma envirosuit"
desc = "An air-tight suit designed to be used by plasmamen exployed as atmos technicians, the usual purple stripes being replaced by atmos's blue."
icon_state = "atmos_envirosuit"
item_state = "atmos_envirosuit"
- item_color = "atmos_envirosuit"
diff --git a/code/modules/clothing/under/jobs/Plasmaman/medsci.dm b/code/modules/clothing/under/jobs/Plasmaman/medsci.dm
index 6106d785a9..03d089c10d 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/medsci.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/medsci.dm
@@ -3,28 +3,24 @@
desc = "A suit designed for the station's more plasma-based doctors."
icon_state = "doctor_envirosuit"
item_state = "doctor_envirosuit"
- item_color = "doctor_envirosuit"
/obj/item/clothing/under/plasmaman/cmo
name = "chief medical officer's plasma envirosuit"
desc = "A suit designed for the station's most plasma-based chief medical officer, but not for their cat."
icon_state = "cmo_envirosuit"
item_state = "cmo_envirosuit"
- item_color = "cmo_envirosuit"
/obj/item/clothing/under/plasmaman/science
name = "science plasma envirosuit"
desc = "A plasmaman envirosuit designed for scientists."
icon_state = "scientist_envirosuit"
item_state = "scientist_envirosuit"
- item_color = "scientist_envirosuit"
/obj/item/clothing/under/plasmaman/rd
name = "research direactor's plasma envirosuit"
desc = "A plasmaman envirosuit designed for the research director to aid them in their job of directing research into the right direction."
icon_state = "rd_envirosuit"
item_state = "rd_envirosuit"
- item_color = "rd_envirosuit"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95)
/obj/item/clothing/under/plasmaman/robotics
@@ -32,25 +28,21 @@
desc = "A plasmaman envirosuit designed for roboticists."
icon_state = "roboticist_envirosuit"
item_state = "roboticist_envirosuit"
- item_color = "roboticist_envirosuit"
/obj/item/clothing/under/plasmaman/viro
name = "virology plasma envirosuit"
desc = "The suit worn by the safest people on the station, those who are completely immune to the monstrosities they create."
icon_state = "virologist_envirosuit"
item_state = "virologist_envirosuit"
- item_color = "virologist_envirosuit"
/obj/item/clothing/under/plasmaman/genetics
name = "genetics plasma envirosuit"
desc = "A plasmaman envirosuit designed for geneticists."
icon_state = "geneticist_envirosuit"
item_state = "geneticist_envirosuit"
- item_color = "geneticist_envirosuit"
/obj/item/clothing/under/plasmaman/chemist
name = "chemistry plasma envirosuit"
desc = "A plasmaman envirosuit designed for chemists."
icon_state = "chemist_envirosuit"
item_state = "chemist_envirosuit"
- item_color = "chemist_envirosuit"
diff --git a/code/modules/clothing/under/jobs/Plasmaman/security.dm b/code/modules/clothing/under/jobs/Plasmaman/security.dm
index ff756e09fd..ddbda041f3 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/security.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/security.dm
@@ -3,19 +3,18 @@
desc = "A plasmaman containment suit designed for security officers, offering a limited amount of extra protection."
icon_state = "security_envirosuit"
item_state = "security_envirosuit"
- item_color = "security_envirosuit"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95)
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
/obj/item/clothing/under/plasmaman/security/warden
name = "warden plasma envirosuit"
desc = "A plasmaman containment suit designed for the warden, white stripes being added to differeciate them from other members of security."
icon_state = "warden_envirosuit"
item_state = "warden_envirosuit"
- item_color = "warden_envirosuit"
/obj/item/clothing/under/plasmaman/security/hos
name = "security plasma envirosuit"
desc = "A slick black and red plasmaman containment suit designed for the head of security, also called the LAW."
icon_state = "hos_envirosuit"
item_state = "hos_envirosuit"
- item_color = "hos_envirosuit"
diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm
index 5727ebc0e9..3ee00996a4 100644
--- a/code/modules/clothing/under/jobs/cargo.dm
+++ b/code/modules/clothing/under/jobs/cargo.dm
@@ -4,14 +4,12 @@
desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper."
icon_state = "qm"
item_state = "lb_suit"
- item_color = "qm"
/obj/item/clothing/under/rank/cargo/qm/skirt
name = "quartermaster's jumpskirt"
desc = "It's a jumpskirt worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper."
icon_state = "qm_skirt"
item_state = "lb_suit"
- item_color = "qm_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -21,7 +19,6 @@
desc = "Shooooorts! They're comfy and easy to wear!"
icon_state = "cargotech"
item_state = "lb_suit"
- item_color = "cargo"
body_parts_covered = CHEST|GROIN|ARMS
alt_covers_chest = TRUE
@@ -30,7 +27,6 @@
desc = "Skiiiiirts! They're comfy and easy to wear"
icon_state = "cargo_skirt"
item_state = "lb_suit"
- item_color = "cargo_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -40,12 +36,10 @@
name = "shaft miner's jumpsuit"
icon_state = "miner"
item_state = "miner"
- item_color = "miner"
/obj/item/clothing/under/rank/cargo/miner/lavaland
desc = "A green uniform for operating in hazardous environments."
name = "shaft miner's jumpsuit"
icon_state = "explorer"
item_state = "explorer"
- item_color = "explorer"
can_adjust = FALSE
diff --git a/code/modules/clothing/under/jobs/centcom.dm b/code/modules/clothing/under/jobs/centcom.dm
index 3ee210612e..33a4659b5f 100644
--- a/code/modules/clothing/under/jobs/centcom.dm
+++ b/code/modules/clothing/under/jobs/centcom.dm
@@ -3,7 +3,6 @@
name = "\improper CentCom officer's jumpsuit"
icon_state = "officer"
item_state = "g_suit"
- item_color = "officer"
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/centcom/officer/syndicate
@@ -14,4 +13,3 @@
name = "\improper CentCom officer's jumpsuit"
icon_state = "centcom"
item_state = "dg_suit"
- item_color = "centcom"
diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm
index ac5f4f12fd..6f1066de5d 100644
--- a/code/modules/clothing/under/jobs/civilian/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian/civilian.dm
@@ -3,7 +3,6 @@
name = "bartender's uniform"
icon_state = "barman"
item_state = "bar_suit"
- item_color = "barman"
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/civilian/bartender/purple
@@ -11,7 +10,6 @@
name = "purple bartender's uniform"
icon_state = "purplebartender"
item_state = "purplebartender"
- item_color = "purplebartender"
can_adjust = FALSE
/obj/item/clothing/under/rank/civilian/bartender/skirt
@@ -19,7 +17,6 @@
desc = "It looks like it could use some more flair."
icon_state = "barman_skirt"
item_state = "bar_suit"
- item_color = "barman_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -29,15 +26,13 @@
name = "chaplain's jumpsuit"
icon_state = "chaplain"
item_state = "bl_suit"
- item_color = "chapblack"
can_adjust = FALSE
/obj/item/clothing/under/rank/civilian/chaplain/skirt
name = "chaplain's jumpskirt"
desc = "It's a black jumpskirt, often worn by religious folk."
- icon_state = "chapblack_skirt"
+ icon_state = "chaplain_skirt"
item_state = "bl_suit"
- item_color = "chapblack_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -46,14 +41,12 @@
name = "cook's suit"
desc = "A suit which is given only to the most hardcore cooks in space."
icon_state = "chef"
- item_color = "chef"
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/civilian/chef/skirt
name = "cook's skirt"
desc = "A skirt which is given only to the most hardcore cooks in space."
icon_state = "chef_skirt"
- item_color = "chef_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -63,7 +56,6 @@
name = "head of personnel's jumpsuit"
icon_state = "hop"
item_state = "b_suit"
- item_color = "hop"
can_adjust = FALSE
/obj/item/clothing/under/rank/civilian/head_of_personnel/skirt
@@ -71,7 +63,6 @@
desc = "It's a jumpskirt worn by someone who works in the position of \"Head of Personnel\"."
icon_state = "hop_skirt"
item_state = "b_suit"
- item_color = "hop_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -81,7 +72,6 @@
desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble."
icon_state = "teal_suit"
item_state = "g_suit"
- item_color = "teal_suit"
can_adjust = FALSE
/obj/item/clothing/under/rank/civilian/head_of_personnel/suit/skirt
@@ -89,7 +79,6 @@
desc = "A teal suitskirt and yellow necktie. An authoritative yet tacky ensemble."
icon_state = "teal_suit_skirt"
item_state = "g_suit"
- item_color = "teal_suit_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -99,7 +88,6 @@
name = "botanist's jumpsuit"
icon_state = "hydroponics"
item_state = "g_suit"
- item_color = "hydroponics"
permeability_coefficient = 0.5
/obj/item/clothing/under/rank/civilian/hydroponics/skirt
@@ -107,7 +95,6 @@
desc = "It's a jumpskirt designed to protect against minor plant-related hazards."
icon_state = "hydroponics_skirt"
item_state = "g_suit"
- item_color = "hydroponics_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -116,14 +103,12 @@
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
name = "janitor's jumpsuit"
icon_state = "janitor"
- item_color = "janitor"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/civilian/janitor/skirt
name = "janitor's jumpskirt"
desc = "It's the official skirt of the station's janitor. It has minor protection from biohazards."
icon_state = "janitor_skirt"
- item_color = "janitor_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -133,7 +118,6 @@
desc = "A simple maid uniform for housekeeping."
icon_state = "janimaid"
item_state = "janimaid"
- item_color = "janimaid"
body_parts_covered = CHEST|GROIN
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -147,21 +131,18 @@
name = "lawyer black suit"
icon_state = "lawyer_black"
item_state = "lawyer_black"
- item_color = "lawyer_black"
/obj/item/clothing/under/rank/civilian/lawyer/black/alt
name = "lawyer black suit"
desc = "A professional black suit. Nanotrasen Investigation Bureau approved!"
icon_state = "blacksuit"
item_state = "bar_suit"
- item_color = "blacksuit"
can_adjust = TRUE
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/civilian/lawyer/black/alt/skirt
name = "lawyer black suitskirt"
icon_state = "blacksuit_skirt"
- item_color = "blacksuit_skirt"
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -170,14 +151,12 @@
desc = "A formal black suit and red tie, intended for the station's finest."
icon_state = "really_black_suit"
item_state = "bl_suit"
- item_color = "really_black_suit"
/obj/item/clothing/under/rank/civilian/lawyer/really_black/skirt
name = "executive suitskirt"
desc = "A formal black suitskirt and red tie, intended for the station's finest."
icon_state = "really_black_suit_skirt"
item_state = "bl_suit"
- item_color = "really_black_suit_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -186,46 +165,39 @@
name = "lawyer black suitskirt"
icon_state = "lawyer_black_skirt"
item_state = "lawyer_black"
- item_color = "lawyer_black_skirt"
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/civilian/lawyer/female
name = "female black suit"
icon_state = "black_suit_fem"
item_state = "bl_suit"
- item_color = "black_suit_fem"
/obj/item/clothing/under/rank/civilian/lawyer/red
name = "lawyer red suit"
icon_state = "lawyer_red"
item_state = "lawyer_red"
- item_color = "lawyer_red"
/obj/item/clothing/under/rank/civilian/lawyer/female/skirt
name = "female black suitskirt"
icon_state = "black_suit_fem_skirt"
item_state = "bl_suit"
- item_color = "black_suit_fem_skirt"
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/civilian/lawyer/red/skirt
name = "lawyer red suitskirt"
icon_state = "lawyer_red_skirt"
item_state = "lawyer_red"
- item_color = "lawyer_red_skirt"
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/civilian/lawyer/blue
name = "lawyer blue suit"
icon_state = "lawyer_blue"
item_state = "lawyer_blue"
- item_color = "lawyer_blue"
/obj/item/clothing/under/rank/civilian/lawyer/blue/skirt
name = "lawyer blue suitskirt"
icon_state = "lawyer_blue_skirt"
item_state = "lawyer_blue"
- item_color = "lawyer_blue_skirt"
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/civilian/lawyer/bluesuit
@@ -233,7 +205,6 @@
desc = "A classy suit and tie."
icon_state = "bluesuit"
item_state = "b_suit"
- item_color = "bluesuit"
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -242,7 +213,6 @@
desc = "A classy suitskirt and tie."
icon_state = "bluesuit_skirt"
item_state = "b_suit"
- item_color = "bluesuit_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -251,7 +221,6 @@
name = "purple suit"
icon_state = "lawyer_purp"
item_state = "p_suit"
- item_color = "lawyer_purp"
fitted = NO_FEMALE_UNIFORM
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -260,7 +229,6 @@
name = "purple suitskirt"
icon_state = "lawyer_purp_skirt"
item_state = "p_suit"
- item_color = "lawyer_purp_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
diff --git a/code/modules/clothing/under/jobs/civilian/clown_mime.dm b/code/modules/clothing/under/jobs/civilian/clown_mime.dm
index 7e85d60dbc..848a15f83b 100644
--- a/code/modules/clothing/under/jobs/civilian/clown_mime.dm
+++ b/code/modules/clothing/under/jobs/civilian/clown_mime.dm
@@ -4,14 +4,11 @@
desc = "It's not very colourful."
icon_state = "mime"
item_state = "mime"
- item_color = "mime"
/obj/item/clothing/under/rank/civilian/mime/skirt
name = "mime's skirt"
desc = "It's not very colourful."
icon_state = "mime_skirt"
- item_state = "mime"
- item_color = "mime_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -21,7 +18,6 @@
desc = "The only time when you DON'T enjoy looking at someone's rack."
icon_state = "sexymime"
item_state = "sexymime"
- item_color = "sexymime"
body_parts_covered = CHEST|GROIN|LEGS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -31,7 +27,6 @@
desc = "'HONK!' "
icon_state = "clown"
item_state = "clown"
- item_color = "clown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -40,7 +35,6 @@
desc = "'BLUE HONK!' "
icon_state = "blueclown"
item_state = "blueclown"
- item_color = "blueclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
mutantrace_variation = NONE
@@ -50,7 +44,6 @@
desc = "'GREEN HONK!' "
icon_state = "greenclown"
item_state = "greenclown"
- item_color = "greenclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
mutantrace_variation = NONE
@@ -60,7 +53,6 @@
desc = "'YELLOW HONK!' "
icon_state = "yellowclown"
item_state = "yellowclown"
- item_color = "yellowclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
mutantrace_variation = NONE
@@ -70,7 +62,6 @@
desc = "'PURPLE HONK!' "
icon_state = "purpleclown"
item_state = "purpleclown"
- item_color = "purpleclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
mutantrace_variation = NONE
@@ -80,7 +71,6 @@
desc = "'ORANGE HONK!' "
icon_state = "orangeclown"
item_state = "orangeclown"
- item_color = "orangeclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
mutantrace_variation = NONE
@@ -90,7 +80,6 @@
desc = "'R A I N B O W HONK!' "
icon_state = "rainbowclown"
item_state = "rainbowclown"
- item_color = "rainbowclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
mutantrace_variation = NONE
@@ -99,7 +88,6 @@
name = "jester suit"
desc = "A jolly dress, well suited to entertain your master, nuncle."
icon_state = "jester"
- item_color = "jester"
can_adjust = FALSE
/obj/item/clothing/under/rank/civilian/clown/jester/alt
@@ -110,7 +98,6 @@
desc = "It makes you look HONKable!"
icon_state = "sexyclown"
item_state = "sexyclown"
- item_color = "sexyclown"
can_adjust = FALSE
/obj/item/clothing/under/rank/civilian/clown/Initialize()
diff --git a/code/modules/clothing/under/jobs/civilian/curator.dm b/code/modules/clothing/under/jobs/civilian/curator.dm
index c02cc4b710..792aa64a2b 100644
--- a/code/modules/clothing/under/jobs/civilian/curator.dm
+++ b/code/modules/clothing/under/jobs/civilian/curator.dm
@@ -3,17 +3,12 @@
desc = "It's very... sensible."
icon_state = "red_suit"
item_state = "red_suit"
- item_color = "red_suit"
can_adjust = FALSE
/obj/item/clothing/under/rank/civilian/curator/skirt
name = "sensible suitskirt"
- desc = "It's very... sensible."
icon_state = "red_suit_skirt"
- item_state = "red_suit"
- item_color = "red_suit_skirt"
body_parts_covered = CHEST|GROIN|ARMS
- can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/civilian/curator/treasure_hunter
@@ -21,14 +16,12 @@
desc = "A rugged uniform suitable for treasure hunting."
icon_state = "curator"
item_state = "curator"
- item_color = "curator"
/obj/item/clothing/under/rank/civilian/curator/nasa
name = "\improper NASA jumpsuit"
desc = "It has a NASA logo on it and is made of space-proofed materials."
icon_state = "black"
item_state = "bl_suit"
- item_color = "black"
w_class = WEIGHT_CLASS_BULKY
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.02
@@ -37,5 +30,4 @@
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
- can_adjust = FALSE
resistance_flags = NONE
diff --git a/code/modules/clothing/under/jobs/command.dm b/code/modules/clothing/under/jobs/command.dm
index 30560e76b4..885ffaed7a 100644
--- a/code/modules/clothing/under/jobs/command.dm
+++ b/code/modules/clothing/under/jobs/command.dm
@@ -3,7 +3,6 @@
name = "captain's jumpsuit"
icon_state = "captain"
item_state = "b_suit"
- item_color = "captain"
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
@@ -12,7 +11,6 @@
desc = "It's a blue jumpskirt with some gold markings denoting the rank of \"Captain\"."
icon_state = "captain_skirt"
item_state = "b_suit"
- item_color = "captain_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -22,7 +20,6 @@
desc = "A green suit and yellow necktie. Exemplifies authority."
icon_state = "green_suit"
item_state = "dg_suit"
- item_color = "green_suit"
can_adjust = FALSE
/obj/item/clothing/under/rank/captain/suit/skirt
@@ -30,7 +27,6 @@
desc = "A green suitskirt and yellow necktie. Exemplifies authority."
icon_state = "green_suit_skirt"
item_state = "dg_suit"
- item_color = "green_suit_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -40,7 +36,6 @@
desc = "A captain's luxury-wear, for special occasions."
icon_state = "captain_parade"
item_state = "by_suit"
- item_color = "captain_parade"
can_adjust = FALSE
/obj/item/clothing/under/rank/captain/femformal
@@ -48,6 +43,5 @@
desc = "An ironically skimpy blue dress with gold markings denoting the rank of \"Captain\"."
icon_state = "lewdcap"
item_state = "lewdcap"
- item_color = "lewdcap"
can_adjust = FALSE
mutantrace_variation = NONE
diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm
index ae0ded5888..365d90e188 100644
--- a/code/modules/clothing/under/jobs/engineering.dm
+++ b/code/modules/clothing/under/jobs/engineering.dm
@@ -4,16 +4,14 @@
name = "chief engineer's jumpsuit"
icon_state = "chiefengineer"
item_state = "gy_suit"
- item_color = "chief"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 80, "acid" = 40)
resistance_flags = NONE
/obj/item/clothing/under/rank/engineering/chief_engineer/skirt
name = "chief engineer's jumpskirt"
desc = "It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of \"Chief Engineer\". It has minor radiation shielding."
- icon_state = "chief_skirt"
+ icon_state = "chiefengineer_skirt"
item_state = "gy_suit"
- item_color = "chief_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -23,7 +21,6 @@
name = "atmospheric technician's jumpsuit"
icon_state = "atmos"
item_state = "atmos_suit"
- item_color = "atmos"
resistance_flags = NONE
/obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt
@@ -31,7 +28,6 @@
desc = "It's a jumpskirt worn by atmospheric technicians."
icon_state = "atmos_skirt"
item_state = "atmos_suit"
- item_color = "atmos_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -41,7 +37,6 @@
name = "engineer's jumpsuit"
icon_state = "engine"
item_state = "engi_suit"
- item_color = "engine"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 60, "acid" = 20)
resistance_flags = NONE
@@ -50,7 +45,6 @@
desc = "A high visibility jumpsuit made from heat and radiation resistant materials."
icon_state = "hazard"
item_state = "suit-orange"
- item_color = "hazard"
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/engineering/engineer/skirt
@@ -58,7 +52,6 @@
desc = "It's an orange high visibility jumpskirt worn by engineers."
icon_state = "engine_skirt"
item_state = "engi_suit"
- item_color = "engine_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
diff --git a/code/modules/clothing/under/jobs/medical.dm b/code/modules/clothing/under/jobs/medical.dm
index 0c2b885bec..d5f4f1f5f9 100644
--- a/code/modules/clothing/under/jobs/medical.dm
+++ b/code/modules/clothing/under/jobs/medical.dm
@@ -3,7 +3,6 @@
name = "chief medical officer's jumpsuit"
icon_state = "cmo"
item_state = "w_suit"
- item_color = "cmo"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
@@ -12,7 +11,6 @@
desc = "It's a jumpskirt worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection."
icon_state = "cmo_skirt"
item_state = "w_suit"
- item_color = "cmo_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -20,11 +18,10 @@
/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck
desc = "It's a turtleneck worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection, for an officer with a superior sense of style and practicality."
name = "chief medical officer's turtleneck"
- alternate_worn_icon = 'modular_citadel/icons/mob/clothing/turtlenecks.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/clothing/turtlenecks.dmi'
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
icon_state = "cmoturtle"
item_state = "w_suit"
- item_color = "cmoturtle"
alt_covers_chest = TRUE
mutantrace_variation = NONE
@@ -33,16 +30,14 @@
name = "geneticist's jumpsuit"
icon_state = "genetics"
item_state = "w_suit"
- item_color = "geneticswhite"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/medical/geneticist/skirt
name = "geneticist's jumpskirt"
desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it."
- icon_state = "geneticswhite_skirt"
+ icon_state = "genetics_skirt"
item_state = "w_suit"
- item_color = "geneticswhite_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -52,16 +47,14 @@
name = "virologist's jumpsuit"
icon_state = "virology"
item_state = "w_suit"
- item_color = "virologywhite"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/medical/virologist/skirt
name = "virologist's jumpskirt"
desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it."
- icon_state = "virologywhite_skirt"
+ icon_state = "virology_skirt"
item_state = "w_suit"
- item_color = "virologywhite_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -71,16 +64,14 @@
name = "chemist's jumpsuit"
icon_state = "chemistry"
item_state = "w_suit"
- item_color = "chemistrywhite"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 65)
/obj/item/clothing/under/rank/medical/chemist/skirt
name = "chemist's jumpskirt"
desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it."
- icon_state = "chemistrywhite_skirt"
+ icon_state = "chemistry_skirt"
item_state = "w_suit"
- item_color = "chemistrywhite_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -90,7 +81,6 @@
name = "paramedic jumpsuit"
icon_state = "paramedic-dark"
item_state = "w_suit"
- item_color = "paramedic-dark"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
can_adjust = FALSE
@@ -98,7 +88,6 @@
/obj/item/clothing/under/rank/medical/paramedic/light
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic."
icon_state = "paramedic-light"
- item_color = "paramedic-light"
can_adjust = TRUE
/obj/item/clothing/under/rank/medical/paramedic/skirt
@@ -106,7 +95,6 @@
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a white cross on the chest denoting that the wearer is a trained paramedic."
icon_state = "paramedic-dark_skirt"
item_state = "w_suit"
- item_color = "paramedic-dark_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -114,14 +102,12 @@
/obj/item/clothing/under/rank/medical/paramedic/skirt/light
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic."
icon_state = "paramedic_skirt"
- item_color = "paramedic_skirt"
/obj/item/clothing/under/rank/medical/doctor/nurse
desc = "It's a jumpsuit commonly worn by nursing staff in the medical department."
name = "nurse's suit"
icon_state = "nursesuit"
item_state = "w_suit"
- item_color = "nursesuit"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
body_parts_covered = CHEST|GROIN|ARMS
@@ -133,7 +119,6 @@
name = "medical doctor's jumpsuit"
icon_state = "medical"
item_state = "w_suit"
- item_color = "medical"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
@@ -141,21 +126,18 @@
name = "blue medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
icon_state = "scrubsblue"
- item_color = "scrubsblue"
can_adjust = FALSE
/obj/item/clothing/under/rank/medical/doctor/green
name = "green medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
icon_state = "scrubsgreen"
- item_color = "scrubsgreen"
can_adjust = FALSE
/obj/item/clothing/under/rank/medical/doctor/purple
name = "purple medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
icon_state = "scrubspurple"
- item_color = "scrubspurple"
can_adjust = FALSE
/obj/item/clothing/under/rank/medical/doctor/skirt
@@ -163,7 +145,6 @@
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
icon_state = "medical_skirt"
item_state = "w_suit"
- item_color = "medical_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
- fitted = FEMALE_UNIFORM_TOP
\ No newline at end of file
+ fitted = FEMALE_UNIFORM_TOP
diff --git a/code/modules/clothing/under/jobs/rnd.dm b/code/modules/clothing/under/jobs/rnd.dm
index 142cb8d8b1..71c5766849 100644
--- a/code/modules/clothing/under/jobs/rnd.dm
+++ b/code/modules/clothing/under/jobs/rnd.dm
@@ -3,7 +3,6 @@
name = "research director's vest suit"
icon_state = "director"
item_state = "lb_suit"
- item_color = "director"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 35)
can_adjust = FALSE
@@ -12,9 +11,7 @@
desc = "It's a suitskirt worn by those with the know-how to achieve the position of \"Research Director\". Its fabric provides minor protection from biological contaminants."
icon_state = "director_skirt"
item_state = "lb_suit"
- item_color = "director_skirt"
body_parts_covered = CHEST|GROIN|ARMS
- can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/rnd/research_director/alt
@@ -22,7 +19,6 @@
name = "research director's tan suit"
icon_state = "rdwhimsy"
item_state = "rdwhimsy"
- item_color = "rdwhimsy"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -32,7 +28,6 @@
desc = "Maybe you'll engineer your own half-man, half-pig creature some day. Its fabric provides minor protection from biological contaminants."
icon_state = "rdwhimsy_skirt"
item_state = "rdwhimsy"
- item_color = "rdwhimsy_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -42,7 +37,6 @@
name = "research director's turtleneck"
icon_state = "rdturtle"
item_state = "p_suit"
- item_color = "rdturtle"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -52,7 +46,6 @@
desc = "A dark purple turtleneck and tan khaki skirt, for a director with a superior sense of style."
icon_state = "rdturtle_skirt"
item_state = "p_suit"
- item_color = "rdturtle_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -62,16 +55,14 @@
name = "scientist's jumpsuit"
icon_state = "toxins"
item_state = "w_suit"
- item_color = "toxinswhite"
permeability_coefficient = 0.5
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/rnd/scientist/skirt
name = "scientist's jumpskirt"
desc = "It's made of a special fiber that provides minor protection against explosives. It has markings that denote the wearer as a scientist."
- icon_state = "toxinswhite_skirt"
+ icon_state = "toxins_skirt"
item_state = "w_suit"
- item_color = "toxinswhite_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -81,7 +72,6 @@
name = "roboticist's jumpsuit"
icon_state = "robotics"
item_state = "robotics"
- item_color = "robotics"
resistance_flags = NONE
/obj/item/clothing/under/rank/rnd/roboticist/skirt
@@ -89,7 +79,6 @@
desc = "It's a slimming black with reinforced seams; great for industrial work."
icon_state = "robotics_skirt"
item_state = "robotics"
- item_color = "robotics_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 21e088f634..0d4b916610 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -8,32 +8,30 @@
/*
* Security
*/
+/obj/item/clothing/under/rank/security
+ strip_delay = 50
+ alt_covers_chest = TRUE
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
/obj/item/clothing/under/rank/security/officer
name = "security jumpsuit"
desc = "A tactical security jumpsuit for officers complete with Nanotrasen belt buckle."
icon_state = "rsecurity"
item_state = "r_suit"
- item_color = "rsecurity"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
- strip_delay = 50
- alt_covers_chest = TRUE
- sensor_mode = SENSOR_COORDS
- random_sensor = FALSE
/obj/item/clothing/under/rank/security/officer/grey
name = "grey security jumpsuit"
desc = "A tactical relic of years past before Nanotrasen decided it was cheaper to dye the suits red instead of washing out the blood."
icon_state = "security"
item_state = "gy_suit"
- item_color = "security"
/obj/item/clothing/under/rank/security/officer/skirt
name = "security jumpskirt"
desc = "A \"tactical\" security jumpsuit with the legs replaced by a skirt."
icon_state = "secskirt"
item_state = "r_suit"
- item_color = "secskirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE //you know now that i think of it if you adjust the skirt and the sprite disappears isn't that just like flashing everyone
fitted = FEMALE_UNIFORM_TOP
@@ -43,7 +41,6 @@
desc = "The latest in fashionable security outfits."
icon_state = "officerblueclothes"
item_state = "officerblueclothes"
- item_color = "officerblueclothes"
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/security/officer/blueshirt
@@ -51,7 +48,6 @@
desc = "I'm a little busy right now, Calhoun."
icon_state = "blueshift"
item_state = "blueshift"
- item_color = "blueshift"
can_adjust = FALSE
/obj/item/clothing/under/rank/security/officer/spacepol
@@ -59,7 +55,6 @@
desc = "Space not controlled by megacorporations, planets, or pirates is under the jurisdiction of Spacepol."
icon_state = "spacepol"
item_state = "spacepol"
- item_color = "spacepol"
can_adjust = FALSE
/*
@@ -71,26 +66,19 @@
desc = "A formal security suit for officers complete with Nanotrasen belt buckle."
icon_state = "rwarden"
item_state = "r_suit"
- item_color = "rwarden"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
- strip_delay = 50
- alt_covers_chest = TRUE
- sensor_mode = 3
- random_sensor = FALSE
/obj/item/clothing/under/rank/security/warden/grey
name = "grey security suit"
desc = "A formal relic of years past before Nanotrasen decided it was cheaper to dye the suits red instead of washing out the blood."
icon_state = "warden"
item_state = "gy_suit"
- item_color = "warden"
/obj/item/clothing/under/rank/security/warden/skirt
name = "warden's suitskirt"
desc = "A formal security suitskirt for officers complete with Nanotrasen belt buckle."
icon_state = "rwarden_skirt"
item_state = "r_suit"
- item_color = "rwarden_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -100,7 +88,6 @@
name = "warden's formal uniform"
icon_state = "wardenblueclothes"
item_state = "wardenblueclothes"
- item_color = "wardenblueclothes"
alt_covers_chest = TRUE
/*
@@ -112,19 +99,13 @@
desc = "Someone who wears this means business."
icon_state = "detective"
item_state = "det"
- item_color = "detective"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
- strip_delay = 50
- alt_covers_chest = TRUE
- sensor_mode = 3
- random_sensor = FALSE
/obj/item/clothing/under/rank/security/detective/skirt
name = "detective's suitskirt"
desc = "Someone who wears this means business."
icon_state = "detective_skirt"
item_state = "det"
- item_color = "detective_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -134,15 +115,12 @@
desc = "A hard-boiled private investigator's grey suit, complete with tie clip."
icon_state = "greydet"
item_state = "greydet"
- item_color = "greydet"
- alt_covers_chest = TRUE
/obj/item/clothing/under/rank/security/detective/grey/skirt
name = "noir suitskirt"
desc = "A hard-boiled private investigator's grey suitskirt, complete with tie clip."
icon_state = "greydet_skirt"
item_state = "greydet"
- item_color = "greydet_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -156,19 +134,14 @@
desc = "A security jumpsuit decorated for those few with the dedication to achieve the position of Head of Security."
icon_state = "rhos"
item_state = "r_suit"
- item_color = "rhos"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
strip_delay = 60
- alt_covers_chest = TRUE
- sensor_mode = 3
- random_sensor = FALSE
/obj/item/clothing/under/rank/security/head_of_security/skirt
name = "head of security's jumpskirt"
desc = "A security jumpskirt decorated for those few with the dedication to achieve the position of Head of Security."
icon_state = "rhos_skirt"
item_state = "r_suit"
- item_color = "rhos_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -178,21 +151,18 @@
desc = "There are old men, and there are bold men, but there are very few old, bold men."
icon_state = "hos"
item_state = "gy_suit"
- item_color = "hos"
/obj/item/clothing/under/rank/security/head_of_security/alt
name = "head of security's turtleneck"
desc = "A stylish alternative to the normal head of security jumpsuit, complete with tactical pants."
icon_state = "hosalt"
item_state = "bl_suit"
- item_color = "hosalt"
/obj/item/clothing/under/rank/security/head_of_security/alt/skirt
name = "head of security's turtleneck skirt"
desc = "A stylish alternative to the normal head of security jumpsuit, complete with a tactical skirt."
icon_state = "hosalt_skirt"
item_state = "bl_suit"
- item_color = "hosalt_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -202,15 +172,12 @@
name = "head of security's formal uniform"
icon_state = "hosblueclothes"
item_state = "hosblueclothes"
- item_color = "hosblueclothes"
- alt_covers_chest = TRUE
/obj/item/clothing/under/rank/security/head_of_security/parade
name = "head of security's parade uniform"
desc = "A male head of security's luxury-wear, for special occasions."
icon_state = "hos_parade_male"
item_state = "r_suit"
- item_color = "hos_parade_male"
can_adjust = FALSE
/obj/item/clothing/under/rank/security/head_of_security/parade/female
@@ -218,6 +185,4 @@
desc = "A female head of security's luxury-wear, for special occasions."
icon_state = "hos_parade_fem"
item_state = "r_suit"
- item_color = "hos_parade_fem"
fitted = FEMALE_UNIFORM_TOP
- can_adjust = FALSE
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index fb5ff7b0f4..d475ca8100 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -2,7 +2,6 @@
name = "red pj's"
desc = "Sleepwear."
icon_state = "red_pyjamas"
- item_color = "red_pyjamas"
item_state = "w_suit"
can_adjust = FALSE
@@ -10,7 +9,6 @@
name = "blue pj's"
desc = "Sleepwear."
icon_state = "blue_pyjamas"
- item_color = "blue_pyjamas"
item_state = "w_suit"
can_adjust = FALSE
@@ -19,7 +17,6 @@
desc = "Motorcycle not included."
icon_state = "ek"
item_state = "ek"
- item_color = "ek"
can_adjust = FALSE
/obj/item/clothing/under/rank/prisoner
@@ -27,7 +24,6 @@
desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
icon_state = "prisoner"
item_state = "o_suit"
- item_color = "prisoner"
has_sensor = LOCKED_SENSORS
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
@@ -37,7 +33,6 @@
desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
icon_state = "prisoner_skirt"
item_state = "o_suit"
- item_color = "prisoner_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -47,21 +42,18 @@
desc = "'Special delivery!' "
icon_state = "mailman"
item_state = "b_suit"
- item_color = "mailman"
/obj/item/clothing/under/misc/psyche
name = "psychedelic jumpsuit"
desc = "Groovy!"
icon_state = "psyche"
item_state = "p_suit"
- item_color = "psyche"
/obj/item/clothing/under/misc/vice_officer
name = "vice officer's jumpsuit"
desc = "It's the standard issue pretty-boy outfit, as seen on Holo-Vision."
icon_state = "vice"
item_state = "gy_suit"
- item_color = "vice"
can_adjust = FALSE
@@ -69,7 +61,6 @@
name = "administrative cybernetic jumpsuit"
icon_state = "syndicate"
item_state = "bl_suit"
- item_color = "syndicate"
desc = "A cybernetically enhanced jumpsuit used for administrative duties."
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
@@ -87,7 +78,6 @@
desc = "Traditional burial garments from the early 22nd century."
icon_state = "burial"
item_state = "burial"
- item_color = "burial"
has_sensor = NO_SENSORS
/obj/item/clothing/under/misc/overalls
@@ -95,7 +85,6 @@
desc = "A set of durable overalls for getting the job done."
icon_state = "overalls"
item_state = "lb_suit"
- item_color = "overalls"
can_adjust = FALSE
/obj/item/clothing/under/misc/assistantformal
@@ -103,24 +92,21 @@
desc = "An assistant's formal-wear. Why an assistant needs formal-wear is still unknown."
icon_state = "assistant_formal"
item_state = "gy_suit"
- item_color = "assistant_formal"
can_adjust = FALSE
/obj/item/clothing/under/misc/staffassistant
name = "staff assistant's jumpsuit"
desc = "It's a generic grey jumpsuit. That's about what assistants are worth, anyway."
icon = 'goon/icons/obj/item_js_rank.dmi'
- alternate_worn_icon = 'goon/icons/mob/worn_js_rank.dmi'
+ mob_overlay_icon = 'goon/icons/mob/worn_js_rank.dmi'
icon_state = "assistant"
item_state = "gy_suit"
- item_color = "assistant"
mutantrace_variation = NONE
/obj/item/clothing/under/croptop
name = "crop top"
desc = "We've saved money by giving you half a shirt!"
icon_state = "croptop"
- item_color = "croptop"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -130,7 +116,6 @@
desc = "A special containment suit that allows plasma-based lifeforms to exist safely in an oxygenated environment, and automatically extinguishes them in a crisis. Despite being airtight, it's not spaceworthy."
icon_state = "plasmaman"
item_state = "plasmaman"
- item_color = "plasmaman"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95)
slowdown = 1
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -170,7 +155,6 @@
to_chat(user, "You refill the suit's built-in extinguisher, using up the cartridge. ")
qdel(E)
return
- return
return
/obj/item/extinguisher_refill
@@ -192,7 +176,6 @@
desc = "A jumpsuit made from durathread, its resilient fibres provide some protection to the wearer."
icon_state = "durathread"
item_state = "durathread"
- item_color = "durathread"
can_adjust = TRUE
armor = list("melee" = 10, "laser" = 10, "fire" = 40, "acid" = 10, "bomb" = 5)
@@ -209,7 +192,6 @@
desc = "Cyka blyat."
icon_state = "squatteroutfit"
item_state = "squatteroutfit"
- item_color = "squatteroutfit"
can_adjust = FALSE
mutantrace_variation = NONE
@@ -218,7 +200,6 @@
desc = "Drop and give me dvadtsat!"
icon_state = "russobluecamo"
item_state = "russobluecamo"
- item_color = "russobluecamo"
can_adjust = FALSE
mutantrace_variation = NONE
@@ -227,7 +208,6 @@
desc = "What is the point of this, anyway?"
icon_state = "keyholesweater"
item_state = "keyholesweater"
- item_color = "keyholesweater"
can_adjust = FALSE
mutantrace_variation = NONE
@@ -235,7 +215,6 @@
name = "pink stripper outfit"
icon_state = "stripper_p"
item_state = "stripper_p"
- item_color = "stripper_p"
body_parts_covered = CHEST|GROIN
can_adjust = FALSE
@@ -243,13 +222,11 @@
name = "green stripper outfit"
icon_state = "stripper_g"
item_state = "stripper_g"
- item_color = "stripper_g"
/obj/item/clothing/under/misc/stripper/mankini
name = "pink mankini"
icon_state = "mankini"
item_state = "mankini"
- item_color = "mankini"
/obj/item/clothing/under/misc/corporateuniform
name = "corporate uniform"
@@ -263,76 +240,68 @@
name = "polychromic button-up shirt"
desc = "A fancy button-up shirt made with polychromic threads."
icon_state = "polysuit"
- item_color = "polysuit"
item_state = "sl_suit"
- hasprimary = TRUE
- hassecondary = TRUE
- hastertiary = TRUE
- primary_color = "#FFFFFF"
- secondary_color = "#353535"
- tertiary_color = "#353535"
mutantrace_variation = NONE
+/obj/item/clothing/under/misc/poly_shirt/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#FFFFFF", "#353535", "#353535"), 3)
+
/obj/item/clothing/under/misc/polyshorts
name = "polychromic shorts"
desc = "For ease of movement and style."
icon_state = "polyshorts"
- item_color = "polyshorts"
item_state = "rainbow"
- hasprimary = TRUE
- hassecondary = TRUE
- hastertiary = TRUE
- primary_color = "#353535"
- secondary_color = "#808080"
- tertiary_color = "#808080"
can_adjust = FALSE
body_parts_covered = CHEST|GROIN|ARMS
+/obj/item/clothing/under/misc/polyshorts/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#353535", "#808080", "#808080"), 3)
+
/obj/item/clothing/under/misc/polyjumpsuit
name = "polychromic tri-tone jumpsuit"
desc = "A fancy jumpsuit made with polychromic threads."
icon_state = "polyjump"
- item_color = "polyjump"
item_state = "rainbow"
- hasprimary = TRUE
- hassecondary = TRUE
- hastertiary = TRUE
- primary_color = "#FFFFFF"
- secondary_color = "#808080"
- tertiary_color = "#FF3535"
can_adjust = FALSE
mutantrace_variation = NONE
+/obj/item/clothing/under/misc/polyjumpsuit/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#FFFFFF", "#808080", "#353535"), 3)
+
/obj/item/clothing/under/misc/poly_bottomless
name = "polychromic bottomless shirt"
- desc = "Great for showing off your junk in dubious style."
+ desc = "Great for showing off your underwear in dubious style."
icon_state = "polybottomless"
- item_color = "polybottomless"
item_state = "rainbow"
- primary_color = "#808080"
- secondary_color = "#FF3535"
body_parts_covered = CHEST|ARMS //Because there's no bottom included
can_adjust = FALSE
mutantrace_variation = NONE
+/obj/item/clothing/under/misc/poly_bottomless/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#808080", "#FF3535"), 2)
+
/obj/item/clothing/under/misc/poly_tanktop
name = "polychromic tank top"
desc = "For those lazy summer days."
icon_state = "polyshimatank"
- item_color = "polyshimatank"
item_state = "rainbow"
- primary_color = "#808080"
- secondary_color = "#FFFFFF"
- tertiary_color = "#8CC6FF"
body_parts_covered = CHEST|GROIN
can_adjust = FALSE
mutantrace_variation = NONE
+ var/list/poly_states = 3
+ var/list/poly_colors = list("#808080", "#FFFFFF", "#8CC6FF")
+
+/obj/item/clothing/under/misc/poly_tanktop/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, poly_colors, poly_states)
/obj/item/clothing/under/misc/poly_tanktop/female
name = "polychromic feminine tank top"
desc = "Great for showing off your chest in style. Not recommended for males."
icon_state = "polyfemtankpantsu"
- item_color = "polyfemtankpantsu"
- hastertiary = FALSE
- primary_color = "#808080"
- secondary_color = "#FF3535"
+ poly_states = 2
+ poly_colors = list("#808080", "#FF3535")
diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm
index 4b0c92af88..d0048326ff 100644
--- a/code/modules/clothing/under/pants.dm
+++ b/code/modules/clothing/under/pants.dm
@@ -8,101 +8,84 @@
name = "classic jeans"
desc = "You feel cooler already."
icon_state = "jeansclassic"
- item_color = "jeansclassic"
/obj/item/clothing/under/pants/mustangjeans
name = "Must Hang jeans"
desc = "Made in the finest space jeans factory this side of Alpha Centauri."
icon_state = "jeansmustang"
- item_color = "jeansmustang"
/obj/item/clothing/under/pants/blackjeans
name = "black jeans"
desc = "Only for those who can pull it off."
icon_state = "jeansblack"
- item_color = "jeansblack"
/obj/item/clothing/under/pants/youngfolksjeans
name = "Young Folks jeans"
desc = "For those tired of boring old jeans. Relive the passion of your youth!"
icon_state = "jeansyoungfolks"
- item_color = "jeansyoungfolks"
/obj/item/clothing/under/pants/white
name = "white pants"
desc = "Plain white pants. Boring."
icon_state = "whitepants"
- item_color = "whitepants"
/obj/item/clothing/under/pants/red
name = "red pants"
desc = "Bright red pants. Overflowing with personality."
icon_state = "redpants"
- item_color = "redpants"
/obj/item/clothing/under/pants/black
name = "black pants"
desc = "These pants are dark, like your soul."
icon_state = "blackpants"
- item_color = "blackpants"
/obj/item/clothing/under/pants/tan
name = "tan pants"
desc = "Some tan pants. You look like a white collar worker with these on."
icon_state = "tanpants"
- item_color = "tanpants"
/obj/item/clothing/under/pants/track
name = "track pants"
desc = "A pair of track pants, for the athletic."
icon_state = "trackpants"
- item_color = "trackpants"
/obj/item/clothing/under/pants/jeans
name = "jeans"
desc = "A nondescript pair of tough blue jeans."
icon_state = "jeans"
- item_color = "jeans"
/obj/item/clothing/under/pants/khaki
name = "khaki pants"
desc = "A pair of dust beige khaki pants."
icon_state = "khaki"
- item_color = "khaki"
/obj/item/clothing/under/pants/camo
name = "camo pants"
desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station."
icon_state = "camopants"
- item_color = "camopants"
/obj/item/clothing/under/pants/jeanripped
name = "ripped jeans"
desc = "If you're wearing this you're poor or a rebel"
icon_state = "jean_ripped"
- item_color = "jean_ripped"
/obj/item/clothing/under/pants/jeanshort
name = "jean shorts"
desc = "These are really just jeans cut in half"
icon_state = "jean_shorts"
- item_color = "jean_shorts"
/obj/item/clothing/under/pants/denimskirt
name = "denim skirt"
desc = "These are really just a jean leg hole cut from a pair"
icon_state = "denim_skirt"
- item_color = "denim_skirt"
/obj/item/clothing/under/pants/chaps
name = "black chaps"
body_parts_covered = LEGS
desc = "Yeehaw"
icon_state = "chaps"
- item_color = "chaps"
/obj/item/clothing/under/pants/yoga
name = "yoga pants"
desc = "Comfy!"
icon_state = "yoga_pants"
- item_color = "yoga_pants"
diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm
index b66df87347..f61a41e4c3 100644
--- a/code/modules/clothing/under/shorts.dm
+++ b/code/modules/clothing/under/shorts.dm
@@ -9,53 +9,44 @@
/obj/item/clothing/under/shorts/red
name = "red athletic shorts"
icon_state = "redshorts"
- item_color = "redshorts"
/obj/item/clothing/under/shorts/green
name = "green athletic shorts"
icon_state = "greenshorts"
- item_color = "greenshorts"
/obj/item/clothing/under/shorts/blue
name = "blue athletic shorts"
icon_state = "blueshorts"
- item_color = "blueshorts"
/obj/item/clothing/under/shorts/black
name = "black athletic shorts"
icon_state = "blackshorts"
- item_color = "blackshorts"
/obj/item/clothing/under/shorts/grey
name = "grey athletic shorts"
icon_state = "greyshorts"
- item_color = "greyshorts"
/obj/item/clothing/under/shorts/purple
name = "purple athletic shorts"
icon_state = "purpleshorts"
- item_color = "purpleshorts"
/obj/item/clothing/under/shorts/polychromic
name = "polychromic athletic shorts"
desc = "95% Polychrome, 5% Spandex!"
icon_state = "polyshortpants"
- item_color = "polyshortpants"
item_state = "rainbow"
- hasprimary = TRUE
- hassecondary = TRUE
- primary_color = "#FFFFFF"
- secondary_color = "#F08080"
mutantrace_variation = NONE
+ var/list/poly_colors = list("#FFFFFF", "#F08080")
+
+/obj/item/clothing/under/shorts/polychromic/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, poly_colors, 2)
/obj/item/clothing/under/shorts/polychromic/pantsu
name = "polychromic panties"
desc = "Topless striped panties. Now with 120% more polychrome!"
icon_state = "polypantsu"
- item_color = "polypantsu"
item_state = "rainbow"
- hastertiary = FALSE
- primary_color = "#FFFFFF"
- secondary_color = "#8CC6FF"
body_parts_covered = GROIN
mutantrace_variation = NONE
+ poly_colors = list("#FFFFFF", "#8CC6FF")
diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm
index 02c2b06546..fa2c9eed71 100644
--- a/code/modules/clothing/under/skirt_dress.dm
+++ b/code/modules/clothing/under/skirt_dress.dm
@@ -3,7 +3,6 @@
name = "black skirt"
desc = "A black skirt, very fancy!"
icon_state = "blackskirt"
- item_color = "blackskirt"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -12,7 +11,6 @@
name = "blue skirt"
desc = "A blue, casual skirt."
icon_state = "blueskirt"
- item_color = "blueskirt"
item_state = "b_suit"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
@@ -22,7 +20,6 @@
name = "red skirt"
desc = "A red, casual skirt."
icon_state = "redskirt"
- item_color = "redskirt"
item_state = "r_suit"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
@@ -32,7 +29,6 @@
name = "purple skirt"
desc = "A purple, casual skirt."
icon_state = "purpleskirt"
- item_color = "purpleskirt"
item_state = "p_suit"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
@@ -43,7 +39,6 @@
desc = "Makes you want to frolic in a field of daisies."
icon_state = "sundress"
item_state = "sundress"
- item_color = "sundress"
body_parts_covered = CHEST|GROIN
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -51,13 +46,11 @@
/obj/item/clothing/under/dress/sundress/white
name = "white sundress"
icon_state = "sundress_white"
- item_color = "sundress_white"
/obj/item/clothing/under/dress/green
name = "green dress"
desc = "A tight green dress"
icon_state = "dress_green"
- item_color = "dress_green"
body_parts_covered = CHEST|GROIN
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -66,7 +59,6 @@
name = "pink dress"
desc = "A tight pink dress"
icon_state = "dress_pink"
- item_color = "dress_pink"
body_parts_covered = CHEST|GROIN
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -76,7 +68,6 @@
desc = "Filled with Latin fire."
icon_state = "black_tango"
item_state = "wcoat"
- item_color = "black_tango"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -85,7 +76,6 @@
desc = "Filled with Western fire."
icon_state = "western_bustle"
item_state = "wcoat"
- item_color = "western_bustle"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -94,7 +84,6 @@
desc = "Filled with Latin fire."
icon_state = "flamenco"
item_state = "wcoat"
- item_color = "flamenco"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -103,7 +92,6 @@
desc = "Fashion in space."
icon_state = "striped_dress"
item_state = "stripeddress"
- item_color = "striped_dress"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_FULL
can_adjust = FALSE
@@ -113,7 +101,6 @@
desc = "Formal wear for a leading lady."
icon_state = "sailor_dress"
item_state = "sailordress"
- item_color = "sailor_dress"
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -123,7 +110,6 @@
desc = "Lovely dress."
icon_state = "flower_dress"
item_state = "sailordress"
- item_color = "flower_dress"
body_parts_covered = CHEST|GROIN|LEGS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -132,7 +118,6 @@
name = "swept skirt"
desc = "Formal skirt."
icon_state = "skirt_swept"
- item_color = "skirt_swept"
body_parts_covered = GROIN
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -141,7 +126,6 @@
name = "black corset"
desc = "Nanotrasen is not resposible for any organ damage."
icon_state = "corset"
- item_color = "corset"
body_parts_covered = CHEST|GROIN
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -151,7 +135,6 @@
desc = "Fancy dress for space bar singers."
icon_state = "red_evening_gown"
item_state = "redeveninggown"
- item_color = "red_evening_gown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
@@ -160,7 +143,6 @@
desc = "A preppy red skirt with a white blouse."
icon_state = "plaid_red"
item_state = "plaid_red"
- item_color = "plaid_red"
fitted = FEMALE_UNIFORM_TOP
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -170,7 +152,6 @@
desc = "A preppy blue skirt with a white blouse."
icon_state = "plaid_blue"
item_state = "plaid_blue"
- item_color = "plaid_blue"
fitted = FEMALE_UNIFORM_TOP
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -180,7 +161,6 @@
desc = "A preppy purple skirt with a white blouse."
icon_state = "plaid_purple"
item_state = "plaid_purple"
- item_color = "plaid_purple"
fitted = FEMALE_UNIFORM_TOP
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -190,7 +170,6 @@
desc = "A preppy green skirt with a white blouse."
icon_state = "plaid_green"
item_state = "plaid_green"
- item_color = "plaid_green"
fitted = FEMALE_UNIFORM_TOP
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -200,7 +179,6 @@
desc = "A white wedding gown made from the finest silk."
icon_state = "bride_white"
item_state = "bride_white"
- item_color = "bride_white"
can_adjust = FALSE
mutantrace_variation = NONE
@@ -209,51 +187,42 @@
desc = "A big and puffy orange dress."
icon_state = "bride_orange"
item_state = "bride_orange"
- item_color = "bride_orange"
/obj/item/clothing/under/dress/wedding/purple
name = "purple wedding dress"
desc = "A big and puffy purple dress."
icon_state = "bride_purple"
item_state = "bride_purple"
- item_color = "bride_purple"
/obj/item/clothing/under/dress/wedding/blue
name = "blue wedding dress"
desc = "A big and puffy blue dress."
icon_state = "bride_blue"
item_state = "bride_blue"
- item_color = "bride_blue"
/obj/item/clothing/under/dress/wedding/red
name = "red wedding dress"
desc = "A big and puffy red dress."
icon_state = "bride_red"
item_state = "bride_red"
- item_color = "bride_red"
/obj/item/clothing/under/dress/skirt/polychromic
name = "polychromic skirt"
desc = "A fancy skirt made with polychromic threads."
icon_state = "polyskirt"
- item_color = "polyskirt"
item_state = "rainbow"
- hasprimary = TRUE
- hassecondary = TRUE
- hastertiary = TRUE
- primary_color = "#FFFFFF"
- secondary_color = "#F08080"
- tertiary_color = "#808080"
mutantrace_variation = NONE
+ var/list/poly_colors = list("#FFFFFF", "#F08080", "#808080")
+
+/obj/item/clothing/under/dress/skirt/polychromic/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, poly_colors, 3)
/obj/item/clothing/under/dress/skirt/polychromic/pleated
name = "polychromic pleated skirt"
desc = "A magnificent pleated skirt complements the woolen polychromatic sweater."
icon_state = "polypleat"
- item_color = "polypleat"
item_state = "rainbow"
- primary_color = "#8CC6FF"
- secondary_color = "#808080"
- tertiary_color = "#FF3535"
body_parts_covered = CHEST|GROIN|ARMS
mutantrace_variation = NONE
+ poly_colors = list("#8CC6FF", "#808080", "#FF3535")
diff --git a/code/modules/clothing/under/suits.dm b/code/modules/clothing/under/suits.dm
index 1b99fbc549..087262dd1e 100644
--- a/code/modules/clothing/under/suits.dm
+++ b/code/modules/clothing/under/suits.dm
@@ -4,7 +4,6 @@
desc = "A white suit, suitable for an excellent host."
icon_state = "scratch"
item_state = "scratch"
- item_color = "scratch"
can_adjust = FALSE
/obj/item/clothing/under/suit/white_on_white/skirt
@@ -12,7 +11,6 @@
desc = "A white suitskirt, suitable for an excellent host."
icon_state = "white_suit_skirt"
item_state = "scratch"
- item_color = "white_suit_skirt"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
@@ -21,7 +19,6 @@
desc = "It's a very amish looking suit."
name = "amish suit"
icon_state = "sl_suit"
- item_color = "sl_suit"
can_adjust = FALSE
/obj/item/clothing/under/suit/waiter
@@ -29,7 +26,6 @@
desc = "It's a very smart uniform with a special pocket for tip."
icon_state = "waiter"
item_state = "waiter"
- item_color = "waiter"
can_adjust = FALSE
/obj/item/clothing/under/suit/black
@@ -37,7 +33,6 @@
desc = "A black suit and red tie. Very formal."
icon_state = "black_suit"
item_state = "bl_suit"
- item_color = "black_suit"
can_adjust = FALSE
/obj/item/clothing/under/suit/black_really
@@ -45,21 +40,18 @@
desc = "A formal black suit and red tie, intended for the station's finest."
icon_state = "really_black_suit"
item_state = "bl_suit"
- item_color = "really_black_suit"
/obj/item/clothing/under/suit/black/skirt
name = "executive suit"
desc = "A formal trouser suit for women, intended for the station's finest."
icon_state = "black_suit_fem"
item_state = "black_suit_fem"
- item_color = "black_suit_fem"
/obj/item/clothing/under/suit/green
name = "green suit"
desc = "A green suit and yellow necktie. Baller."
icon_state = "green_suit"
item_state = "dg_suit"
- item_color = "green_suit"
can_adjust = FALSE
/obj/item/clothing/under/suit/red
@@ -67,49 +59,42 @@
desc = "A red suit and blue tie. Somewhat formal."
icon_state = "red_suit"
item_state = "r_suit"
- item_color = "red_suit"
/obj/item/clothing/under/suit/charcoal
name = "charcoal suit"
desc = "A charcoal suit and red tie. Very professional."
icon_state = "charcoal_suit"
item_state = "charcoal_suit"
- item_color = "charcoal_suit"
/obj/item/clothing/under/suit/navy
name = "navy suit"
desc = "A navy suit and red tie, intended for the station's finest."
icon_state = "navy_suit"
item_state = "navy_suit"
- item_color = "navy_suit"
/obj/item/clothing/under/suit/burgundy
name = "burgundy suit"
desc = "A burgundy suit and black tie. Somewhat formal."
icon_state = "burgundy_suit"
item_state = "burgundy_suit"
- item_color = "burgundy_suit"
/obj/item/clothing/under/suit/checkered
name = "checkered suit"
desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?"
icon_state = "checkered_suit"
item_state = "checkered_suit"
- item_color = "checkered_suit"
/obj/item/clothing/under/suit/tan
name = "tan suit"
desc = "A tan suit with a yellow tie. Smart, but casual."
icon_state = "tan_suit"
item_state = "tan_suit"
- item_color = "tan_suit"
/obj/item/clothing/under/suit/white
name = "white suit"
desc = "A white suit and jacket with a blue shirt. You wanna play rough? OKAY!"
icon_state = "white_suit"
item_state = "white_suit"
- item_color = "white_suit"
/obj/item/clothing/under/suit/telegram
name = "telegram suit"
@@ -123,13 +108,10 @@
name = "polychromic suit"
desc = "For when you want to show off your horrible colour coordination skills."
icon_state = "polysuit"
- item_color = "polysuit"
item_state = "sl_suit"
- hasprimary = TRUE
- hassecondary = TRUE
- hastertiary = TRUE
- primary_color = "#FFFFFF"
- secondary_color = "#FFFFFF"
- tertiary_color = "#808080"
can_adjust = FALSE
mutantrace_variation = NONE
+
+/obj/item/clothing/under/suit/polychromic/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#FFFFFF", "#FFFFFF", "#808080"), 3)
diff --git a/code/modules/clothing/under/sweaters.dm b/code/modules/clothing/under/sweaters.dm
index 13f336bfbd..d8e8373d71 100644
--- a/code/modules/clothing/under/sweaters.dm
+++ b/code/modules/clothing/under/sweaters.dm
@@ -3,39 +3,33 @@
desc = "Why trade style for comfort? Now you can go commando down south and still be cozy up north."
icon_state = "bb_turtle"
item_state = "w_suit"
- item_color = "bb_turtle"
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = TRUE
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
- alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
mutantrace_variation = NONE
/obj/item/clothing/under/sweater/black
name = "black sweater"
icon_state = "bb_turtleblk"
item_state = "bl_suit"
- item_color = "bb_turtleblk"
/obj/item/clothing/under/sweater/purple
name = "purple sweater"
icon_state = "bb_turtlepur"
item_state = "p_suit"
- item_color = "bb_turtlepur"
/obj/item/clothing/under/sweater/green
name = "green sweater"
icon_state = "bb_turtlegrn"
item_state = "g_suit"
- item_color = "bb_turtlegrn"
/obj/item/clothing/under/sweater/red
name = "red sweater"
icon_state = "bb_turtlered"
item_state = "r_suit"
- item_color = "bb_turtlered"
/obj/item/clothing/under/sweater/blue
name = "blue sweater"
icon_state = "bb_turtleblu"
item_state = "b_suit"
- item_color = "bb_turtleblu"
diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm
index 676138d734..986196a212 100644
--- a/code/modules/clothing/under/syndicate.dm
+++ b/code/modules/clothing/under/syndicate.dm
@@ -3,7 +3,6 @@
desc = "A non-descript and slightly suspicious looking turtleneck with digital camouflage cargo pants."
icon_state = "syndicate"
item_state = "bl_suit"
- item_color = "syndicate"
has_sensor = NO_SENSORS
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
alt_covers_chest = TRUE
@@ -13,7 +12,6 @@
desc = "A non-descript and slightly suspicious looking skirtleneck."
icon_state = "syndicate_skirt"
item_state = "bl_suit"
- item_color = "syndicate_skirt"
has_sensor = NO_SENSORS
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
alt_covers_chest = TRUE
@@ -24,7 +22,6 @@
desc = "An insidious armored jumpsuit lined with Syndicate nanofibers and prototype platings, slightly resistant to most forms of damage, but is far too bulky to have anything attached to it. It still counts as stealth if there are no witnesses."
icon_state = "bloodred_pajamas"
item_state = "bl_suit"
- item_color = "bloodred_pajamas"
dummy_thick = TRUE
armor = list("melee" = 10, "bullet" = 10, "laser" = 10,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 50, "acid" = 40)
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -35,7 +32,6 @@
desc = "Do operatives dream of nuclear sheep?"
icon_state = "bloodred_pajamas"
item_state = "bl_suit"
- item_color = "bloodred_pajamas"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
/obj/item/clothing/under/syndicate/tacticool
@@ -43,7 +39,6 @@
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
icon_state = "tactifool"
item_state = "bl_suit"
- item_color = "tactifool"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
/obj/item/clothing/under/syndicate/tacticool/skirt
@@ -51,7 +46,6 @@
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
icon_state = "tactifool_skirt"
item_state = "bl_suit"
- item_color = "tactifool_skirt"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
fitted = FEMALE_UNIFORM_TOP
@@ -60,7 +54,6 @@
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
icon_state = "tactifool"
item_state = "bl_suit"
- item_color = "tactifool"
has_sensor = TRUE
mutantrace_variation = NONE
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
@@ -70,7 +63,6 @@
desc = "A double seamed tactical turtleneck disguised as a civilian grade silk suit. Intended for the most formal operator. The collar is really sharp."
icon_state = "really_black_suit"
item_state = "bl_suit"
- item_color = "black_suit"
can_adjust = FALSE
/obj/item/clothing/under/syndicate/camo
@@ -78,14 +70,12 @@
desc = "A green military camouflage uniform."
icon_state = "camogreen"
item_state = "g_suit"
- item_color = "camogreen"
can_adjust = FALSE
/obj/item/clothing/under/syndicate/soviet
name = "Ratnik 5 tracksuit"
desc = "Badly translated labels tell you to clean this in Vodka. Great for squatting in."
icon_state = "trackpants"
- item_color = "trackpants"
can_adjust = FALSE
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = NONE
@@ -94,14 +84,12 @@
name = "combat uniform"
desc = "With a suit lined with this many pockets, you are ready to operate."
icon_state = "syndicate_combat"
- item_color = "syndicate_combat"
can_adjust = FALSE
/obj/item/clothing/under/syndicate/rus_army
name = "advanced military tracksuit"
desc = "Military grade tracksuits for frontline squatting."
icon_state = "rus_under"
- item_color = "rus_under"
can_adjust = FALSE
armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = NONE
@@ -111,7 +99,6 @@
desc = "A major league outfit with the number faded number on the back. Seems rather robust for just a game..."
icon_state = "syndicatebaseball"
item_state = "syndicatebaseball"
- item_color = "syndicatebaseball"
has_sensor = NO_SENSORS
armor = list("melee" = 15, "bullet" = 5, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
alt_covers_chest = TRUE
diff --git a/code/modules/clothing/under/trek.dm b/code/modules/clothing/under/trek.dm
index 2fb33d1b19..a9709a4c95 100644
--- a/code/modules/clothing/under/trek.dm
+++ b/code/modules/clothing/under/trek.dm
@@ -13,14 +13,12 @@
name = "command uniform"
desc = "The uniform worn by command officers in the mid 2260s."
icon_state = "trek_command"
- item_color = "trek_command"
item_state = "y_suit"
/obj/item/clothing/under/trek/engsec
name = "operations uniform"
desc = "The uniform worn by operations officers of the mid 2260s. You feel strangely vulnerable just seeing this..."
icon_state = "trek_engsec"
- item_color = "trek_engsec"
item_state = "r_suit"
strip_delay = 50
@@ -28,7 +26,6 @@
name = "medsci uniform"
desc = "The uniform worn by medsci officers in the mid 2260s."
icon_state = "trek_medsci"
- item_color = "trek_medsci"
item_state = "b_suit"
permeability_coefficient = 0.50
@@ -37,38 +34,32 @@
/obj/item/clothing/under/trek/command/next
desc = "The uniform worn by command officers. This one's from the mid 2360s."
icon_state = "trek_next_command"
- item_color = "trek_next_command"
item_state = "r_suit"
/obj/item/clothing/under/trek/engsec/next
desc = "The uniform worn by operation officers. This one's from the mid 2360s."
icon_state = "trek_next_engsec"
- item_color = "trek_next_engsec"
item_state = "y_suit"
/obj/item/clothing/under/trek/medsci/next
desc = "The uniform worn by medsci officers. This one's from the mid 2360s."
icon_state = "trek_next_medsci"
- item_color = "trek_next_medsci"
//ENT
/obj/item/clothing/under/trek/command/ent
desc = "The uniform worn by command officers of the 2140s."
icon_state = "trek_ent_command"
- item_color = "trek_ent_command"
item_state = "bl_suit"
/obj/item/clothing/under/trek/engsec/ent
desc = "The uniform worn by operations officers of the 2140s."
icon_state = "trek_ent_engsec"
- item_color = "trek_ent_engsec"
item_state = "bl_suit"
/obj/item/clothing/under/trek/medsci/ent
desc = "The uniform worn by medsci officers of the 2140s."
icon_state = "trek_ent_medsci"
- item_color = "trek_ent_medsci"
item_state = "bl_suit"
@@ -111,5 +102,4 @@
name = "french marshall's uniform"
desc = "Something about it feels off..."
icon_state = "trek_Q"
- item_color = "trek_Q"
item_state = "r_suit"
diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm
index 1a303ec4bc..8fe68f509b 100644
--- a/code/modules/events/sentience.dm
+++ b/code/modules/events/sentience.dm
@@ -59,7 +59,7 @@
SA.del_on_death = FALSE
spawned_mobs += SA
- SA.AddElement(/datum/element/ghost_role_eligibility)
+ SA.AddElement(/datum/element/ghost_role_eligibility, penalize_on_ghost = TRUE)
to_chat(SA, "Hello world! ")
to_chat(SA, "Due to freak radiation and/or chemicals \
and/or lucky chance, you have gained human level intelligence \
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 9c9b131f48..3b8f8de359 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -393,17 +393,13 @@
/datum/spacevine_controller/vv_get_dropdown()
. = ..()
- . += "---"
- .["Delete Vines"] = "?_src_=[REF(src)];[HrefToken()];purge_vines=1"
+ VV_DROPDOWN_OPTION(VV_HK_SPACEVINE_PURGE, "Delete Vines")
-/datum/spacevine_controller/Topic(href, href_list)
- if(..() || !check_rights(R_ADMIN, FALSE) || !usr.client.holder.CheckAdminHref(href, href_list))
- return
-
- if(href_list["purge_vines"])
- if(alert(usr, "Are you sure you want to delete this spacevine cluster?", "Delete Vines", "Yes", "No") != "Yes")
- return
- DeleteVines()
+/datum/spacevine_controller/vv_do_topic(href_list)
+ . = ..()
+ if(href_list[VV_HK_SPACEVINE_PURGE])
+ if(alert(usr, "Are you sure you want to delete this spacevine cluster?", "Delete Vines", "Yes", "No") == "Yes")
+ DeleteVines()
/datum/spacevine_controller/proc/DeleteVines() //this is kill
QDEL_LIST(vines) //this will also qdel us
diff --git a/code/modules/events/wizard/aid.dm b/code/modules/events/wizard/aid.dm
index 8525674e07..5f49b48900 100644
--- a/code/modules/events/wizard/aid.dm
+++ b/code/modules/events/wizard/aid.dm
@@ -15,7 +15,7 @@
var/spell_improved = FALSE
for(var/obj/effect/proc_holder/spell/S in L.mind.spell_list)
if(S.clothes_req)
- S.clothes_req = 0
+ S.clothes_req = NONE
spell_improved = TRUE
if(spell_improved)
to_chat(L, "You suddenly feel like you never needed those garish robes in the first place... ")
diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm
index 0f2856c090..fbed6327b5 100644
--- a/code/modules/food_and_drinks/food/snacks_egg.dm
+++ b/code/modules/food_and_drinks/food/snacks_egg.dm
@@ -41,7 +41,7 @@
/obj/item/reagent_containers/food/snacks/egg/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/toy/crayon))
var/obj/item/toy/crayon/C = W
- var/clr = C.item_color
+ var/clr = C.crayon_color
if(!(clr in list("blue", "green", "mime", "orange", "purple", "rainbow", "red", "yellow")))
to_chat(usr, "[src] refuses to take on this colour! ")
@@ -49,41 +49,32 @@
to_chat(usr, "You colour [src] with [W]. ")
icon_state = "egg-[clr]"
- item_color = clr
else
..()
/obj/item/reagent_containers/food/snacks/egg/blue
icon_state = "egg-blue"
- item_color = "blue"
/obj/item/reagent_containers/food/snacks/egg/green
icon_state = "egg-green"
- item_color = "green"
/obj/item/reagent_containers/food/snacks/egg/mime
icon_state = "egg-mime"
- item_color = "mime"
/obj/item/reagent_containers/food/snacks/egg/orange
icon_state = "egg-orange"
- item_color = "orange"
/obj/item/reagent_containers/food/snacks/egg/purple
icon_state = "egg-purple"
- item_color = "purple"
/obj/item/reagent_containers/food/snacks/egg/rainbow
icon_state = "egg-rainbow"
- item_color = "rainbow"
/obj/item/reagent_containers/food/snacks/egg/red
icon_state = "egg-red"
- item_color = "red"
/obj/item/reagent_containers/food/snacks/egg/yellow
icon_state = "egg-yellow"
- item_color = "yellow"
/obj/item/reagent_containers/food/snacks/friedegg
name = "fried egg"
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index 2adff414e8..a8bb6dc187 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -287,7 +287,7 @@
/obj/machinery/microwave/proc/loop(type, time, wait = max(12 - 2 * efficiency, 2)) // standard wait is 10
if(stat & (NOPOWER|BROKEN))
- if(MICROWAVE_PRE)
+ if(type == MICROWAVE_PRE)
pre_fail()
return
if(!time)
@@ -353,4 +353,4 @@
#undef MICROWAVE_NORMAL
#undef MICROWAVE_MUCK
-#undef MICROWAVE_PRE
\ No newline at end of file
+#undef MICROWAVE_PRE
diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm
index b163c6ba97..94c8d7219c 100644
--- a/code/modules/food_and_drinks/pizzabox.dm
+++ b/code/modules/food_and_drinks/pizzabox.dm
@@ -86,8 +86,8 @@
tag_overlay.pixel_y = boxes.len * 3
add_overlay(tag_overlay)
-/obj/item/pizzabox/worn_overlays(isinhands, icon_file, style_flags = NONE)
- . = list()
+/obj/item/pizzabox/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
+ . = ..()
var/current_offset = 2
if(isinhands)
for(var/V in boxes) //add EXTRA BOX per box
diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm
index 5f2d92fc93..94c13999ba 100644
--- a/code/modules/holiday/easter.dm
+++ b/code/modules/holiday/easter.dm
@@ -113,8 +113,6 @@
. = ..()
var/eggcolor = pick("blue","green","mime","orange","purple","rainbow","red","yellow")
icon_state = "egg-[eggcolor]"
- item_color = "[eggcolor]"
-
/obj/item/reagent_containers/food/snacks/egg/proc/dispensePrize(turf/where)
var/won = pick(/obj/item/clothing/head/bunnyhead,
/obj/item/clothing/suit/bunnysuit,
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index 638d1427bc..7f6d48e731 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -390,7 +390,7 @@
desc = "A jacqueline o' lantern! You can't seem to get rid of it."
icon_state = "hardhat0_pumpkin_j"
item_state = "hardhat0_pumpkin_j"
- item_color = "pumpkin_j"
+ hat_type = "pumpkin_j"
brightness_on = 4
/obj/item/clothing/head/hardhat/pumpkinhead/jaqc/Initialize()
diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm
index 9fb97c08a7..316bdb8289 100644
--- a/code/modules/holodeck/area_copy.dm
+++ b/code/modules/holodeck/area_copy.dm
@@ -63,23 +63,34 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars_by_type, typecacheof_assoc_list(list(
var/src_min_x = 99999
var/src_min_y = 99999
+ var/src_max_x = 0
+ var/src_max_y = 0
var/list/refined_src = new/list()
for (var/turf/T in turfs_src)
src_min_x = min(src_min_x,T.x)
src_min_y = min(src_min_y,T.y)
+ src_max_x = max(src_max_x,T.y)
+ src_max_y = max(src_max_y,T.y)
for (var/turf/T in turfs_src)
refined_src[T] = "[T.x - src_min_x].[T.y - src_min_y]"
var/trg_min_x = 99999
var/trg_min_y = 99999
+ var/trg_max_x = 0
+ var/trg_max_y = 0
var/list/refined_trg = new/list()
for (var/turf/T in turfs_trg)
trg_min_x = min(trg_min_x,T.x)
trg_min_y = min(trg_min_y,T.y)
+ trg_max_x = max(trg_max_x,T.y)
+ trg_max_y = max(trg_max_y,T.y)
+
+ var/diff_x = round(((src_max_x - src_min_x) - (trg_max_x - trg_min_x))/2)
+ var/diff_y = round(((src_max_y - src_min_y) - (trg_max_y - trg_min_y))/2)
for (var/turf/T in turfs_trg)
- refined_trg["[T.x - trg_min_x].[T.y - trg_min_y]"] = T
+ refined_trg["[T.x - trg_min_x + diff_x].[T.y - trg_min_y + diff_y]"] = T
var/list/toupdate = new/list()
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index b5cbed8b79..3c87082393 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -2,7 +2,10 @@
Holodeck Update
The on-station holodeck area is of type [holodeck_type].
- All subtypes of [program_type] are loaded into the program cache or emag programs list.
+ All types found in GLOB.holodeck_areas_per_comp_type[src.type], generated on make_datum_references_lists(),
+ are loaded into the program cache or emag programs list.
+ Paths with their abstract_type variable equal to themselves will be skipped.
+
If init_program is null, a random program will be loaded on startup.
If you don't wish this, set it to the offline program or another of your choosing.
@@ -12,7 +15,6 @@
3) Create a new control console that uses those areas
Non-mapped areas should be skipped but you should probably comment them out anyway.
- The base of program_type will always be ignored; only subtypes will be loaded.
*/
#define HOLODECK_CD 25
@@ -35,7 +37,6 @@
// Splitting this up allows two holodecks of the same size
// to use the same source patterns. Y'know, if you want to.
var/holodeck_type = /area/holodeck/rec_center // locate(this) to get the target holodeck
- var/program_type = /area/holodeck/rec_center // subtypes of this (but not this itself) are loadable programs
var/active = FALSE
var/damaged = FALSE
@@ -181,7 +182,7 @@
return ..()
/obj/machinery/computer/holodeck/proc/generate_program_list()
- for(var/typekey in subtypesof(program_type))
+ for(var/typekey in GLOB.holodeck_areas_prototypes[type])
var/area/holodeck/A = GLOB.areas_by_type[typekey]
if(!A || !A.contents.len)
continue
diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm
index 884769ebd4..3fac417605 100644
--- a/code/modules/holodeck/items.dm
+++ b/code/modules/holodeck/items.dm
@@ -24,33 +24,34 @@
hitsound = "swing_hit"
armour_penetration = 50
var/active = 0
+ var/saber_color
/obj/item/holo/esword/green/Initialize()
. = ..()
- item_color = "green"
+ saber_color = "green"
/obj/item/holo/esword/red/Initialize()
. = ..()
- item_color = "red"
+ saber_color = "red"
-/obj/item/holo/esword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(active)
+/obj/item/holo/esword/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!active)
return ..()
- return 0
+ return ..()
/obj/item/holo/esword/attack(target as mob, mob/user as mob)
..()
/obj/item/holo/esword/Initialize()
. = ..()
- item_color = pick("red","blue","green","purple")
+ saber_color = pick("red","blue","green","purple")
/obj/item/holo/esword/attack_self(mob/living/user as mob)
active = !active
if (active)
force = 30
- icon_state = "sword[item_color]"
+ icon_state = "sword[saber_color]"
w_class = WEIGHT_CLASS_BULKY
hitsound = 'sound/weapons/blade1.ogg'
playsound(user, 'sound/weapons/saberon.ogg', 20, 1)
diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm
index 80792538d6..eba7a3d3c4 100644
--- a/code/modules/hydroponics/grown/berries.dm
+++ b/code/modules/hydroponics/grown/berries.dm
@@ -90,7 +90,7 @@
lifespan = 30
endurance = 25
mutatelist = list()
- genes = list(/datum/plant_gene/trait/glow/white, /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest)
+ genes = list(/datum/plant_gene/trait/glow/white, /datum/plant_gene/trait/repeated_harvest)
reagents_add = list(/datum/reagent/uranium = 0.25, /datum/reagent/iodine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 20
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index 44abb4939b..f356ed7b68 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -492,9 +492,6 @@
return
var/turf/T = get_turf(src)
reagents.chem_temp = 1000
- //Disable seperated contents when the grenade primes
- if (seed.get_gene(/datum/plant_gene/trait/noreact))
- DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT)
reagents.handle_reactions()
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
qdel(src)
diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm
index 1e2d25d825..db929d45fb 100644
--- a/code/modules/hydroponics/grown/tobacco.dm
+++ b/code/modules/hydroponics/grown/tobacco.dm
@@ -34,6 +34,7 @@
mutatelist = list()
reagents_add = list(/datum/reagent/medicine/salbutamol = 0.05, /datum/reagent/drug/nicotine = 0.08, /datum/reagent/consumable/nutriment = 0.03)
rarity = 20
+ genes = list(/datum/plant_gene/trait/smoke) //get it? because you smoke tobacco? i'm hilarious.
/obj/item/reagent_containers/food/snacks/grown/tobacco/space
seed = /obj/item/seeds/tobacco/space
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index b3ec36e0bb..ef2eff707f 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -216,6 +216,10 @@
name = "Liquid Contents"
examine_line = "It has a lot of liquid contents inside. "
+/datum/plant_gene/trait/squash/on_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/living/carbon/C)
+ // Squash the plant on slip.
+ G.squash(C)
+
/datum/plant_gene/trait/slip
// Makes plant slippery, unless it has a grown-type trash. Then the trash gets slippery.
// Applies other trait effects (teleporting, etc) to the target by on_slip.
@@ -301,6 +305,9 @@
rate = 0.04
glow_color = "#AAD84B"
+/datum/plant_gene/trait/glow/shadow/glow_power(obj/item/seeds/S)
+ return -max(S.potency*(rate*0.2), 0.2)
+
/datum/plant_gene/trait/glow/white
name = "White Bioluminescence"
glow_color = "#FFFFFF"
@@ -361,20 +368,6 @@
new /obj/effect/decal/cleanable/molten_object(T) //Leave a pile of goo behind for dramatic effect...
qdel(G)
-
-/datum/plant_gene/trait/noreact
- // Makes plant reagents not react until squashed.
- name = "Separated Chemicals"
-
-/datum/plant_gene/trait/noreact/on_new(obj/item/reagent_containers/food/snacks/grown/G, newloc)
- ..()
- ENABLE_BITFIELD(G.reagents.reagents_holder_flags, NO_REACT)
-
-/datum/plant_gene/trait/noreact/on_squash(obj/item/reagent_containers/food/snacks/grown/G, atom/target)
- DISABLE_BITFIELD(G.reagents.reagents_holder_flags, NO_REACT)
- G.reagents.handle_reactions()
-
-
/datum/plant_gene/trait/maxchem
// 2x to max reagents volume.
name = "Densified Chemicals"
diff --git a/code/modules/instruments/instrument_data/_instrument_data.dm b/code/modules/instruments/instrument_data/_instrument_data.dm
new file mode 100644
index 0000000000..447bcdffb1
--- /dev/null
+++ b/code/modules/instruments/instrument_data/_instrument_data.dm
@@ -0,0 +1,107 @@
+/proc/path_to_instrument_ids(path)
+ if(!ispath(path))
+ path = text2path(path)
+ if(!ispath(path))
+ return
+ if(!ispath(path, /datum/instrument))
+ return
+ . = list()
+ for(var/i in typesof(path))
+ var/datum/instrument/I = i
+ var/init_id = initial(I.id)
+ if(init_id)
+ . |= init_id
+
+/// Get all non admin_only instruments.
+/proc/get_allowed_instrument_ids()
+ . = list()
+ for(var/id in SSinstruments.instrument_data)
+ var/datum/instrument/I = SSinstruments.instrument_data[id]
+ if(!I.admin_only)
+ . += I.id
+
+/datum/instrument
+ /// Name of the instrument
+ var/name = "Generic instrument"
+ /// Uniquely identifies this instrument so runtime changes are possible as opposed to paths. If this is unset, things will use path instead.
+ var/id
+ /// Category
+ var/category = "Unsorted"
+ /// Used for categorization subtypes
+ var/abstract_type = /datum/instrument
+ /// Write here however many samples, follow this syntax: "%note num%"='%sample file%' eg. "27"='synthesizer/e2.ogg'. Key must never be lower than 0 and higher than 127
+ var/list/real_samples
+ /// assoc list key = /datum/instrument_key. do not fill this yourself!
+ var/list/samples
+ /// See __DEFINES/flags/instruments.dm
+ var/instrument_flags = NONE
+ /// For legacy instruments, the path to our notes
+ var/legacy_instrument_path
+ /// For legacy instruments, our file extension
+ var/legacy_instrument_ext
+ /// What songs are using us
+ var/list/datum/song/songs_using = list()
+ /// Don't touch this
+ var/static/HIGHEST_KEY = 127
+ /// Don't touch this x2
+ var/static/LOWEST_KEY = 0
+ /// Oh no - For truly troll instruments.
+ var/admin_only = FALSE
+ /// Volume multiplier. Synthesized instruments are quite loud and I don't like to cut off potential detail via editing. (someone correct me if this isn't a thing)
+ var/volume_multiplier = 1/3
+
+/datum/instrument/New()
+ if(isnull(id))
+ id = "[type]"
+
+/datum/instrument/proc/Initialize()
+ if(CHECK_BITFIELD(instrument_flags, INSTRUMENT_LEGACY | INSTRUMENT_DO_NOT_AUTOSAMPLE))
+ return
+ calculate_samples()
+
+/datum/instrument/proc/ready()
+ if(CHECK_BITFIELD(instrument_flags, INSTRUMENT_LEGACY))
+ return legacy_instrument_path && legacy_instrument_ext
+ else if(CHECK_BITFIELD(instrument_flags, INSTRUMENT_DO_NOT_AUTOSAMPLE))
+ return length(samples)
+ return (length(samples) >= 128)
+
+/datum/instrument/Destroy()
+ SSinstruments.instrument_data -= id
+ for(var/i in songs_using)
+ var/datum/song/S = i
+ S.set_instrument(null)
+ real_samples = null
+ samples = null
+ songs_using = null
+ return ..()
+
+/datum/instrument/proc/calculate_samples()
+ if(!length(real_samples))
+ CRASH("No real samples defined for [id] [type] on calculate_samples() call.")
+ var/list/real_keys = list()
+ samples = list()
+ for(var/key in real_samples)
+ real_keys += text2num(key)
+ sortTim(real_keys, /proc/cmp_numeric_asc, associative = FALSE)
+
+ for(var/i in 1 to (length(real_keys) - 1))
+ var/from_key = real_keys[i]
+ var/to_key = real_keys[i+1]
+ var/sample1 = real_samples[num2text(from_key)]
+ var/sample2 = real_samples[num2text(to_key)]
+ var/pivot = FLOOR((from_key + to_key) / 2, 1) //original code was a round but I replaced it because that's effectively a floor, thanks Baystation! who knows what was intended.
+ for(var/key in from_key to pivot)
+ samples[num2text(key)] = new /datum/instrument_key(sample1, key, key - from_key)
+ for(var/key in (pivot + 1) to to_key)
+ samples[num2text(key)] = new /datum/instrument_key(sample2, key, key - to_key)
+
+ // Fill in 0 to first key and last key to 127
+ var/first_key = real_keys[1]
+ var/last_key = real_keys[length(real_keys)]
+ var/first_sample = real_samples[num2text(first_key)]
+ var/last_sample = real_samples[num2text(last_key)]
+ for(var/key in LOWEST_KEY to (first_key - 1))
+ samples[num2text(key)] = new /datum/instrument_key(first_sample, key, key - first_key)
+ for(var/key in last_key to HIGHEST_KEY)
+ samples[num2text(key)] = new /datum/instrument_key(last_sample, key, key - last_key)
diff --git a/code/modules/instruments/instrument_data/_instrument_key.dm b/code/modules/instruments/instrument_data/_instrument_key.dm
new file mode 100644
index 0000000000..012270ae11
--- /dev/null
+++ b/code/modules/instruments/instrument_data/_instrument_key.dm
@@ -0,0 +1,20 @@
+/datum/instrument_key
+ var/key //1 to 127
+ var/sample //file
+ var/frequency //frequency generated
+ var/deviation //deviation up/down towards pivot from sample (??)
+
+/datum/instrument_key/New(sample = src.sample, key = src.key, deviation = src.deviation, frequency = src.frequency)
+ src.sample = sample
+ src.key = key
+ src.deviation = deviation
+ src.frequency = frequency
+ if(!frequency && deviation)
+ calculate()
+
+/datum/instrument_key/proc/calculate()
+ if(!deviation)
+ CRASH("Invalid calculate call: No deviation or sample in instrument_key")
+ #define KEY_TWELTH (1/12)
+ frequency = 2 ** (KEY_TWELTH * deviation)
+ #undef KEY_TWELTH
diff --git a/code/modules/instruments/instrument_data/brass.dm b/code/modules/instruments/instrument_data/brass.dm
new file mode 100644
index 0000000000..7f8f103831
--- /dev/null
+++ b/code/modules/instruments/instrument_data/brass.dm
@@ -0,0 +1,26 @@
+/datum/instrument/brass
+ name = "Generic brass instrument"
+ category = "Brass"
+ abstract_type = /datum/instrument/brass
+
+/datum/instrument/brass/crisis_section
+ name = "Crisis Brass Section"
+ id = "crbrass"
+ real_samples = list("36"='sound/instruments/synthesis_samples/brass/crisis_brass/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/brass/crisis_brass/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/brass/crisis_brass/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/brass/crisis_brass/c5.ogg')
+
+/datum/instrument/brass/crisis_trombone
+ name = "Crisis Trombone"
+ id = "crtrombone"
+ real_samples = list("36"='sound/instruments/synthesis_samples/brass/crisis_trombone/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/brass/crisis_trombone/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/brass/crisis_trombone/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/brass/crisis_trombone/c5.ogg')
+
+/datum/instrument/brass/crisis_trumpet
+ name = "Crisis Trumpet"
+ id = "crtrumpet"
+ real_samples = list("60"='sound/instruments/synthesis_samples/brass/crisis_trumpet/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/brass/crisis_trumpet/c5.ogg')
diff --git a/code/modules/instruments/instrument_data/chromatic_percussion.dm b/code/modules/instruments/instrument_data/chromatic_percussion.dm
new file mode 100644
index 0000000000..cafa9e31ed
--- /dev/null
+++ b/code/modules/instruments/instrument_data/chromatic_percussion.dm
@@ -0,0 +1,31 @@
+/datum/instrument/chromatic
+ name = "Generic chromatic percussion instrument"
+ category = "Chromatic percussion"
+ abstract_type = /datum/instrument/chromatic
+
+/datum/instrument/chromatic/vibraphone1
+ name = "Crisis Vibraphone"
+ id = "crvibr"
+ real_samples = list("36"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg')
+
+/datum/instrument/chromatic/musicbox1
+ name = "SGM Music Box"
+ id = "sgmmbox"
+ real_samples = list("36"='sound/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg')
+
+/datum/instrument/chromatic/fluid_celeste
+ name = "FluidR3 Celeste"
+ id = "r3celeste"
+ real_samples = list("36"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c5.ogg',
+ "84"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c6.ogg',
+ "96"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c7.ogg',
+ "108"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c8.ogg')
diff --git a/code/modules/instruments/instrument_data/fun.dm b/code/modules/instruments/instrument_data/fun.dm
new file mode 100644
index 0000000000..44d78b8ccd
--- /dev/null
+++ b/code/modules/instruments/instrument_data/fun.dm
@@ -0,0 +1,25 @@
+/datum/instrument/fun
+ name = "Generic Fun Instrument"
+ category = "Fun"
+ abstract_type = /datum/instrument/fun
+
+/datum/instrument/fun/honk
+ name = "!!HONK!!"
+ id = "honk"
+ real_samples = list("74"='sound/items/bikehorn.ogg') // Cluwne Heaven
+
+/datum/instrument/fun/signal
+ name = "Ping"
+ id = "ping"
+ real_samples = list("79"='sound/machines/ping.ogg')
+
+/datum/instrument/fun/chime
+ name = "Chime"
+ id = "chime"
+ real_samples = list("79"='sound/machines/chime.ogg')
+
+/datum/instrument/fun/nya
+ name = "NYA NYA NYA"
+ id = "nyanyanya"
+ real_samples = list("79" = 'modular_citadel/sound/voice/nya.ogg')
+ admin_only = TRUE
diff --git a/code/modules/instruments/instrument_data/guitar.dm b/code/modules/instruments/instrument_data/guitar.dm
new file mode 100644
index 0000000000..be7cfbe467
--- /dev/null
+++ b/code/modules/instruments/instrument_data/guitar.dm
@@ -0,0 +1,36 @@
+/datum/instrument/guitar
+ name = "Generic guitar-like instrument"
+ category = "Guitar"
+ abstract_type = /datum/instrument/guitar
+
+/datum/instrument/guitar/steel_crisis
+ name = "Crisis Steel String Guitar"
+ id = "csteelgt"
+ real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg')
+
+/datum/instrument/guitar/nylon_crisis
+ name = "Crisis Nylon String Guitar"
+ id = "cnylongt"
+ real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg')
+
+/datum/instrument/guitar/clean_crisis
+ name = "Crisis Clean Guitar"
+ id = "ccleangt"
+ real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_clean/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/guitar/crisis_clean/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/guitar/crisis_clean/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/guitar/crisis_clean/c5.ogg')
+
+/datum/instrument/guitar/muted_crisis
+ name = "Crisis Muted Guitar"
+ id = "cmutedgt"
+ real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_muted/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/guitar/crisis_muted/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/guitar/crisis_muted/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/guitar/crisis_muted/c5.ogg')
diff --git a/code/modules/instruments/instrument_data/hardcoded.dm b/code/modules/instruments/instrument_data/hardcoded.dm
new file mode 100644
index 0000000000..757fea08a8
--- /dev/null
+++ b/code/modules/instruments/instrument_data/hardcoded.dm
@@ -0,0 +1,86 @@
+//THESE ARE HARDCODED INSTRUMENT SAMPLES.
+//SONGS WILL BE AUTOMATICALLY SWITCHED TO LEGACY MODE IF THEY USE THIS KIND OF INSTRUMENT!
+//I'd prefer these stayed. They sound different from the mechanical synthesis of synthed instruments, and I quite like them that way. It's not legacy, it's hardcoded, old style. - kevinz000
+/datum/instrument/hardcoded
+ abstract_type = /datum/instrument/hardcoded
+ category = "Non-Synthesized"
+ instrument_flags = INSTRUMENT_LEGACY
+ volume_multiplier = 1 //not as loud as synth'd
+
+/datum/instrument/hardcoded/accordian
+ name = "Accordian"
+ id = "accordian"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "accordian"
+
+/datum/instrument/hardcoded/bikehorn
+ name = "Bike Horn"
+ id = "bikehorn"
+ legacy_instrument_ext = "ogg"
+ legacy_instrument_path = "bikehorn"
+
+/datum/instrument/hardcoded/eguitar
+ name = "Electric Guitar"
+ id = "eguitar"
+ legacy_instrument_ext = "ogg"
+ legacy_instrument_path = "eguitar"
+
+/datum/instrument/hardcoded/glockenspiel
+ name = "Glockenspiel"
+ id = "glockenspiel"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "glockenspiel"
+
+/datum/instrument/hardcoded/guitar
+ name = "Guitar"
+ id = "guitar"
+ legacy_instrument_ext = "ogg"
+ legacy_instrument_path = "guitar"
+
+/datum/instrument/hardcoded/harmonica
+ name = "Harmonica"
+ id = "harmonica"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "harmonica"
+
+/datum/instrument/hardcoded/piano
+ name = "Piano"
+ id = "piano"
+ legacy_instrument_ext = "ogg"
+ legacy_instrument_path = "piano"
+
+/datum/instrument/hardcoded/recorder
+ name = "Recorder"
+ id = "recorder"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "recorder"
+
+/datum/instrument/hardcoded/saxophone
+ name = "Saxophone"
+ id = "saxophone"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "saxophone"
+
+/datum/instrument/hardcoded/trombone
+ name = "Trombone"
+ id = "trombone"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "trombone"
+
+/datum/instrument/hardcoded/violin
+ name = "Violin"
+ id = "violin"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "violin"
+
+/datum/instrument/hardcoded/xylophone
+ name = "Xylophone"
+ id = "xylophone"
+ legacy_instrument_ext = "mid"
+ legacy_instrument_path = "xylophone"
+
+/datum/instrument/hardcoded/banjo
+ name = "Banjo"
+ id = "banjo"
+ legacy_instrument_ext = "ogg"
+ legacy_instrument_path = "banjo"
diff --git a/code/modules/instruments/instrument_data/organ.dm b/code/modules/instruments/instrument_data/organ.dm
new file mode 100644
index 0000000000..25da740998
--- /dev/null
+++ b/code/modules/instruments/instrument_data/organ.dm
@@ -0,0 +1,43 @@
+/datum/instrument/organ
+ name = "Generic organ"
+ category = "Organ"
+ abstract_type = /datum/instrument/organ
+
+/datum/instrument/organ/crisis_church
+ name = "Crisis Church Organ"
+ id = "crichugan"
+ real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_church/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/organ/crisis_church/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/organ/crisis_church/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/organ/crisis_church/c5.ogg')
+
+/datum/instrument/organ/crisis_hammond
+ name = "Crisis Hammond Organ"
+ id = "crihamgan"
+ real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_hammond/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/organ/crisis_hammond/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg')
+
+/datum/instrument/organ/crisis_accordian
+ name = "Crisis Accordian"
+ id = "crack"
+ real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/organ/crisis_accordian/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/organ/crisis_accordian/c5.ogg')
+
+/datum/instrument/organ/crisis_harmonica
+ name = "Crisis Harmonica"
+ id = "crharmony"
+ real_samples = list("48"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg')
+
+/datum/instrument/organ/crisis_tango_accordian
+ name = "Crisis Tango Accordian"
+ id = "crtango"
+ real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c5.ogg')
diff --git a/code/modules/instruments/instrument_data/piano.dm b/code/modules/instruments/instrument_data/piano.dm
new file mode 100644
index 0000000000..fdd2f6e938
--- /dev/null
+++ b/code/modules/instruments/instrument_data/piano.dm
@@ -0,0 +1,56 @@
+/datum/instrument/piano
+ name = "Generic piano"
+ category = "Piano"
+ abstract_type = /datum/instrument/piano
+
+/datum/instrument/piano/fluid_piano
+ name = "FluidR3 Grand Piano"
+ id = "r3grand"
+ real_samples = list("36"='sound/instruments/synthesis_samples/piano/fluid_piano/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/piano/fluid_piano/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/piano/fluid_piano/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/piano/fluid_piano/c5.ogg',
+ "84"='sound/instruments/synthesis_samples/piano/fluid_piano/c6.ogg',
+ "96"='sound/instruments/synthesis_samples/piano/fluid_piano/c7.ogg',
+ "108"='sound/instruments/synthesis_samples/piano/fluid_piano/c8.ogg')
+
+/datum/instrument/piano/fluid_harpsichord
+ name = "FluidR3 Harpsichord"
+ id = "r3harpsi"
+ real_samples = list("36"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c5.ogg',
+ "84"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c6.ogg',
+ "96"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c7.ogg',
+ "108"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c8.ogg')
+
+/datum/instrument/piano/crisis_harpsichord
+ name = "Crisis Harpsichord"
+ id = "crharpsi"
+ real_samples = list("36"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c5.ogg')
+
+/datum/instrument/piano/crisis_grandpiano_uni
+ name = "Crisis Grand Piano One"
+ id = "crgrand1"
+ real_samples = list("36"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c5.ogg',
+ "84"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c6.ogg',
+ "96"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c7.ogg',
+ "108"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c8.ogg')
+
+/datum/instrument/piano/crisis_brightpiano_uni
+ name = "Crisis Bright Piano One"
+ id = "crbright1"
+ real_samples = list("36"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c2.ogg',
+ "48"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c3.ogg',
+ "60"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c4.ogg',
+ "72"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c5.ogg',
+ "84"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c6.ogg',
+ "96"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c7.ogg',
+ "108"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c8.ogg')
diff --git a/code/modules/instruments/instrument_data/synth_tones.dm b/code/modules/instruments/instrument_data/synth_tones.dm
new file mode 100644
index 0000000000..9ad9250f40
--- /dev/null
+++ b/code/modules/instruments/instrument_data/synth_tones.dm
@@ -0,0 +1,19 @@
+/datum/instrument/tones
+ name = "Ideal tone"
+ category = "Tones"
+ abstract_type = /datum/instrument/tones
+
+/datum/instrument/tones/square_wave
+ name = "Ideal square wave"
+ id = "square"
+ real_samples = list("81"='sound/instruments/synthesis_samples/tones/Square.ogg')
+
+/datum/instrument/tones/sine_wave
+ name = "Ideal sine wave"
+ id = "sine"
+ real_samples = list("81"='sound/instruments/synthesis_samples/tones/Sine.ogg')
+
+/datum/instrument/tones/saw_wave
+ name = "Ideal sawtooth wave"
+ id = "saw"
+ real_samples = list("81"='sound/instruments/synthesis_samples/tones/Sawtooth.ogg')
diff --git a/code/game/objects/items/devices/instruments.dm b/code/modules/instruments/instruments/item.dm
similarity index 78%
rename from code/game/objects/items/devices/instruments.dm
rename to code/modules/instruments/instruments/item.dm
index 8dedc2cb86..fa3e75e431 100644
--- a/code/game/objects/items/devices/instruments.dm
+++ b/code/modules/instruments/instruments/item.dm
@@ -1,83 +1,80 @@
//copy pasta of the space piano, don't hurt me -Pete
/obj/item/instrument
name = "generic instrument"
- resistance_flags = FLAMMABLE
force = 10
max_integrity = 100
+ resistance_flags = FLAMMABLE
icon = 'icons/obj/musician.dmi'
lefthand_file = 'icons/mob/inhands/equipment/instruments_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/instruments_righthand.dmi'
var/datum/song/handheld/song
- var/instrumentId = "generic"
- var/instrumentExt = "mid"
- var/tune_time = 0
-
-/obj/item/instrument/Initialize()
- . = ..()
- song = new(instrumentId, src, instrumentExt)
-
-/obj/item/instrument/Destroy()
- if (tune_time)
- STOP_PROCESSING(SSobj, src)
- qdel(song)
- song = null
- return ..()
-
-/obj/item/instrument/suicide_act(mob/user)
- user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide! ")
- return (BRUTELOSS)
+ var/list/allowed_instrument_ids
+ var/tune_time_left = 0
/obj/item/instrument/Initialize(mapload)
. = ..()
- if(mapload)
- song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded
+ song = new(src, allowed_instrument_ids)
+ allowed_instrument_ids = null //We don't need this clogging memory after it's used.
-/obj/item/instrument/attack_self(mob/user)
- if(!user.IsAdvancedToolUser())
- to_chat(user, "You don't have the dexterity to do this! ")
- return 1
- interact(user)
+/obj/item/instrument/Destroy()
+ QDEL_NULL(song)
+ if(tune_time_left)
+ STOP_PROCESSING(SSprocessing, src)
+ return ..()
-/obj/item/instrument/interact(mob/user)
- ui_interact(user)
+/obj/item/instrument/proc/should_stop_playing(mob/user)
+ return !user.CanReach(src) || !user.canUseTopic(src, FALSE, TRUE, FALSE, FALSE)
-/obj/item/instrument/ui_interact(mob/user)
- if(!user)
- return
-
- if(!isliving(user) || user.stat || user.restrained() || user.lying)
- return
-
- user.set_machine(src)
- song.interact(user)
-
-/obj/item/instrument/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/musicaltuner))
- var/mob/living/carbon/human/H = user
- if (HAS_TRAIT(H, TRAIT_MUSICIAN))
- if (!tune_time)
- H.visible_message("[H] tunes the [src] to perfection!", "You tune the [src] to perfection! ")
- tune_time = 300
- START_PROCESSING(SSobj, src)
- else
- to_chat(H, "[src] is already well tuned! ")
- else
- to_chat(H, "You have no idea how to use this. ")
-
-/obj/item/instrument/process()
- if (tune_time)
+/obj/item/instrument/process(wait)
+ if(is_tuned())
if (song.playing)
for (var/mob/living/M in song.hearing_mobs)
M.dizziness = max(0,M.dizziness-2)
M.jitteriness = max(0,M.jitteriness-2)
M.confused = max(M.confused-1)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "goodmusic", /datum/mood_event/goodmusic)
- tune_time--
+ tune_time_left -= wait
else
- if (!tune_time)
- if (song.playing)
- loc.visible_message("[src] starts sounding a little off... ")
- STOP_PROCESSING(SSobj, src)
+ tune_time_left = 0
+ if (song.playing)
+ loc.visible_message("[src] starts sounding a little off... ")
+ STOP_PROCESSING(SSprocessing, src)
+
+/obj/item/instrument/suicide_act(mob/user)
+ user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide! ")
+ return (BRUTELOSS)
+
+/obj/item/instrument/attack_self(mob/user)
+ if(!user.IsAdvancedToolUser())
+ to_chat(user, "You don't have the dexterity to do this! ")
+ return TRUE
+ interact(user)
+
+/obj/item/instrument/attackby(obj/item/W, mob/user, params)
+ if(istype(W, /obj/item/musicaltuner))
+ var/mob/living/carbon/human/H = user
+ if (HAS_TRAIT(H, TRAIT_MUSICIAN))
+ if (!is_tuned())
+ H.visible_message("[H] tunes the [src] to perfection!", "You tune the [src] to perfection! ")
+ tune_time_left = 600 SECONDS
+ START_PROCESSING(SSprocessing, src)
+ else
+ to_chat(H, "[src] is already well tuned! ")
+ else
+ to_chat(H, "You have no idea how to use this. ")
+
+/obj/item/instrument/proc/is_tuned()
+ return tune_time_left > 0
+
+/obj/item/instrument/interact(mob/user)
+ ui_interact(user)
+
+/obj/item/instrument/ui_interact(mob/living/user)
+ if(!isliving(user) || user.stat || user.restrained())
+ return
+
+ user.set_machine(src)
+ song.ui_interact(user)
/obj/item/instrument/violin
name = "space violin"
@@ -85,7 +82,7 @@
icon_state = "violin"
item_state = "violin"
hitsound = "swing_hit"
- instrumentId = "violin"
+ allowed_instrument_ids = "violin"
/obj/item/instrument/violin/golden
name = "golden violin"
@@ -99,40 +96,20 @@
desc = "An advanced electronic synthesizer that can be used as various instruments."
icon_state = "synth"
item_state = "synth"
- instrumentId = "piano"
- instrumentExt = "ogg"
- var/static/list/insTypes = list("accordion" = "mid", "bikehorn" = "ogg", "glockenspiel" = "mid", "banjo" = "ogg", "guitar" = "ogg", "harmonica" = "mid", "piano" = "ogg", "recorder" = "mid", "saxophone" = "mid", "trombone" = "mid", "violin" = "mid", "xylophone" = "mid") //No eguitar you ear-rapey fuckers.
- actions_types = list(/datum/action/item_action/synthswitch)
+ allowed_instrument_ids = "piano"
-/obj/item/instrument/piano_synth/proc/changeInstrument(name = "piano")
- song.instrumentDir = name
- song.instrumentExt = insTypes[name]
-
-/obj/item/instrument/piano_synth/proc/selectInstrument() // Moved here so it can be used by the action and PAI software panel without copypasta
- var/chosen = input("Choose the type of instrument you want to use", "Instrument Selection", song.instrumentDir) as null|anything in insTypes
- if(!insTypes[chosen])
- return
- return changeInstrument(chosen)
-
-/obj/item/instrument/banjo
- name = "banjo"
- desc = "A 'Mura' brand banjo. It's pretty much just a drum with a neck and strings."
- icon_state = "banjo"
- item_state = "banjo"
- instrumentExt = "ogg"
- attack_verb = list("scruggs-styled", "hum-diggitied", "shin-digged", "clawhammered")
- hitsound = 'sound/weapons/banjoslap.ogg'
- instrumentId = "banjo"
+/obj/item/instrument/piano_synth/Initialize()
+ . = ..()
+ song.allowed_instrument_ids = get_allowed_instrument_ids()
/obj/item/instrument/guitar
name = "guitar"
desc = "It's made of wood and has bronze strings."
icon_state = "guitar"
item_state = "guitar"
- instrumentExt = "ogg"
attack_verb = list("played metal on", "serenaded", "crashed", "smashed")
hitsound = 'sound/weapons/stringsmash.ogg'
- instrumentId = "guitar"
+ allowed_instrument_ids = "guitar"
/obj/item/instrument/eguitar
name = "electric guitar"
@@ -142,29 +119,28 @@
force = 12
attack_verb = list("played metal on", "shredded", "crashed", "smashed")
hitsound = 'sound/weapons/stringsmash.ogg'
- instrumentId = "eguitar"
- instrumentExt = "ogg"
+ allowed_instrument_ids = "eguitar"
/obj/item/instrument/glockenspiel
name = "glockenspiel"
desc = "Smooth metal bars perfect for any marching band."
icon_state = "glockenspiel"
item_state = "glockenspiel"
- instrumentId = "glockenspiel"
+ allowed_instrument_ids = "glockenspiel"
/obj/item/instrument/accordion
name = "accordion"
desc = "Pun-Pun not included."
icon_state = "accordion"
item_state = "accordion"
- instrumentId = "accordion"
+ allowed_instrument_ids = "accordion"
/obj/item/instrument/trumpet
name = "trumpet"
desc = "To announce the arrival of the king!"
icon_state = "trumpet"
item_state = "trombone"
- instrumentId = "trombone"
+ allowed_instrument_ids = "trombone"
/obj/item/instrument/trumpet/spectral
name = "spectral trumpet"
@@ -172,7 +148,6 @@
icon_state = "trumpet"
item_state = "trombone"
force = 0
- instrumentId = "trombone"
attack_verb = list("played","jazzed","trumpeted","mourned","dooted","spooked")
/obj/item/instrument/trumpet/spectral/Initialize()
@@ -188,14 +163,13 @@
desc = "This soothing sound will be sure to leave your audience in tears."
icon_state = "saxophone"
item_state = "saxophone"
- instrumentId = "saxophone"
+ allowed_instrument_ids = "saxophone"
/obj/item/instrument/saxophone/spectral
name = "spectral saxophone"
desc = "This spooky sound will be sure to leave mortals in bones."
icon_state = "saxophone"
item_state = "saxophone"
- instrumentId = "saxophone"
force = 0
attack_verb = list("played","jazzed","saxxed","mourned","dooted","spooked")
@@ -204,7 +178,7 @@
AddComponent(/datum/component/spooky)
/obj/item/instrument/saxophone/spectral/attack(mob/living/carbon/C, mob/user)
- playsound (loc, 'sound/instruments/saxophone/En4.mid', 100,1,-1)
+ playsound(loc, 'sound/instruments/saxophone/En4.mid', 100,1,-1)
..()
/obj/item/instrument/trombone
@@ -212,12 +186,11 @@
desc = "How can any pool table ever hope to compete?"
icon_state = "trombone"
item_state = "trombone"
- instrumentId = "trombone"
+ allowed_instrument_ids = "trombone"
/obj/item/instrument/trombone/spectral
name = "spectral trombone"
desc = "A skeleton's favorite instrument. Apply directly on the mortals."
- instrumentId = "trombone"
icon_state = "trombone"
item_state = "trombone"
force = 0
@@ -237,14 +210,14 @@
force = 5
icon_state = "recorder"
item_state = "recorder"
- instrumentId = "recorder"
+ allowed_instrument_ids = "recorder"
/obj/item/instrument/harmonica
name = "harmonica"
desc = "For when you get a bad case of the space blues."
icon_state = "harmonica"
item_state = "harmonica"
- instrumentId = "harmonica"
+ allowed_instrument_ids = "harmonica"
slot_flags = ITEM_SLOT_MASK
force = 5
w_class = WEIGHT_CLASS_SMALL
@@ -271,14 +244,22 @@
lefthand_file = 'icons/mob/inhands/equipment/horns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/horns_righthand.dmi'
attack_verb = list("beautifully honks")
- instrumentId = "bikehorn"
- instrumentExt = "ogg"
+ allowed_instrument_ids = "bikehorn"
w_class = WEIGHT_CLASS_TINY
force = 0
throw_speed = 3
throw_range = 15
hitsound = 'sound/items/bikehorn.ogg'
+/obj/item/instrument/banjo
+ name = "banjo"
+ desc = "A 'Mura' brand banjo. It's pretty much just a drum with a neck and strings."
+ icon_state = "banjo"
+ item_state = "banjo"
+ attack_verb = list("scruggs-styled", "hum-diggitied", "shin-digged", "clawhammered")
+ hitsound = 'sound/weapons/banjoslap.ogg'
+ allowed_instrument_ids = "banjo"
+
/obj/item/musicaltuner
name = "musical tuner"
desc = "A device for tuning musical instruments both manual and electronic alike."
diff --git a/code/modules/instruments/instruments/stationary.dm b/code/modules/instruments/instruments/stationary.dm
new file mode 100644
index 0000000000..f236927c38
--- /dev/null
+++ b/code/modules/instruments/instruments/stationary.dm
@@ -0,0 +1,52 @@
+/obj/structure/musician
+ name = "Not A Piano"
+ desc = "Something broke, contact coderbus."
+ interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT | INTERACT_ATOM_REQUIRES_DEXTERITY
+ var/can_play_unanchored = FALSE
+ var/list/allowed_instrument_ids
+ var/datum/song/song
+
+/obj/structure/musician/Initialize(mapload)
+ . = ..()
+ song = new(src, allowed_instrument_ids)
+ allowed_instrument_ids = null
+
+/obj/structure/musician/Destroy()
+ QDEL_NULL(song)
+ return ..()
+
+/obj/structure/musician/proc/should_stop_playing(mob/user)
+ if(!(anchored || can_play_unanchored))
+ return TRUE
+ if(!user)
+ return FALSE
+ return !user.canUseTopic(src, FALSE, TRUE, FALSE, FALSE) //can play with TK and while resting because fun.
+
+/obj/structure/musician/ui_interact(mob/user)
+ . = ..()
+ song.ui_interact(user)
+
+/obj/structure/musician/wrench_act(mob/living/user, obj/item/I)
+ default_unfasten_wrench(user, I, 40)
+ return TRUE
+
+/obj/structure/musician/piano
+ name = "space minimoog"
+ icon = 'icons/obj/musician.dmi'
+ icon_state = "minimoog"
+ anchored = TRUE
+ density = TRUE
+
+/obj/structure/musician/piano/unanchored
+ anchored = FALSE
+
+/obj/structure/musician/piano/Initialize(mapload)
+ . = ..()
+ if(prob(50) && icon_state == initial(icon_state))
+ name = "space minimoog"
+ desc = "This is a minimoog, like a space piano, but more spacey!"
+ icon_state = "minimoog"
+ else
+ name = "space piano"
+ desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't."
+ icon_state = "piano"
diff --git a/code/modules/instruments/songs/_song.dm b/code/modules/instruments/songs/_song.dm
new file mode 100644
index 0000000000..67feb14457
--- /dev/null
+++ b/code/modules/instruments/songs/_song.dm
@@ -0,0 +1,301 @@
+#define MUSICIAN_HEARCHECK_MINDELAY 4
+#define MUSIC_MAXLINES 1000
+#define MUSIC_MAXLINECHARS 300
+
+/datum/song
+ /// Name of the song
+ var/name = "Untitled"
+
+ /// The atom we're attached to/playing from
+ var/atom/parent
+
+ /// Our song lines
+ var/list/lines
+
+ /// delay between notes in deciseconds
+ var/tempo = 5
+
+ /// Are we currently playing?
+ var/playing = FALSE
+
+ /// Are we currently editing?
+ var/editing = TRUE
+ /// Is the help screen open?
+ var/help = FALSE
+
+ /// Repeats left
+ var/repeat = 0
+ /// Maximum times we can repeat
+ var/max_repeats = 10
+
+ /// Our volume
+ var/volume = 75
+ /// Max volume
+ var/max_volume = 75
+ /// Min volume - This is so someone doesn't decide it's funny to set it to 0 and play invisible songs.
+ var/min_volume = 1
+
+ /// What instruments our built in picker can use. The picker won't show unless this is longer than one.
+ var/list/allowed_instrument_ids = list("r3grand")
+
+ //////////// Cached instrument variables /////////////
+ /// Instrument we are currently using
+ var/datum/instrument/using_instrument
+ /// Cached legacy ext for legacy instruments
+ var/cached_legacy_ext
+ /// Cached legacy dir for legacy instruments
+ var/cached_legacy_dir
+ /// Cached list of samples, referenced directly from the instrument for synthesized instruments
+ var/list/cached_samples
+ /// Are we operating in legacy mode (so if the instrument is a legacy instrument)
+ var/legacy = FALSE
+ //////////////////////////////////////////////////////
+
+ /////////////////// Playing variables ////////////////
+ /**
+ * Only used in synthesized playback - The chords we compiled. Non assoc list of lists:
+ * list(list(key1, key2, key3..., tempo_divisor), list(key1, key2..., tempo_divisor), ...)
+ * tempo_divisor always exists
+ * if key1 (and so if there's no keys) doesn't exist it's a rest
+ * Compilation happens when we start playing and is cleared after we finish playing.
+ */
+ var/list/compiled_chords
+ /// Channel as text = current volume percentage but it's 0 to 100 instead of 0 to 1.
+ var/list/channels_playing = list()
+ /// List of channels that aren't being used, as text. This is to prevent unnecessary freeing and reallocations from SSsounds/SSinstruments.
+ var/list/channels_idle = list()
+ //////////////////////////////////////////////////////
+
+ /// Last world.time we checked for who can hear us
+ var/last_hearcheck = 0
+ /// The list of mobs that can hear us
+ var/list/hearing_mobs
+ /// If this is enabled, some things won't be strictly cleared when they usually are (liked compiled_chords on play stop)
+ var/debug_mode = FALSE
+ /// Last time we processed decay
+ var/last_process_decay
+ /// Max sound channels to occupy
+ var/max_sound_channels = CHANNELS_PER_INSTRUMENT
+ /// Current channels, so we can save a length() call.
+ var/using_sound_channels = 0
+ /// Last channel to play. text.
+ var/last_channel_played
+ /// Should we not decay our last played note?
+ var/full_sustain_held_note = TRUE
+
+ /////////////////////// DO NOT TOUCH THESE ///////////////////
+ var/octave_min = INSTRUMENT_MIN_OCTAVE
+ var/octave_max = INSTRUMENT_MAX_OCTAVE
+ var/key_min = INSTRUMENT_MIN_KEY
+ var/key_max = INSTRUMENT_MAX_KEY
+ var/static/list/note_offset_lookup = list(9, 11, 0, 2, 4, 5, 7)
+ var/static/list/accent_lookup = list("b" = -1, "s" = 1, "#" = 1, "n" = 0)
+ //////////////////////////////////////////////////////////////
+
+ ///////////// !!FUN!! - Only works in synthesized mode! /////////////////
+ /// Note numbers to shift.
+ var/note_shift = 0
+ var/note_shift_min = -100
+ var/note_shift_max = 100
+ var/can_noteshift = TRUE
+ /// The kind of sustain we're using
+ var/sustain_mode = SUSTAIN_LINEAR
+ /// When a note is considered dead if it is below this in volume
+ var/sustain_dropoff_volume = 0
+ /// Total duration of linear sustain for 100 volume note to get to SUSTAIN_DROPOFF
+ var/sustain_linear_duration = 5
+ /// Exponential sustain dropoff rate per decisecond
+ var/sustain_exponential_dropoff = 1.4
+ ////////// DO NOT DIRECTLY SET THESE!
+ /// Do not directly set, use update_sustain()
+ var/cached_linear_dropoff = 10
+ /// Do not directly set, use update_sustain()
+ var/cached_exponential_dropoff = 1.045
+ /////////////////////////////////////////////////////////////////////////
+
+/datum/song/New(atom/parent, list/instrument_ids)
+ SSinstruments.on_song_new(src)
+ lines = list()
+ tempo = sanitize_tempo(tempo)
+ src.parent = parent
+ if(instrument_ids)
+ allowed_instrument_ids = islist(instrument_ids)? instrument_ids : list(instrument_ids)
+ if(length(allowed_instrument_ids))
+ set_instrument(allowed_instrument_ids[1])
+ hearing_mobs = list()
+ volume = clamp(volume, min_volume, max_volume)
+ update_sustain()
+
+/datum/song/Destroy()
+ stop_playing()
+ SSinstruments.on_song_del(src)
+ lines = null
+ using_instrument = null
+ allowed_instrument_ids = null
+ parent = null
+ return ..()
+
+/datum/song/proc/do_hearcheck()
+ last_hearcheck = world.time
+ var/list/old = hearing_mobs.Copy()
+ hearing_mobs.len = 0
+ var/turf/source = get_turf(parent)
+ for(var/mob/M in get_hearers_in_view(15, source))
+ if(!(M?.client?.prefs?.toggles & SOUND_INSTRUMENTS))
+ continue
+ hearing_mobs[M] = get_dist(M, source)
+ var/list/exited = old - hearing_mobs
+ for(var/i in exited)
+ terminate_sound_mob(i)
+
+/// I can either be a datum, id, or path (if the instrument has no id).
+/datum/song/proc/set_instrument(datum/instrument/I)
+ if(using_instrument)
+ using_instrument.songs_using -= src
+ using_instrument = null
+ cached_samples = null
+ cached_legacy_ext = null
+ cached_legacy_dir = null
+ legacy = null
+ if(istext(I) || ispath(I))
+ I = SSinstruments.instrument_data[I]
+ if(istype(I))
+ using_instrument = I
+ I.songs_using += src
+ var/instrument_legacy = CHECK_BITFIELD(I.instrument_flags, INSTRUMENT_LEGACY)
+ if(instrument_legacy)
+ cached_legacy_ext = I.legacy_instrument_ext
+ cached_legacy_dir = I.legacy_instrument_path
+ legacy = TRUE
+ else
+ cached_samples = I.samples
+ legacy = FALSE
+
+/// THIS IS A BLOCKING CALL.
+/datum/song/proc/start_playing(mob/user)
+ if(playing)
+ return
+ if(!using_instrument?.ready())
+ to_chat(user, "An error has occured with [src]. Please reset the instrument. ")
+ return
+ playing = TRUE
+ updateDialog()
+ //we can not afford to runtime, since we are going to be doing sound channel reservations and if we runtime it means we have a channel allocation leak.
+ //wrap the rest of the stuff to ensure stop_playing() is called.
+ last_process_decay = world.time
+ START_PROCESSING(SSinstruments, src)
+ . = do_play_lines(user)
+ stop_playing()
+
+/datum/song/proc/stop_playing()
+ if(!playing)
+ return
+ playing = FALSE
+ if(!debug_mode)
+ compiled_chords = null
+ STOP_PROCESSING(SSinstruments, src)
+ terminate_all_sounds(TRUE)
+ hearing_mobs.len = 0
+ updateDialog()
+
+/// THIS IS A BLOCKING CALL.
+/datum/song/proc/do_play_lines(user)
+ if(!playing)
+ return
+ do_hearcheck()
+ if(legacy)
+ do_play_lines_legacy(user)
+ else
+ do_play_lines_synthesized(user)
+
+/datum/song/proc/should_stop_playing(mob/user)
+ return QDELETED(parent) || !using_instrument || !playing
+
+/datum/song/proc/sanitize_tempo(new_tempo)
+ new_tempo = abs(new_tempo)
+ return CLAMP(round(new_tempo, world.tick_lag), world.tick_lag, 5 SECONDS)
+
+/datum/song/proc/get_bpm()
+ return 600 / tempo
+
+/datum/song/proc/set_bpm(bpm)
+ tempo = sanitize_tempo(600 / bpm)
+
+/// Updates the window for our user. Override in subtypes.
+/datum/song/proc/updateDialog(mob/user)
+ ui_interact(user)
+
+/datum/song/process(wait)
+ if(!playing)
+ return PROCESS_KILL
+ var/delay = world.time - last_process_decay
+ process_decay(delay)
+ last_process_decay = world.time
+
+/datum/song/proc/update_sustain()
+ // Exponential is easy
+ cached_exponential_dropoff = sustain_exponential_dropoff
+ // Linear, not so much, since it's a target duration from 100 volume rather than an exponential rate.
+ var/target_duration = sustain_linear_duration
+ var/volume_diff = max(0, 100 - sustain_dropoff_volume)
+ var/volume_decrease_per_decisecond = volume_diff / target_duration
+ cached_linear_dropoff = volume_decrease_per_decisecond
+
+/datum/song/proc/set_volume(volume)
+ src.volume = CLAMP(volume, max(0, min_volume), min(100, max_volume))
+ update_sustain()
+ updateDialog()
+
+/datum/song/proc/set_dropoff_volume(volume)
+ sustain_dropoff_volume = CLAMP(volume, INSTRUMENT_MIN_SUSTAIN_DROPOFF, 100)
+ update_sustain()
+ updateDialog()
+
+/datum/song/proc/set_exponential_drop_rate(drop)
+ sustain_exponential_dropoff = CLAMP(drop, INSTRUMENT_EXP_FALLOFF_MIN, INSTRUMENT_EXP_FALLOFF_MAX)
+ update_sustain()
+ updateDialog()
+
+/datum/song/proc/set_linear_falloff_duration(duration)
+ sustain_linear_duration = CLAMP(duration, 0.1, INSTRUMENT_MAX_TOTAL_SUSTAIN)
+ update_sustain()
+ updateDialog()
+
+/datum/song/vv_edit_var(var_name, var_value)
+ . = ..()
+ if(.)
+ switch(var_name)
+ if(NAMEOF(src, volume))
+ set_volume(var_value)
+ if(NAMEOF(src, sustain_dropoff_volume))
+ set_dropoff_volume(var_value)
+ if(NAMEOF(src, sustain_exponential_dropoff))
+ set_exponential_drop_rate(var_value)
+ if(NAMEOF(src, sustain_linear_duration))
+ set_linear_falloff_duration(var_value)
+
+// subtype for handheld instruments, like violin
+/datum/song/handheld
+
+/datum/song/handheld/updateDialog(mob/user)
+ parent.ui_interact(user || usr)
+
+/datum/song/handheld/should_stop_playing(mob/user)
+ . = ..()
+ if(.)
+ return TRUE
+ var/obj/item/instrument/I = parent
+ return I.should_stop_playing(user)
+
+// subtype for stationary structures, like pianos
+/datum/song/stationary
+
+/datum/song/stationary/updateDialog(mob/user)
+ parent.ui_interact(user || usr)
+
+/datum/song/stationary/should_stop_playing(mob/user)
+ . = ..()
+ if(.)
+ return TRUE
+ var/obj/structure/musician/M = parent
+ return M.should_stop_playing(user)
diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm
new file mode 100644
index 0000000000..873ff0e1a7
--- /dev/null
+++ b/code/modules/instruments/songs/editor.dm
@@ -0,0 +1,246 @@
+/datum/song/proc/instrument_status_ui()
+ . = list()
+ . += ""
+ . += "
Current instrument : "
+ if(!using_instrument)
+ . += "
No instrument loaded! "
+ else
+ . += "[using_instrument.name]
"
+ . += "Playback Settings:
"
+ if(can_noteshift)
+ . += "
Note Shift/Note Transpose : [note_shift] keys / [round(note_shift / 12, 0.01)] octaves
"
+ var/smt
+ var/modetext = ""
+ switch(sustain_mode)
+ if(SUSTAIN_LINEAR)
+ smt = "Linear"
+ modetext = "
Linear Sustain Duration : [sustain_linear_duration / 10] seconds
"
+ if(SUSTAIN_EXPONENTIAL)
+ smt = "Exponential"
+ modetext = "
Exponential Falloff Factor : [sustain_exponential_dropoff]% per decisecond
"
+ . += "
Sustain Mode : [smt]
"
+ . += modetext
+ . += using_instrument?.ready()? "Status:
Ready " : "Status:
!Instrument Definition Error! "
+ . += "Instrument Type: [legacy? "Legacy" : "Synthesized"]
"
+ . += "
Volume : [volume]
"
+ . += "
Volume Dropoff Threshold : [sustain_dropoff_volume]
"
+ . += "
Sustain indefinitely last held note : [full_sustain_held_note? "Enabled" : "Disabled"].
"
+ . += "
"
+
+/datum/song/ui_interact(mob/user)
+ var/list/dat = list()
+
+ dat += instrument_status_ui()
+
+ if(lines.len > 0)
+ dat += "Playback "
+ if(!playing)
+ dat += "Play Stop "
+ dat += "Repeat Song: "
+ dat += repeat > 0 ? "- - " : "- - "
+ dat += " [repeat] times "
+ dat += repeat < max_repeats ? "+ + " : "+ + "
+ dat += " "
+ else
+ dat += "Play Stop "
+ dat += "Repeats left: [repeat] "
+ if(!editing)
+ dat += "Show Editor "
+ else
+ dat += "Editing "
+ dat += "Hide Editor "
+ dat += " Start a New Song "
+ dat += " Import a Song "
+ var/bpm = round(600 / tempo)
+ dat += "Tempo: - [bpm] BPM + "
+ var/linecount = 0
+ for(var/line in lines)
+ linecount += 1
+ dat += "Line [linecount]: Edit X [line] "
+ dat += "Add Line "
+ if(help)
+ dat += "Hide Help "
+ dat += {"
+ Lines are a series of chords, separated by commas (,), each with notes separated by hyphens (-).
+ Every note in a chord will play together, with chord timed by the tempo.
+
+ Notes are played by the names of the note, and optionally, the accidental, and/or the octave number.
+ By default, every note is natural and in octave 3. Defining otherwise is remembered for each note.
+ Example: C,D,E,F,G,A,B will play a C major scale.
+ After a note has an accidental placed, it will be remembered: C,C4,C,C3 is C3,C4,C4,C3
+ Chords can be played simply by seperating each note with a hyphon: A-C#,Cn-E,E-G#,Gn-B
+ A pause may be denoted by an empty chord: C,E,,C,G
+ To make a chord be a different time, end it with /x, where the chord length will be length
+ defined by tempo / x: C,G/2,E/4
+ Combined, an example is: E-E4/4,F#/2,G#/8,B/8,E3-E4/4
+
+ Lines may be up to [MUSIC_MAXLINECHARS] characters.
+ A song may only contain up to [MUSIC_MAXLINES] lines.
+ "}
+ else
+ dat += "Show Help "
+
+ var/datum/browser/popup = new(user, "instrument", parent?.name || "instrument", 700, 500)
+ popup.set_content(dat.Join(""))
+ popup.set_title_image(user.browse_rsc_icon(parent.icon, parent.icon_state))
+ popup.open()
+
+/datum/song/proc/ParseSong(text)
+ set waitfor = FALSE
+ //split into lines
+ lines = splittext(text, "\n")
+ if(lines.len)
+ var/bpm_string = "BPM: "
+ if(findtext(lines[1], bpm_string, 1, length(bpm_string) + 1))
+ var/divisor = text2num(copytext(lines[1], length(bpm_string) + 1)) || 120 // default
+ tempo = sanitize_tempo(600 / round(divisor, 1))
+ lines.Cut(1, 2)
+ else
+ tempo = sanitize_tempo(5) // default 120 BPM
+ if(lines.len > MUSIC_MAXLINES)
+ to_chat(usr, "Too many lines!")
+ lines.Cut(MUSIC_MAXLINES + 1)
+ var/linenum = 1
+ for(var/l in lines)
+ if(length_char(l) > MUSIC_MAXLINECHARS)
+ to_chat(usr, "Line [linenum] too long!")
+ lines.Remove(l)
+ else
+ linenum++
+ updateDialog(usr) // make sure updates when complete
+
+/datum/song/Topic(href, href_list)
+ if(!usr.canUseTopic(parent, TRUE, FALSE, FALSE, FALSE))
+ usr << browse(null, "window=instrument")
+ usr.unset_machine()
+ return
+
+ parent.add_fingerprint(usr)
+
+ if(href_list["newsong"])
+ lines = new()
+ tempo = sanitize_tempo(5) // default 120 BPM
+ name = ""
+
+ else if(href_list["import"])
+ var/t = ""
+ do
+ t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message)
+ if(!in_range(parent, usr))
+ return
+
+ if(length_char(t) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
+ var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no")
+ if(cont == "no")
+ break
+ while(length_char(t) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
+ ParseSong(t)
+
+ else if(href_list["help"])
+ help = text2num(href_list["help"]) - 1
+
+ else if(href_list["edit"])
+ editing = text2num(href_list["edit"]) - 1
+
+ if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops.
+ if(playing)
+ return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing.
+ repeat += round(text2num(href_list["repeat"]))
+ if(repeat < 0)
+ repeat = 0
+ if(repeat > max_repeats)
+ repeat = max_repeats
+
+ else if(href_list["tempo"])
+ tempo = sanitize_tempo(tempo + text2num(href_list["tempo"]))
+
+ else if(href_list["play"])
+ INVOKE_ASYNC(src, .proc/start_playing, usr)
+
+ else if(href_list["newline"])
+ var/newline = html_encode(input("Enter your line: ", parent.name) as text|null)
+ if(!newline || !in_range(parent, usr))
+ return
+ if(lines.len > MUSIC_MAXLINES)
+ return
+ if(length(newline) > MUSIC_MAXLINECHARS)
+ newline = copytext(newline, 1, MUSIC_MAXLINECHARS)
+ lines.Add(newline)
+
+ else if(href_list["deleteline"])
+ var/num = round(text2num(href_list["deleteline"]))
+ if(num > lines.len || num < 1)
+ return
+ lines.Cut(num, num+1)
+
+ else if(href_list["modifyline"])
+ var/num = round(text2num(href_list["modifyline"]),1)
+ var/content = stripped_input(usr, "Enter your line: ", parent.name, lines[num], MUSIC_MAXLINECHARS)
+ if(!content || !in_range(parent, usr))
+ return
+ if(num > lines.len || num < 1)
+ return
+ lines[num] = content
+
+ else if(href_list["stop"])
+ stop_playing()
+
+ else if(href_list["setlinearfalloff"])
+ var/amount = input(usr, "Set linear sustain duration in seconds", "Linear Sustain Duration") as null|num
+ if(!isnull(amount))
+ set_linear_falloff_duration(round(amount * 10, world.tick_lag))
+
+ else if(href_list["setexpfalloff"])
+ var/amount = input(usr, "Set exponential sustain factor", "Exponential sustain factor") as null|num
+ if(!isnull(amount))
+ set_exponential_drop_rate(round(amount, 0.00001))
+
+ else if(href_list["setvolume"])
+ var/amount = input(usr, "Set volume", "Volume") as null|num
+ if(!isnull(amount))
+ set_volume(round(amount, 1))
+
+ else if(href_list["setdropoffvolume"])
+ var/amount = input(usr, "Set dropoff threshold", "Dropoff Threshold Volume") as null|num
+ if(!isnull(amount))
+ set_dropoff_volume(round(amount, 0.01))
+
+ else if(href_list["switchinstrument"])
+ if(!length(allowed_instrument_ids))
+ return
+ else if(length(allowed_instrument_ids) == 1)
+ set_instrument(allowed_instrument_ids[1])
+ return
+ var/list/categories = list()
+ for(var/i in allowed_instrument_ids)
+ var/datum/instrument/I = SSinstruments.get_instrument(i)
+ if(I)
+ LAZYSET(categories[I.category || "ERROR CATEGORY"], I.name, I.id)
+ var/cat = input(usr, "Select Category", "Instrument Category") as null|anything in categories
+ if(!cat)
+ return
+ var/list/instruments = categories[cat]
+ var/choice = input(usr, "Select Instrument", "Instrument Selection") as null|anything in instruments
+ if(!choice)
+ return
+ choice = instruments[choice] //get id
+ if(choice)
+ set_instrument(choice)
+
+ else if(href_list["setnoteshift"])
+ var/amount = input(usr, "Set note shift", "Note Shift") as null|num
+ if(!isnull(amount))
+ note_shift = CLAMP(amount, note_shift_min, note_shift_max)
+
+ else if(href_list["setsustainmode"])
+ var/choice = input(usr, "Choose a sustain mode", "Sustain Mode") as null|anything in list("Linear", "Exponential")
+ switch(choice)
+ if("Linear")
+ sustain_mode = SUSTAIN_LINEAR
+ if("Exponential")
+ sustain_mode = SUSTAIN_EXPONENTIAL
+
+ else if(href_list["togglesustainhold"])
+ full_sustain_held_note = !full_sustain_held_note
+
+ updateDialog()
diff --git a/code/modules/instruments/songs/play_legacy.dm b/code/modules/instruments/songs/play_legacy.dm
new file mode 100644
index 0000000000..fa64656ebc
--- /dev/null
+++ b/code/modules/instruments/songs/play_legacy.dm
@@ -0,0 +1,82 @@
+/// Playing legacy instruments - None of the "advanced" like sound reservations and decay are invoked.
+/datum/song/proc/do_play_lines_legacy(mob/user)
+ while(repeat >= 0)
+ var/cur_oct[7]
+ var/cur_acc[7]
+ for(var/i = 1 to 7)
+ cur_oct[i] = 3
+ cur_acc[i] = "n"
+
+ for(var/line in lines)
+ for(var/beat in splittext(lowertext(line), ","))
+ if(should_stop_playing(user))
+ return
+ var/list/notes = splittext(beat, "/")
+ if(length(notes)) //because some jack-butts are going to do ,,,, to symbolize 3 rests instead of something reasonable like ,/1.
+ for(var/note in splittext(notes[1], "-"))
+ if(length(note) == 0)
+ continue
+ var/cur_note = text2ascii(note) - 96
+ if(cur_note < 1 || cur_note > 7)
+ continue
+ for(var/i=2 to length(note))
+ var/ni = copytext(note,i,i+1)
+ if(!text2num(ni))
+ if(ni == "#" || ni == "b" || ni == "n")
+ cur_acc[cur_note] = ni
+ else if(ni == "s")
+ cur_acc[cur_note] = "#" // so shift is never required
+ else
+ cur_oct[cur_note] = text2num(ni)
+ playnote_legacy(cur_note, cur_acc[cur_note], cur_oct[cur_note])
+ if(notes.len >= 2 && text2num(notes[2]))
+ sleep(sanitize_tempo(tempo / text2num(notes[2])))
+ else
+ sleep(tempo)
+ if(should_stop_playing(user))
+ return
+ repeat--
+ updateDialog()
+ repeat = 0
+
+// note is a number from 1-7 for A-G
+// acc is either "b", "n", or "#"
+// oct is 1-8 (or 9 for C)
+/datum/song/proc/playnote_legacy(note, acc as text, oct)
+ // handle accidental -> B<>C of E<>F
+ if(acc == "b" && (note == 3 || note == 6)) // C or F
+ if(note == 3)
+ oct--
+ note--
+ acc = "n"
+ else if(acc == "#" && (note == 2 || note == 5)) // B or E
+ if(note == 2)
+ oct++
+ note++
+ acc = "n"
+ else if(acc == "#" && (note == 7)) //G#
+ note = 1
+ acc = "b"
+ else if(acc == "#") // mass convert all sharps to flats, octave jump already handled
+ acc = "b"
+ note++
+
+ // check octave, C is allowed to go to 9
+ if(oct < 1 || (note == 3 ? oct > 9 : oct > 8))
+ return
+
+ // now generate name
+ var/soundfile = "sound/instruments/[cached_legacy_dir]/[ascii2text(note+64)][acc][oct].[cached_legacy_ext]"
+ soundfile = file(soundfile)
+ // make sure the note exists
+ if(!fexists(soundfile))
+ return
+ // and play
+ var/turf/source = get_turf(parent)
+ if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck)
+ do_hearcheck()
+ var/sound/music_played = sound(soundfile)
+ for(var/i in hearing_mobs)
+ var/mob/M = i
+ M.playsound_local(source, null, volume * using_instrument.volume_multiplier, falloff = 5, S = music_played)
+ // Could do environment and echo later but not for now
diff --git a/code/modules/instruments/songs/play_synthesized.dm b/code/modules/instruments/songs/play_synthesized.dm
new file mode 100644
index 0000000000..2573da324a
--- /dev/null
+++ b/code/modules/instruments/songs/play_synthesized.dm
@@ -0,0 +1,135 @@
+/datum/song/proc/do_play_lines_synthesized(mob/user)
+ compile_lines()
+ while(repeat >= 0)
+ if(should_stop_playing(user))
+ return
+ var/warned = FALSE
+ for(var/_chord in compiled_chords)
+ if(should_stop_playing(user))
+ return
+ var/list/chord = _chord
+ var/tempodiv = chord[chord.len]
+ for(var/i in 1 to chord.len - 1)
+ var/key = chord[i]
+ if(!playkey_synth(key))
+ if(!warned)
+ warned = TRUE
+ to_chat(user, "Your instrument has ran out of channels. You might be playing your song too fast or be setting sustain to too high of a value. This warning will be suppressed for the rest of this cycle. ")
+ sleep(sanitize_tempo(tempo / (tempodiv || 1)))
+ repeat--
+ updateDialog()
+ repeat = 0
+
+/// C-Db2-A-A4/2,A-B#4-C/3,/4,A,A-B-C as an example
+/datum/song/proc/compile_lines()
+ if(!length(src.lines))
+ return
+ var/list/lines = src.lines //cache for hyepr speed!
+ compiled_chords = list()
+ var/list/octaves = list(3, 3, 3, 3, 3, 3, 3)
+ var/list/accents = list("n", "n", "n", "n", "n", "n", "n")
+ for(var/line in lines)
+ var/list/chords = splittext(lowertext(line), ",")
+ for(var/chord in chords)
+ var/list/compiled_chord = list()
+ var/tempodiv = 1
+ var/list/notes_tempodiv = splittext(chord, "/")
+ var/len = length(notes_tempodiv)
+ if(len >= 2)
+ tempodiv = text2num(notes_tempodiv[2])
+ if(len) //some dunkass is going to do ,,,, to make 3 rests instead of ,/1 because there's no standardization so let's be prepared for that.
+ var/list/notes = splittext(notes_tempodiv[1], "-")
+ for(var/note in notes)
+ if(length(note) == 0)
+ continue
+ // 1-7, A-G
+ var/key = text2ascii(note) - 96
+ if((key < 1) || (key > 7))
+ continue
+ for(var/i in 2 to length(note))
+ var/oct_acc = copytext(note, i, i + 1)
+ var/num = text2num(oct_acc)
+ if(!num) //it's an accidental
+ accents[key] = oct_acc //if they misspelled it/fucked up that's on them lmao, no safety checks.
+ else //octave
+ octaves[key] = CLAMP(num, octave_min, octave_max)
+ compiled_chord += CLAMP((note_offset_lookup[key] + octaves[key] * 12 + accent_lookup[accents[key]]), key_min, key_max)
+ compiled_chord += tempodiv //this goes last
+ if(length(compiled_chord))
+ compiled_chords[++compiled_chords.len] = compiled_chord
+ CHECK_TICK
+ return compiled_chords
+
+/datum/song/proc/playkey_synth(key)
+ if(can_noteshift)
+ key = clamp(key + note_shift, key_min, key_max)
+ if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck)
+ do_hearcheck()
+ var/datum/instrument_key/K = using_instrument.samples[num2text(key)] //See how fucking easy it is to make a number text? You don't need a complicated 9 line proc!
+ //Should probably add channel limiters here at some point but I don't care right now.
+ var/channel = pop_channel()
+ if(isnull(channel))
+ return FALSE
+ . = TRUE
+ var/sound/copy = sound(K.sample)
+ var/volume = src.volume * using_instrument.volume_multiplier
+ copy.frequency = K.frequency
+ copy.volume = volume
+ var/channel_text = num2text(channel)
+ channels_playing[channel_text] = 100
+ last_channel_played = channel_text
+ for(var/i in hearing_mobs)
+ var/mob/M = i
+ M.playsound_local(get_turf(parent), null, volume, FALSE, K.frequency, INSTRUMENT_DISTANCE_NO_FALLOFF, channel, null, copy, distance_multiplier = INSTRUMENT_DISTANCE_FALLOFF_BUFF)
+ // Could do environment and echo later but not for now
+
+/datum/song/proc/terminate_all_sounds(clear_channels = TRUE)
+ for(var/i in hearing_mobs)
+ terminate_sound_mob(i)
+ if(clear_channels)
+ channels_playing.len = 0
+ channels_idle.len = 0
+ SSinstruments.current_instrument_channels -= using_sound_channels
+ using_sound_channels = 0
+ SSsounds.free_datum_channels(src)
+
+/datum/song/proc/terminate_sound_mob(mob/M)
+ for(var/channel in channels_playing)
+ M.stop_sound_channel(text2num(channel))
+
+/datum/song/proc/pop_channel()
+ if(length(channels_idle)) //just pop one off of here if we have one available
+ . = text2num(channels_idle[1])
+ channels_idle.Cut(1,2)
+ return
+ if(using_sound_channels >= max_sound_channels)
+ return
+ . = SSinstruments.reserve_instrument_channel(src)
+ if(!isnull(.))
+ using_sound_channels++
+
+/datum/song/proc/process_decay(wait_ds)
+ var/linear_dropoff = cached_linear_dropoff * wait_ds
+ var/exponential_dropoff = cached_exponential_dropoff ** wait_ds
+ for(var/channel in channels_playing)
+ if(full_sustain_held_note && (channel == last_channel_played))
+ continue
+ var/current_volume = channels_playing[channel]
+ switch(sustain_mode)
+ if(SUSTAIN_LINEAR)
+ current_volume -= linear_dropoff
+ if(SUSTAIN_EXPONENTIAL)
+ current_volume /= exponential_dropoff
+ channels_playing[channel] = current_volume
+ var/dead = current_volume <= sustain_dropoff_volume
+ var/channelnumber = text2num(channel)
+ if(dead)
+ channels_playing -= channel
+ channels_idle += channel
+ for(var/i in hearing_mobs)
+ var/mob/M = i
+ M.stop_sound_channel(channelnumber)
+ else
+ for(var/i in hearing_mobs)
+ var/mob/M = i
+ M.set_sound_channel_volume(channelnumber, (current_volume * 0.01) * volume * using_instrument.volume_multiplier)
diff --git a/code/modules/integrated_electronics/subtypes/smart.dm b/code/modules/integrated_electronics/subtypes/smart.dm
index d4c565c49a..d0c47f0950 100644
--- a/code/modules/integrated_electronics/subtypes/smart.dm
+++ b/code/modules/integrated_electronics/subtypes/smart.dm
@@ -18,8 +18,8 @@
var/datum/integrated_io/I = inputs[1]
set_pin_data(IC_OUTPUT, 1, null)
if(!isweakref(I.data))
- return
activate_pin(3)
+ return
var/atom/A = I.data.resolve()
if(!A)
activate_pin(3)
diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm
index c5065cd169..0d70e872ac 100644
--- a/code/modules/jobs/job_types/chief_engineer.dm
+++ b/code/modules/jobs/job_types/chief_engineer.dm
@@ -42,7 +42,7 @@
uniform = /obj/item/clothing/under/rank/engineering/chief_engineer
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/hardhat/white
- gloves = /obj/item/clothing/gloves/color/black/ce
+ gloves = /obj/item/clothing/gloves/color/black
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/storage/backpack/industrial
diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm
index 811dff87e7..3cf4fbb102 100644
--- a/code/modules/jobs/job_types/head_of_security.dm
+++ b/code/modules/jobs/job_types/head_of_security.dm
@@ -42,7 +42,7 @@
uniform = /obj/item/clothing/under/rank/security/head_of_security
shoes = /obj/item/clothing/shoes/jackboots
suit = /obj/item/clothing/suit/armor/hos/trenchcoat
- gloves = /obj/item/clothing/gloves/color/black/hos
+ gloves = /obj/item/clothing/gloves/color/black
head = /obj/item/clothing/head/HoS/beret
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
suit_store = /obj/item/gun/energy/e_gun
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index e83ac26153..30eed6c8f0 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -117,10 +117,10 @@
glass_overlay.appearance_flags = RESET_COLOR
. += glass_overlay
-/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands, icon_file, style_flags = NONE)
+/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands)
- var/mutable_appearance/M = mutable_appearance('icons/mob/head.dmi', "hostile_env_glass")
+ var/mutable_appearance/M = mutable_appearance('icons/mob/clothing/head.dmi', "hostile_env_glass")
M.appearance_flags = RESET_COLOR
. += M
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index a95c0e24ed..56e1a04b95 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -835,9 +835,9 @@
force = CLAMP((ghost_counter * 4), 0, 75)
user.visible_message("[user] strikes with the force of [ghost_counter] vengeful spirits! ")
- ..()
+ return ..()
-/obj/item/melee/ghost_sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/melee/ghost_sword/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
var/ghost_counter = ghost_check()
final_block_chance += CLAMP((ghost_counter * 5), 0, 75)
owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts! ")
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index c212c22c98..f10229f4bf 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -87,14 +87,6 @@
return
. = ..()
-/obj/machinery/computer/shuttle/mining/common
- name = "lavaland shuttle console"
- desc = "Used to call and send the lavaland shuttle."
- req_access = list()
- circuit = /obj/item/circuitboard/computer/mining_shuttle/common
- shuttleId = "mining_common"
- possible_destinations = "lavaland_common_away;commonmining_home"
-
/**********************Mining car (Crate like thing, not the rail car)**************************/
/obj/structure/closet/crate/miningcar
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
index 4365e59a7a..ab278b2e82 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
@@ -76,7 +76,7 @@
var/list/recommended_species
/datum/sprite_accessory/underwear
- icon = 'icons/mob/underwear.dmi'
+ icon = 'icons/mob/clothing/underwear.dmi'
var/has_color = FALSE
var/has_digitigrade = FALSE
var/covers_groin = FALSE
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 78e38c5b89..b2d02d8fa2 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -263,19 +263,36 @@ Works together with spawning an observer, noted above.
*/
/mob/proc/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE, voluntary = FALSE)
- penalize = suiciding || penalize // suicide squad.
+ var/sig_flags = SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, can_reenter_corpse, special, penalize)
+ penalize = !(sig_flags & COMPONENT_DO_NOT_PENALIZE_GHOSTING) && (suiciding || penalize) // suicide squad.
voluntary_ghosted = voluntary
- if(!key || key[1] == "@" || (SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, can_reenter_corpse, special, penalize) & COMPONENT_BLOCK_GHOSTING))
+ if(!key || key[1] == "@" || (sig_flags & COMPONENT_BLOCK_GHOSTING))
return //mob has no key, is an aghost or some component hijacked.
stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now
var/mob/dead/observer/ghost = new(get_turf(src), src) // Transfer safety to observer spawning proc.
SStgui.on_transfer(src, ghost) // Transfer NanoUIs.
- ghost.can_reenter_corpse = can_reenter_corpse
+ ghost.can_reenter_corpse = can_reenter_corpse || (sig_flags & COMPONENT_FREE_GHOSTING)
if (client && client.prefs && client.prefs.auto_ooc)
if (!(client.prefs.chat_toggles & CHAT_OOC))
client.prefs.chat_toggles ^= CHAT_OOC
transfer_ckey(ghost, FALSE)
- ghost.AddElement(/datum/element/ghost_role_eligibility,penalize) // technically already run earlier, but this adds the penalty
+ if(penalize)
+ var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES
+ var/roundstart_quit_limit = CONFIG_GET(number/roundstart_suicide_time_limit) MINUTES
+ if(world.time < roundstart_quit_limit) //add up the time difference to their antag rolling penalty if they quit before half a (ingame) hour even passed.
+ penalty += roundstart_quit_limit - world.time
+ if(penalty)
+ penalty += world.realtime
+ if(SSautotransfer.can_fire && SSautotransfer.maxvotes)
+ var/maximumRoundEnd = SSautotransfer.starttime + SSautotransfer.voteinterval * SSautotransfer.maxvotes
+ if(penalty - SSshuttle.realtimeofstart > maximumRoundEnd + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime)
+ penalty = CANT_REENTER_ROUND
+ if(!(ckey in GLOB.client_ghost_timeouts))
+ GLOB.client_ghost_timeouts += ckey
+ GLOB.client_ghost_timeouts[ckey] = 0
+ else if(GLOB.client_ghost_timeouts[ckey] == CANT_REENTER_ROUND)
+ return
+ GLOB.client_ghost_timeouts[ckey] = max(GLOB.client_ghost_timeouts[ckey],penalty)
// needs to be done AFTER the ckey transfer, too
return ghost
@@ -297,12 +314,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(penalty - SSshuttle.realtimeofstart > maximumRoundEnd + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime)
penalty = CANT_REENTER_ROUND
- if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE, (stat == DEAD)? penalty : 0, (stat == DEAD)? TRUE : FALSE) & COMPONENT_BLOCK_GHOSTING)
+ var/sig_flags = SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE, (stat == DEAD)? penalty : 0, (stat == DEAD)? TRUE : FALSE)
+
+ if(sig_flags & COMPONENT_BLOCK_GHOSTING)
return
+ if(sig_flags & COMPONENT_DO_NOT_PENALIZE_GHOSTING)
+ penalty = 0
+
if(stat != DEAD)
succumb()
- if(stat == DEAD)
+ if(stat == DEAD || sig_flags & COMPONENT_FREE_GHOSTING)
ghostize(1)
else
var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst alive you won't be able to re-enter this round [penalty ? "or play ghost roles [penalty == CANT_REENTER_ROUND ? "until the round is over" : "for the next [DisplayTimeText(penalty)]"]" : ""]! You can't change your mind so choose wisely!!)","Are you sure you want to ghost?","Ghost","Stay in body")
@@ -321,7 +343,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set name = "Ghost"
set desc = "Relinquish your life and enter the land of the dead."
- if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, FALSE, FALSE) & COMPONENT_BLOCK_GHOSTING)
+ var/sig_flags = SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, FALSE, FALSE)
+
+ if(sig_flags & COMPONENT_BLOCK_GHOSTING)
return
var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES
@@ -333,10 +357,16 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(penalty - SSshuttle.realtimeofstart > maximumRoundEnd + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime)
penalty = CANT_REENTER_ROUND
- var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst alive you won't be able to re-enter this round [penalty ? "or play ghost roles [penalty == CANT_REENTER_ROUND ? "until the round is over" : "for the next [DisplayTimeText(penalty)]"]" : ""]! You can't change your mind so choose wisely!!)","Are you sure you want to ghost?","Ghost","Stay in body")
- if(response != "Ghost")
- return
- ghostize(0, penalize = TRUE)
+ if(sig_flags & COMPONENT_DO_NOT_PENALIZE_GHOSTING)
+ penalty = 0
+
+ if(sig_flags & COMPONENT_FREE_GHOSTING)
+ ghostize(1)
+ else
+ var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst alive you won't be able to re-enter this round [penalty ? "or play ghost roles [penalty == CANT_REENTER_ROUND ? "until the round is over" : "for the next [DisplayTimeText(penalty)]"]" : ""]! You can't change your mind so choose wisely!!)","Are you sure you want to ghost?","Ghost","Stay in body")
+ if(response != "Ghost")
+ return
+ ghostize(0, penalize = TRUE)
@@ -670,7 +700,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return 0
transfer_ckey(target, FALSE)
- target.AddElement(/datum/element/ghost_role_eligibility)
+ target.AddElement(/datum/element/ghost_role_eligibility, penalize_on_ghost = FALSE, free_ghosting = TRUE)
target.faction = list("neutral")
return 1
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index ef6a372f9e..42b2c4433b 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -21,14 +21,13 @@ Doesn't work on other aliens/AI.*/
. = ..()
action = new(src)
-/obj/effect/proc_holder/alien/Click()
- if(!iscarbon(usr))
- return 1
- var/mob/living/carbon/user = usr
- if(cost_check(check_turf,user))
+/obj/effect/proc_holder/alien/Trigger(mob/living/carbon/user, skip_cost_check)
+ if(!istype(user))
+ return TRUE
+ if(!skip_cost_check || cost_check(check_turf,user))
if(fire(user) && user) // Second check to prevent runtimes when evolving
user.adjustPlasma(-plasma_cost)
- return 1
+ return TRUE
/obj/effect/proc_holder/alien/on_gain(mob/living/carbon/user)
return
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index e0647159a5..faea8e9bbc 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -63,13 +63,13 @@
if(hit_atom)
if(isliving(hit_atom))
var/mob/living/L = hit_atom
- if(!L.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK))
+ if(L.run_block(src, 0, "the [name]", ATTACK_TYPE_TACKLE, 0, src) & BLOCK_SUCCESS)
+ DefaultCombatKnockdown(40, 1, 1)
+ else
L.visible_message("[src] pounces on [L]! ", "[src] pounces on you! ")
L.DefaultCombatKnockdown(100)
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
step_towards(src,L)
- else
- DefaultCombatKnockdown(40, 1, 1)
toggle_leap(0)
else if(hit_atom.density && !hit_atom.CanPass(src))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index a2952bf8de..f0e94e4845 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -430,7 +430,6 @@
else
dropItemToGround(I)
return
- return TRUE
/mob/living/carbon/get_standard_pixel_y_offset(lying = 0)
if(lying)
@@ -984,14 +983,121 @@
/mob/living/carbon/vv_get_dropdown()
. = ..()
- . += "---"
- .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=[REF(src)]"
- .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=[REF(src)]"
- .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=[REF(src)]"
- .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]"
- .["Give martial arts"] = "?_src_=vars;[HrefToken()];givemartialart=[REF(src)]"
- .["Give brain trauma"] = "?_src_=vars;[HrefToken()];givetrauma=[REF(src)]"
- .["Cure brain traumas"] = "?_src_=vars;[HrefToken()];curetraumas=[REF(src)]"
+ VV_DROPDOWN_OPTION("", "---------")
+ VV_DROPDOWN_OPTION(VV_HK_MAKE_AI, "Make AI")
+ VV_DROPDOWN_OPTION(VV_HK_MODIFY_BODYPART, "Modify bodypart")
+ VV_DROPDOWN_OPTION(VV_HK_MODIFY_ORGANS, "Modify organs")
+ VV_DROPDOWN_OPTION(VV_HK_HALLUCINATION, "Hallucinate")
+ VV_DROPDOWN_OPTION(VV_HK_MARTIAL_ART, "Give Martial Arts")
+ VV_DROPDOWN_OPTION(VV_HK_GIVE_TRAUMA, "Give Brain Trauma")
+ VV_DROPDOWN_OPTION(VV_HK_CURE_TRAUMA, "Cure Brain Traumas")
+
+/mob/living/carbon/vv_do_topic(list/href_list)
+ . = ..()
+ if(href_list[VV_HK_MODIFY_BODYPART])
+ if(!check_rights(R_SPAWN))
+ return
+ var/edit_action = input(usr, "What would you like to do?","Modify Body Part") as null|anything in list("add","remove", "augment")
+ if(!edit_action)
+ return
+ var/list/limb_list = list()
+ if(edit_action == "remove" || edit_action == "augment")
+ for(var/obj/item/bodypart/B in bodyparts)
+ limb_list += B.body_zone
+ if(edit_action == "remove")
+ limb_list -= BODY_ZONE_CHEST
+ else
+ limb_list = list(BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
+ for(var/obj/item/bodypart/B in bodyparts)
+ limb_list -= B.body_zone
+ var/result = input(usr, "Please choose which body part to [edit_action]","[capitalize(edit_action)] Body Part") as null|anything in limb_list
+ if(result)
+ var/obj/item/bodypart/BP = get_bodypart(result)
+ switch(edit_action)
+ if("remove")
+ if(BP)
+ BP.drop_limb()
+ else
+ to_chat(usr, "[src] doesn't have such bodypart.")
+ if("add")
+ if(BP)
+ to_chat(usr, "[src] already has such bodypart.")
+ else
+ if(!regenerate_limb(result))
+ to_chat(usr, "[src] cannot have such bodypart.")
+ if("augment")
+ if(ishuman(src))
+ if(BP)
+ BP.change_bodypart_status(BODYPART_ROBOTIC, TRUE, TRUE)
+ else
+ to_chat(usr, "[src] doesn't have such bodypart.")
+ else
+ to_chat(usr, "Only humans can be augmented.")
+ admin_ticket_log("[key_name_admin(usr)] has modified the bodyparts of [src]")
+ if(href_list[VV_HK_MAKE_AI])
+ if(!check_rights(R_SPAWN))
+ return
+ if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
+ return
+ usr.client.holder.Topic("vv_override", list("makeai"=href_list[VV_HK_TARGET]))
+ if(href_list[VV_HK_MODIFY_ORGANS])
+ if(!check_rights(NONE))
+ return
+ usr.client.manipulate_organs(src)
+ if(href_list[VV_HK_MARTIAL_ART])
+ if(!check_rights(NONE))
+ return
+ var/list/artpaths = subtypesof(/datum/martial_art)
+ var/list/artnames = list()
+ for(var/i in artpaths)
+ var/datum/martial_art/M = i
+ artnames[initial(M.name)] = M
+ var/result = input(usr, "Choose the martial art to teach","JUDO CHOP") as null|anything in artnames
+ if(!usr)
+ return
+ if(QDELETED(src))
+ to_chat(usr, "Mob doesn't exist anymore")
+ return
+ if(result)
+ var/chosenart = artnames[result]
+ var/datum/martial_art/MA = new chosenart
+ MA.teach(src)
+ log_admin("[key_name(usr)] has taught [MA] to [key_name(src)].")
+ message_admins("[key_name_admin(usr)] has taught [MA] to [key_name_admin(src)]. ")
+ if(href_list[VV_HK_GIVE_TRAUMA])
+ if(!check_rights(NONE))
+ return
+ var/list/traumas = subtypesof(/datum/brain_trauma)
+ var/result = input(usr, "Choose the brain trauma to apply","Traumatize") as null|anything in traumas
+ if(!usr)
+ return
+ if(QDELETED(src))
+ to_chat(usr, "Mob doesn't exist anymore")
+ return
+ if(!result)
+ return
+ var/datum/brain_trauma/BT = gain_trauma(result)
+ if(BT)
+ log_admin("[key_name(usr)] has traumatized [key_name(src)] with [BT.name]")
+ message_admins("[key_name_admin(usr)] has traumatized [key_name_admin(src)] with [BT.name]. ")
+ if(href_list[VV_HK_CURE_TRAUMA])
+ if(!check_rights(NONE))
+ return
+ cure_all_traumas(TRAUMA_RESILIENCE_ABSOLUTE)
+ log_admin("[key_name(usr)] has cured all traumas from [key_name(src)].")
+ message_admins("[key_name_admin(usr)] has cured all traumas from [key_name_admin(src)]. ")
+ if(href_list[VV_HK_HALLUCINATION])
+ if(!check_rights(NONE))
+ return
+ var/list/hallucinations = subtypesof(/datum/hallucination)
+ var/result = input(usr, "Choose the hallucination to apply","Send Hallucination") as null|anything in hallucinations
+ if(!usr)
+ return
+ if(QDELETED(src))
+ to_chat(usr, "Mob doesn't exist anymore")
+ return
+ if(result)
+ new result(src, TRUE)
/mob/living/carbon/can_resist()
return bodyparts.len > 2 && ..()
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 836560ca99..9c4f0316b7 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -9,7 +9,7 @@
if(istype(src.glasses, /obj/item/clothing/glasses)) //glasses
var/obj/item/clothing/glasses/GFP = src.glasses
number += GFP.flash_protect
-
+
if(istype(src.wear_mask, /obj/item/clothing/mask)) //mask
var/obj/item/clothing/mask/MFP = src.wear_mask
number += MFP.flash_protect
@@ -86,13 +86,10 @@
if(!(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
totitemdamage *= 1.5
//CIT CHANGES END HERE
- if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration))
+ var/impacting_zone = (user == src)? check_zone(user.zone_selected) : ran_zone(user.zone_selected)
+ if((user != src) && (run_block(I, totitemdamage, "the [I]", ATTACK_TYPE_MELEE, I.armour_penetration, user, impacting_zone) & BLOCK_SUCCESS))
return FALSE
- var/obj/item/bodypart/affecting
- if(user == src)
- affecting = get_bodypart(check_zone(user.zone_selected)) //we're self-mutilating! yay!
- else
- affecting = get_bodypart(ran_zone(user.zone_selected))
+ var/obj/item/bodypart/affecting = get_bodypart(impacting_zone)
if(!affecting) //missing limb? we select the first bodypart (you can never have zero, because of chest)
affecting = bodyparts[1]
SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting)
@@ -278,6 +275,8 @@
if(health >= 0 && !(HAS_TRAIT(src, TRAIT_FAKEDEATH)))
var/friendly_check = FALSE
+ if(run_block(M, 0, M.name, ATTACK_TYPE_UNARMED))
+ return
if(lying)
if(buckled)
to_chat(M, "You need to unbuckle [src] first to do that!")
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index a515693047..94aba6851a 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -849,15 +849,95 @@
/mob/living/carbon/human/vv_get_dropdown()
. = ..()
- . += "---"
- .["Make monkey"] = "?_src_=vars;[HrefToken()];makemonkey=[REF(src)]"
- .["Set Species"] = "?_src_=vars;[HrefToken()];setspecies=[REF(src)]"
- .["Make cyborg"] = "?_src_=vars;[HrefToken()];makerobot=[REF(src)]"
- .["Make alien"] = "?_src_=vars;[HrefToken()];makealien=[REF(src)]"
- .["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=[REF(src)]"
- .["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=[REF(src)]"
- .["Copy outfit"] = "?_src_=vars;[HrefToken()];copyoutfit=[REF(src)]"
- .["Add/Remove Quirks"] = "?_src_=vars;[HrefToken()];modquirks=[REF(src)]"
+ VV_DROPDOWN_OPTION("", "---------")
+ VV_DROPDOWN_OPTION(VV_HK_COPY_OUTFIT, "Copy Outfit")
+ VV_DROPDOWN_OPTION(VV_HK_MOD_QUIRKS, "Add/Remove Quirks")
+ VV_DROPDOWN_OPTION(VV_HK_MAKE_MONKEY, "Make Monkey")
+ VV_DROPDOWN_OPTION(VV_HK_MAKE_CYBORG, "Make Cyborg")
+ VV_DROPDOWN_OPTION(VV_HK_MAKE_SLIME, "Make Slime")
+ VV_DROPDOWN_OPTION(VV_HK_MAKE_ALIEN, "Make Alien")
+ VV_DROPDOWN_OPTION(VV_HK_SET_SPECIES, "Set Species")
+ VV_DROPDOWN_OPTION(VV_HK_PURRBATION, "Toggle Purrbation")
+
+/mob/living/carbon/human/vv_do_topic(list/href_list)
+ . = ..()
+ if(href_list[VV_HK_COPY_OUTFIT])
+ if(!check_rights(R_SPAWN))
+ return
+ copy_outfit()
+ if(href_list[VV_HK_MOD_QUIRKS])
+ if(!check_rights(R_SPAWN))
+ return
+
+ var/list/options = list("Clear"="Clear")
+ for(var/x in subtypesof(/datum/quirk))
+ var/datum/quirk/T = x
+ var/qname = initial(T.name)
+ options[has_quirk(T) ? "[qname] (Remove)" : "[qname] (Add)"] = T
+
+ var/result = input(usr, "Choose quirk to add/remove","Quirk Mod") as null|anything in options
+ if(result)
+ if(result == "Clear")
+ for(var/datum/quirk/q in roundstart_quirks)
+ remove_quirk(q.type)
+ else
+ var/T = options[result]
+ if(has_quirk(T))
+ remove_quirk(T)
+ else
+ add_quirk(T,TRUE)
+ if(href_list[VV_HK_MAKE_MONKEY])
+ if(!check_rights(R_SPAWN))
+ return
+ if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
+ return
+ usr.client.holder.Topic("vv_override", list("monkeyone"=href_list[VV_HK_TARGET]))
+ if(href_list[VV_HK_MAKE_CYBORG])
+ if(!check_rights(R_SPAWN))
+ return
+ if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
+ return
+ usr.client.holder.Topic("vv_override", list("makerobot"=href_list[VV_HK_TARGET]))
+ if(href_list[VV_HK_MAKE_ALIEN])
+ if(!check_rights(R_SPAWN))
+ return
+ if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
+ return
+ usr.client.holder.Topic("vv_override", list("makealien"=href_list[VV_HK_TARGET]))
+ if(href_list[VV_HK_MAKE_SLIME])
+ if(!check_rights(R_SPAWN))
+ return
+ if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
+ return
+ usr.client.holder.Topic("vv_override", list("makeslime"=href_list[VV_HK_TARGET]))
+ if(href_list[VV_HK_SET_SPECIES])
+ if(!check_rights(R_SPAWN))
+ return
+ var/result = input(usr, "Please choose a new species","Species") as null|anything in GLOB.species_list
+ if(result)
+ var/newtype = GLOB.species_list[result]
+ admin_ticket_log("[key_name_admin(usr)] has modified the bodyparts of [src] to [result]")
+ set_species(newtype)
+ if(href_list[VV_HK_PURRBATION])
+ if(!check_rights(R_SPAWN))
+ return
+ if(!ishumanbasic(src))
+ to_chat(usr, "This can only be done to the basic human species at the moment.")
+ return
+ var/success = purrbation_toggle(src)
+ if(success)
+ to_chat(usr, "Put [src] on purrbation.")
+ log_admin("[key_name(usr)] has put [key_name(src)] on purrbation.")
+ var/msg = "[key_name_admin(usr)] has put [key_name(src)] on purrbation. "
+ message_admins(msg)
+ admin_ticket_log(src, msg)
+
+ else
+ to_chat(usr, "Removed [src] from purrbation.")
+ log_admin("[key_name(usr)] has removed [key_name(src)] from purrbation.")
+ var/msg = "[key_name_admin(usr)] has removed [key_name(src)] from purrbation. "
+ message_admins(msg)
+ admin_ticket_log(src, msg)
/mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user)
if(pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS)
diff --git a/code/modules/mob/living/carbon/human/human_block.dm b/code/modules/mob/living/carbon/human/human_block.dm
new file mode 100644
index 0000000000..b1a5153ce5
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/human_block.dm
@@ -0,0 +1,8 @@
+/mob/living/carbon/human/get_blocking_items()
+ . = ..()
+ if(wear_suit)
+ . += wear_suit
+ if(w_uniform)
+ . += w_uniform
+ if(wear_neck)
+ . += wear_neck
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index f4227e390e..324420a7dd 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -52,36 +52,12 @@
return martial_art_result
return ..()
-/mob/living/carbon/human/check_reflect(def_zone)
- if(wear_suit?.IsReflect(def_zone))
- return TRUE
- return ..()
-
-/mob/living/carbon/human/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0)
- . = ..()
- if(.)
- return
- var/block_chance_modifier = round(damage / -3)
- if(wear_suit)
- var/final_block_chance = wear_suit.block_chance - (CLAMP((armour_penetration-wear_suit.armour_penetration)/2,0,100)) + block_chance_modifier
- if(wear_suit.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type))
- return TRUE
- if(w_uniform)
- var/final_block_chance = w_uniform.block_chance - (CLAMP((armour_penetration-w_uniform.armour_penetration)/2,0,100)) + block_chance_modifier
- if(w_uniform.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type))
- return TRUE
- if(wear_neck)
- var/final_block_chance = wear_neck.block_chance - (CLAMP((armour_penetration-wear_neck.armour_penetration)/2,0,100)) + block_chance_modifier
- if(wear_neck.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type))
- return TRUE
- return FALSE
-
/mob/living/carbon/human/can_embed(obj/item/I)
if(I.get_sharpness() || is_pointed(I) || is_type_in_typecache(I, GLOB.can_embed_types))
return TRUE
return FALSE
-/mob/living/carbon/human/proc/check_block()
+/mob/living/carbon/human/proc/check_martial_melee_block()
if(mind)
if(mind.martial_art && prob(mind.martial_art.block_chance) && mind.martial_art.can_use(src) && in_throw_mode && !incapacitated(FALSE, TRUE))
return TRUE
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index f0bf2fc23e..e39ce7d488 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -893,7 +893,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
accessory_overlay.icon_state = "m_ears_none_[layertext]"
if(bodypart == "tail")
accessory_overlay.icon_state = "m_tail_husk_[layertext]"
- if(MATRIXED)
+ if(S.color_src == MATRIXED)
var/list/husklist = list()
husklist += ReadRGB("#a3a3a3")
husklist += ReadRGB("#a3a3a3")
@@ -1437,7 +1437,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
to_chat(user, "You do not breathe, so you cannot perform CPR. ")
/datum/species/proc/grab(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
- if(target.check_block())
+ if(target.check_martial_melee_block())
target.visible_message("[target] blocks [user]'s grab attempt! ")
return 0
if(attacker_style && attacker_style.grab_act(user,target))
@@ -1453,9 +1453,15 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(IS_STAMCRIT(user)) //CITADEL CHANGE - makes it impossible to punch while in stamina softcrit
to_chat(user, "You're too exhausted. ") //CITADEL CHANGE - ditto
return FALSE //CITADEL CHANGE - ditto
- if(target.check_block())
+ if(target.check_martial_melee_block())
target.visible_message("[target] blocks [user]'s attack! ")
return FALSE
+
+ if(HAS_TRAIT(user, TRAIT_PUGILIST))//CITADEL CHANGE - makes punching cause staminaloss but funny martial artist types get a discount
+ user.adjustStaminaLossBuffered(1.5)
+ else
+ user.adjustStaminaLossBuffered(3.5)
+
if(attacker_style && attacker_style.harm_act(user,target))
return TRUE
else
@@ -1474,13 +1480,15 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
else
user.do_attack_animation(target, ATTACK_EFFECT_PUNCH)
- user.adjustStaminaLossBuffered(5) //CITADEL CHANGE - makes punching cause staminaloss
-
var/damage = rand(user.dna.species.punchdamagelow, user.dna.species.punchdamagehigh)
+ var/puncherstam = user.getStaminaLoss()
+ var/puncherbrute = user.getBruteLoss()
+ var/punchedstam = target.getStaminaLoss()
+ var/punchedbrute = target.getBruteLoss()
//CITADEL CHANGES - makes resting and disabled combat mode reduce punch damage, makes being out of combat mode result in you taking more damage
- if(!(target.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE) && damage < user.dna.species.punchstunthreshold)
- damage = user.dna.species.punchstunthreshold - 1
+ if(!(target.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
+ damage *= 1.5
if(!CHECK_MOBILITY(user, MOBILITY_STAND))
damage *= 0.5
if(!(user.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
@@ -1494,7 +1502,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(atk_verb == ATTACK_EFFECT_KICK) //kicks never miss (provided your species deals more than 0 damage)
miss_chance = 0
else
- miss_chance = min((user.dna.species.punchdamagehigh/user.dna.species.punchdamagelow) + user.getStaminaLoss() + (user.getBruteLoss()*0.5), 100) //old base chance for a miss + various damage. capped at 100 to prevent weirdness in prob()
+ miss_chance = min(10 + ((puncherstam + puncherbrute)*0.5), 100) //probability of miss has a base of 10, and modified based on half your stamina and brute total. Capped at max 100 and min 0 to prevent weirdness in prob()
if(!damage || !affecting || prob(miss_chance))//future-proofing for species that have 0 damage/weird cases where no zone is targeted
playsound(target.loc, user.dna.species.miss_sound, 25, TRUE, -1)
@@ -1529,13 +1537,25 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
log_combat(user, target, "punched")
if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold)
- target.visible_message("[user] knocks [target] down! ", \
- "You're knocked down by [user]! ", "You hear aggressive shuffling followed by a loud thud! ", COMBAT_MESSAGE_RANGE, user)
- to_chat(user, "You knock [target] down! ")
- var/knockdown_duration = 40 + (target.getStaminaLoss() + (target.getBruteLoss()*0.5))*0.8 - armor_block
- target.DefaultCombatKnockdown(knockdown_duration)
- target.forcesay(GLOB.hit_appends)
- log_combat(user, target, "got a stun punch with their previous punch")
+ if((punchedstam > 50) && prob(punchedstam*0.5)) //If our punch victim has been hit above the threshold, and they have more than 50 stamina damage, roll for stun, probability of 1% per 2 stamina damage
+
+ target.visible_message("[user] knocks [target] down! ", \
+ "You're knocked down by [user]! ", "You hear aggressive shuffling followed by a loud thud! ", COMBAT_MESSAGE_RANGE, user)
+ to_chat(user, "You knock [target] down! ")
+
+ var/knockdown_duration = 40 + (punchedstam + (punchedbrute*0.5))*0.8 - armor_block
+ target.DefaultCombatKnockdown(knockdown_duration)
+ target.forcesay(GLOB.hit_appends)
+ log_combat(user, target, "got a stun punch with their previous punch")
+
+ if(HAS_TRAIT(user, TRAIT_KI_VAMPIRE) && !HAS_TRAIT(target, TRAIT_NOBREATH) && (punchedbrute < 100)) //If we're a ki vampire we also sap them of lifeforce, but only if they're not too beat up. Also living organics only.
+ user.adjustBruteLoss(-5)
+ user.adjustFireLoss(-5)
+ user.adjustStaminaLoss(-20)
+
+ target.adjustCloneLoss(10)
+ target.adjustBruteLoss(10)
+
else if(!(target.mobility_flags & MOBILITY_STAND))
target.forcesay(GLOB.hit_appends)
@@ -1552,6 +1572,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/aim_for_groin = user.zone_selected == "groin"
var/target_aiming_for_groin = target.zone_selected == "groin"
+ if(target.check_martial_melee_block()) //END EDIT
+ target.visible_message("[target] blocks [user]'s disarm attempt! ")
+ return FALSE
if(IS_STAMCRIT(user))
to_chat(user, "You're too exhausted! ")
return FALSE
@@ -1680,9 +1703,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
/datum/species/proc/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
// Allows you to put in item-specific reactions based on species
if(user != H)
- if(H.check_shields(I, I.force, "the [I.name]", MELEE_ATTACK, I.armour_penetration))
+ if(H.run_block(I, I.force, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user, affecting.body_zone) & BLOCK_SUCCESS)
return 0
- if(H.check_block())
+ if(H.check_martial_melee_block())
H.visible_message("[H] blocks [I]! ")
return 0
@@ -1798,7 +1821,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
return TRUE
if(M.mind)
attacker_style = M.mind.martial_art
- if((M != H) && M.a_intent != INTENT_HELP && H.check_shields(M, 0, M.name, attack_type = UNARMED_ATTACK))
+ if((M != H) && M.a_intent != INTENT_HELP && (H.run_block(M, 0, "[M]", ATTACK_TYPE_UNARMED, 0, M, M.zone_selected) & BLOCK_SUCCESS))
log_combat(M, H, "attempted to touch")
H.visible_message("[M] attempted to touch [H]! ")
return TRUE
@@ -1836,7 +1859,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(IS_STAMCRIT(user))
to_chat(user, "You're too exhausted. ")
return FALSE
- if(target.check_block())
+ if(target.check_martial_melee_block())
target.visible_message("[target] blocks [user]'s shoving attempt! ")
return FALSE
if(attacker_style && attacker_style.disarm_act(user,target))
diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
index 5a9b830bc8..bb2c08aa9b 100644
--- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
@@ -92,6 +92,8 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
//These count in on_life ticks which should be 2 seconds per every increment of 1 in a perfect world.
var/dwarf_filth_ticker = 0 //Currently set =< 4, that means this will fire the proc around every 4-8 seconds.
var/dwarf_eth_ticker = 0 //Currently set =< 1, that means this will fire the proc around every 2 seconds
+ var/last_filth_spam
+ var/last_alcohol_spam
/obj/item/organ/dwarfgland/prepare_eat()
var/obj/S = ..()
@@ -136,40 +138,39 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
filth_counter += 10 //Dwarves could technically chainstun each other in a vomit tantrum spiral.
switch(filth_counter)
if(11 to 25)
- if(prob(25))
- to_chat(owner, "Someone should really clean up in here! ")
+ if(last_filth_spam + 40 SECONDS < world.time)
+ to_chat(owner, "Someone should really clean up in here! ")
+ last_filth_spam = world.time
if(26 to 50)
- if(prob(30)) //Probability the message appears
+ if(prob(6)) //And then the probability they vomit along with it.
to_chat(owner, "The stench makes you queasy. ")
- if(prob(20)) //And then the probability they vomit along with it.
- owner.vomit(20) //I think vomit should stay over a disgust adjustment.
+ owner.vomit(10) //I think vomit should stay over a disgust adjustment.
if(51 to 75)
- if(prob(35))
+ if(prob(9))
to_chat(owner, "By Armok! You won't be able to keep alcohol down at all! ")
- if(prob(25))
- owner.vomit(20) //Its more funny
+ owner.vomit(20) //Its more funny
if(76 to 100)
- if(prob(40))
+ if(prob(11))
to_chat(owner, "You can't live in such FILTH! ")
- if(prob(25))
- owner.adjustToxLoss(10) //Now they start dying.
- owner.vomit(20)
+ owner.adjustToxLoss(10) //Now they start dying.
+ owner.vomit(20)
if(101 to INFINITY) //Now they will really start dying
- if(prob(40))
+ if(last_filth_spam + 12 SECONDS < world.time)
to_chat(owner, " THERES TOO MUCH FILTH, OH GODS THE FILTH! ")
+ last_filth_spam = world.time
+ if(prob(40))
owner.adjustToxLoss(15)
- owner.vomit(40)
+ owner.vomit(30)
CHECK_TICK //Check_tick right here, its motherfuckin magic. (To me at least)
//Handles the dwarf alcohol cycle tied to on_life, it ticks in dwarf_cycle_ticker.
/obj/item/organ/dwarfgland/proc/dwarf_eth_cycle()
//BOOZE POWER
+ var/init_stored_alcohol = stored_alcohol
for(var/datum/reagent/R in owner.reagents.reagent_list)
if(istype(R, /datum/reagent/consumable/ethanol))
var/datum/reagent/consumable/ethanol/E = R
- stored_alcohol += (E.boozepwr / 50)
- if(stored_alcohol > max_alcohol) //Dwarves technically start at 250 alcohol stored.
- stored_alcohol = max_alcohol
+ stored_alcohol = CLAMP(stored_alcohol + E.boozepwr / 50, 0, max_alcohol)
var/heal_amt = heal_rate
stored_alcohol -= alcohol_rate //Subtracts alcohol_Rate from stored alcohol so EX: 250 - 0.25 per each loop that occurs.
if(stored_alcohol > 400) //If they are over 400 they start regenerating
@@ -177,16 +178,27 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
owner.adjustFireLoss(-heal_amt) //Unless they drink casually all the time.
owner.adjustOxyLoss(-heal_amt)
owner.adjustCloneLoss(-heal_amt) //Also they will probably get brain damage if thats a thing here.
- if(prob(25))
- switch(stored_alcohol)
- if(0 to 24)
+ if(init_stored_alcohol + 0.5 < stored_alcohol) //recovering stored alcohol at a steady rate of +0.75, no spam.
+ return
+ switch(stored_alcohol)
+ if(0 to 24)
+ if(last_alcohol_spam + 8 SECONDS < world.time)
to_chat(owner, "DAMNATION INCARNATE, WHY AM I CURSED WITH THIS DRY-SPELL? I MUST DRINK. ")
- owner.adjustToxLoss(35)
- if(25 to 50)
+ last_alcohol_spam = world.time
+ owner.adjustToxLoss(10)
+ if(25 to 50)
+ if(last_alcohol_spam + 20 SECONDS < world.time)
to_chat(owner, "Oh DAMN, I need some brew! ")
- if(51 to 75)
+ last_alcohol_spam = world.time
+ if(51 to 75)
+ if(last_alcohol_spam + 35 SECONDS < world.time)
to_chat(owner, "Your body aches, you need to get ahold of some booze... ")
- if(76 to 100)
+ last_alcohol_spam = world.time
+ if(76 to 100)
+ if(last_alcohol_spam + 40 SECONDS < world.time)
to_chat(owner, "A pint of anything would really hit the spot right now. ")
- if(101 to 150)
+ last_alcohol_spam = world.time
+ if(101 to 150)
+ if(last_alcohol_spam + 50 SECONDS < world.time)
to_chat(owner, "You feel like you could use a good brew. ")
+ last_alcohol_spam = world.time
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 446e726256..abc2288e9b 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -11,7 +11,7 @@
siemens_coeff = 0
punchdamagelow = 5
punchdamagehigh = 14
- punchstunthreshold = 11 //about 40% chance to stun
+ punchstunthreshold = 10
no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE)
nojumpsuit = 1
sexes = 1
@@ -168,7 +168,7 @@
name = "Silver Golem"
id = "silver golem"
fixed_mut_color = "ddd"
- punchstunthreshold = 9 //60% chance, from 40%
+ punchstunthreshold = 9
meat = /obj/item/stack/ore/silver
info_text = "As a Silver Golem , your attacks have a higher chance of stunning. Being made of silver, your body is immune to most types of magic."
prefix = "Silver"
@@ -190,7 +190,7 @@
stunmod = 0.4
punchdamagelow = 12
punchdamagehigh = 21
- punchstunthreshold = 18 //still 40% stun chance
+ punchstunthreshold = 18
speedmod = 4 //pretty fucking slow
meat = /obj/item/stack/ore/iron
info_text = "As a Plasteel Golem , you are slower, but harder to stun, and hit very hard when punching."
@@ -469,7 +469,7 @@
var/cooldown = 150
var/last_teleport = 0
-/datum/action/innate/unstable_teleport/IsAvailable()
+/datum/action/innate/unstable_teleport/IsAvailable(silent = FALSE)
if(..())
if(world.time > last_teleport + cooldown)
return 1
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 98c4cedeb9..775f36cfc7 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -84,7 +84,7 @@
background_icon_state = "bg_alien"
required_mobility_flags = NONE
-/datum/action/innate/regenerate_limbs/IsAvailable()
+/datum/action/innate/regenerate_limbs/IsAvailable(silent = FALSE)
if(..())
var/mob/living/carbon/human/H = owner
var/list/limbs_to_heal = H.get_missing_limbs()
@@ -223,7 +223,7 @@
icon_icon = 'icons/mob/actions/actions_slime.dmi'
background_icon_state = "bg_alien"
-/datum/action/innate/split_body/IsAvailable()
+/datum/action/innate/split_body/IsAvailable(silent = FALSE)
if(..())
var/mob/living/carbon/human/H = owner
if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT)
@@ -776,7 +776,7 @@
..()
species = _species
-/datum/action/innate/use_extract/IsAvailable()
+/datum/action/innate/use_extract/IsAvailable(silent = FALSE)
if(..())
if(species && species.current_extract && (world.time > species.extract_cooldown))
return TRUE
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 3c17ef9066..cb8fdbf101 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -12,9 +12,9 @@
inherent_traits = list(TRAIT_NOBREATH)
speedmod = 1.5 //faster than golems but not by much
- punchdamagelow = 6
- punchdamagehigh = 14
- punchstunthreshold = 14 //about 44% chance to stun
+ punchdamagelow = 2
+ punchdamagehigh = 12 //still better than humans
+ punchstunthreshold = 10
no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM)
diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm
index 1700927a24..6c42e622fe 100644
--- a/code/modules/mob/living/carbon/human/species_types/synths.dm
+++ b/code/modules/mob/living/carbon/human/species_types/synths.dm
@@ -23,7 +23,7 @@
armor = 25
punchdamagelow = 10
punchdamagehigh = 19
- punchstunthreshold = 14 //about 50% chance to stun
+ punchstunthreshold = 14
disguise_fail_health = 50
/datum/species/synth/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
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 03da959171..c4a9fdb086 100644
--- a/code/modules/mob/living/carbon/human/species_types/vampire.dm
+++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm
@@ -152,5 +152,7 @@
if(transfer_name)
H.name = caster.name
- clothes_req = 0
- human_req = 0
+
+ clothes_req = NONE
+ mobs_whitelist = null
+ mobs_blacklist = null
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index cb603dee90..63e772e07c 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -118,17 +118,15 @@ There are several things that need to be remembered:
return
- var/t_color = U.item_color
- if(!t_color)
- t_color = U.icon_state
+ var/target_overlay = U.icon_state
if(U.adjusted == ALT_STYLE)
- t_color = "[t_color]_d"
+ target_overlay = "[target_overlay]_d"
- var/alt_worn = U.alternate_worn_icon || 'icons/mob/uniform.dmi'
+ var/alt_worn = U.mob_overlay_icon || 'icons/mob/clothing/uniform.dmi'
var/variant_flag = NONE
if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE)
- alt_worn = 'icons/mob/uniform_digi.dmi'
+ alt_worn = 'icons/mob/clothing/uniform_digi.dmi'
variant_flag |= STYLE_DIGITIGRADE
var/mutable_appearance/uniform_overlay
@@ -136,10 +134,10 @@ There are several things that need to be remembered:
if(dna && dna.species.sexes)
var/G = (dna.features["body_model"] == FEMALE) ? "f" : "m"
if(G == "f" && U.fitted != NO_FEMALE_UNIFORM)
- uniform_overlay = U.build_worn_icon(t_color, UNIFORM_LAYER, alt_worn, FALSE, U.fitted, variant_flag, FALSE)
+ uniform_overlay = U.build_worn_icon(UNIFORM_LAYER, alt_worn, FALSE, U.fitted, target_overlay, variant_flag, FALSE)
if(!uniform_overlay)
- uniform_overlay = U.build_worn_icon(t_color, UNIFORM_LAYER, alt_worn, FALSE, NO_FEMALE_UNIFORM, variant_flag, FALSE)
+ uniform_overlay = U.build_worn_icon( UNIFORM_LAYER, alt_worn, FALSE, NO_FEMALE_UNIFORM, target_overlay, variant_flag, FALSE)
if(OFFSET_UNIFORM in dna.species.offset_features)
@@ -167,7 +165,7 @@ There are several things that need to be remembered:
update_observer_view(wear_id)
//TODO: add an icon file for ID slot stuff, so it's less snowflakey
- id_overlay = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi')
+ id_overlay = wear_id.build_worn_icon(default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi', override_state = wear_id.item_state)
if(OFFSET_ID in dna.species.offset_features)
id_overlay.pixel_x += dna.species.offset_features[OFFSET_ID][1]
id_overlay.pixel_y += dna.species.offset_features[OFFSET_ID][2]
@@ -199,10 +197,7 @@ There are several things that need to be remembered:
if(hud_used.inventory_shown)
client.screen += gloves
update_observer_view(gloves,1)
- var/t_state = gloves.item_state
- if(!t_state)
- t_state = gloves.icon_state
- overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/hands.dmi')
+ overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/clothing/hands.dmi')
gloves_overlay = overlays_standing[GLOVES_LAYER]
if(OFFSET_GLOVES in dna.species.offset_features)
gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1]
@@ -228,7 +223,7 @@ There are several things that need to be remembered:
client.screen += glasses //Either way, add the item to the HUD
update_observer_view(glasses,1)
if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES)))
- overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi')
+ overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/clothing/eyes.dmi', override_state = glasses.icon_state)
var/mutable_appearance/glasses_overlay = overlays_standing[GLASSES_LAYER]
if(glasses_overlay)
if(OFFSET_GLASSES in dna.species.offset_features)
@@ -255,7 +250,7 @@ There are several things that need to be remembered:
client.screen += ears //add it to the client's screen
update_observer_view(ears,1)
- overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi')
+ overlays_standing[EARS_LAYER] = ears.build_worn_icon(default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi')
var/mutable_appearance/ears_overlay = overlays_standing[EARS_LAYER]
if(OFFSET_EARS in dna.species.offset_features)
ears_overlay.pixel_x += dna.species.offset_features[OFFSET_EARS][1]
@@ -282,16 +277,13 @@ There are several things that need to be remembered:
client.screen += shoes //add it to client's screen
update_observer_view(shoes,1)
- var/alt_icon = S.alternate_worn_icon || 'icons/mob/feet.dmi'
+ var/alt_icon = S.mob_overlay_icon || 'icons/mob/clothing/feet.dmi'
var/variation_flag = NONE
if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE)
- alt_icon = 'icons/mob/feet_digi.dmi'
+ alt_icon = 'icons/mob/clothing/feet_digi.dmi'
variation_flag |= STYLE_DIGITIGRADE
- var/t_state = shoes.item_state
- if (!t_state)
- t_state = shoes.icon_state
- overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(t_state, SHOES_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE)
+ overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(SHOES_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE)
var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER]
if(OFFSET_SHOES in dna.species.offset_features)
shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1]
@@ -314,7 +306,7 @@ There are several things that need to be remembered:
var/t_state = s_store.item_state
if(!t_state)
t_state = s_store.icon_state
- overlays_standing[SUIT_STORE_LAYER] = mutable_appearance(((s_store.alternate_worn_icon) ? s_store.alternate_worn_icon : 'icons/mob/belt_mirror.dmi'), t_state, -SUIT_STORE_LAYER)
+ overlays_standing[SUIT_STORE_LAYER] = mutable_appearance(((s_store.mob_overlay_icon) ? s_store.mob_overlay_icon : 'icons/mob/clothing/belt_mirror.dmi'), t_state, -SUIT_STORE_LAYER)
var/mutable_appearance/s_store_overlay = overlays_standing[SUIT_STORE_LAYER]
if(OFFSET_S_STORE in dna.species.offset_features)
s_store_overlay.pixel_x += dna.species.offset_features[OFFSET_S_STORE][1]
@@ -324,12 +316,24 @@ There are several things that need to be remembered:
/mob/living/carbon/human/update_inv_head()
- ..()
- update_mutant_bodyparts()
+ remove_overlay(HEAD_LAYER)
+
+ if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
+ return
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
+ inv.update_icon()
+
if(head)
+ head.screen_loc = ui_head
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += head
+ update_observer_view(head,1)
remove_overlay(HEAD_LAYER)
var/obj/item/clothing/head/H = head
- var/alt_icon = H.alternate_worn_icon || 'icons/mob/head.dmi'
+ var/alt_icon = H.mob_overlay_icon || 'icons/mob/clothing/head.dmi'
var/muzzled = FALSE
var/variation_flag = NONE
if(dna.species.mutant_bodyparts["mam_snouts"] && dna.features["mam_snouts"] != "None")
@@ -337,10 +341,10 @@ There are several things that need to be remembered:
else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None")
muzzled = TRUE
if(muzzled && H.mutantrace_variation & STYLE_MUZZLE)
- alt_icon = 'icons/mob/head_muzzled.dmi'
+ alt_icon = 'icons/mob/clothing/head_muzzled.dmi'
variation_flag |= STYLE_MUZZLE
- overlays_standing[HEAD_LAYER] = H.build_worn_icon(H.icon_state, HEAD_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE)
+ overlays_standing[HEAD_LAYER] = H.build_worn_icon(HEAD_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, H.icon_state, variation_flag, FALSE)
var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER]
if(OFFSET_HEAD in dna.species.offset_features)
@@ -348,6 +352,7 @@ There are several things that need to be remembered:
head_overlay.pixel_y += dna.species.offset_features[OFFSET_HEAD][2]
overlays_standing[HEAD_LAYER] = head_overlay
apply_overlay(HEAD_LAYER)
+ update_mutant_bodyparts()
/mob/living/carbon/human/update_inv_belt()
remove_overlay(BELT_LAYER)
@@ -362,11 +367,7 @@ There are several things that need to be remembered:
client.screen += belt
update_observer_view(belt)
- var/t_state = belt.item_state
- if(!t_state)
- t_state = belt.icon_state
-
- overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = 'icons/mob/belt.dmi')
+ overlays_standing[BELT_LAYER] = belt.build_worn_icon(default_layer = BELT_LAYER, default_icon_file = 'icons/mob/clothing/belt.dmi')
var/mutable_appearance/belt_overlay = overlays_standing[BELT_LAYER]
if(OFFSET_BELT in dna.species.offset_features)
belt_overlay.pixel_x += dna.species.offset_features[OFFSET_BELT][1]
@@ -390,7 +391,7 @@ There are several things that need to be remembered:
client.screen += wear_suit
update_observer_view(wear_suit,1)
- var/worn_icon = wear_suit.alternate_worn_icon || 'icons/mob/suit.dmi'
+ var/worn_icon = wear_suit.mob_overlay_icon || 'icons/mob/clothing/suit.dmi'
var/center = FALSE
var/dimension_x = 32
var/dimension_y = 32
@@ -405,20 +406,20 @@ There are several things that need to be remembered:
variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode
switch(variation_flag)
if(STYLE_HOOF_TAURIC)
- worn_icon = 'icons/mob/taur_hooved.dmi'
+ worn_icon = 'icons/mob/clothing/taur_hooved.dmi'
if(STYLE_SNEK_TAURIC)
- worn_icon = 'icons/mob/taur_naga.dmi'
+ worn_icon = 'icons/mob/clothing/taur_naga.dmi'
if(STYLE_PAW_TAURIC)
- worn_icon = 'icons/mob/taur_canine.dmi'
+ worn_icon = 'icons/mob/clothing/taur_canine.dmi'
if(worn_icon != init_worn_icon) //worn icon sprite was changed, taur offsets will have to be applied.
center = T.center
dimension_x = T.dimension_x
dimension_y = T.dimension_y
else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) //not a taur, but digitigrade legs.
- worn_icon = 'icons/mob/suit_digi.dmi'
+ worn_icon = 'icons/mob/clothing/suit_digi.dmi'
variation_flag |= STYLE_DIGITIGRADE
- overlays_standing[SUIT_LAYER] = S.build_worn_icon(wear_suit.icon_state, SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE)
+ overlays_standing[SUIT_LAYER] = S.build_worn_icon(SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, wear_suit.icon_state, variation_flag, FALSE)
var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER]
if(OFFSET_SUIT in dna.species.offset_features)
suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1]
@@ -456,11 +457,24 @@ There are several things that need to be remembered:
/mob/living/carbon/human/update_inv_wear_mask()
- ..()
+ remove_overlay(FACEMASK_LAYER)
+
+ if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
+ return
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
+ inv.update_icon()
+
if(wear_mask)
+ wear_mask.screen_loc = ui_mask
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += wear_mask
+ update_observer_view(wear_mask,1)
var/obj/item/clothing/mask/M = wear_mask
remove_overlay(FACEMASK_LAYER)
- var/alt_icon = M.alternate_worn_icon || 'icons/mob/mask.dmi'
+ var/alt_icon = M.mob_overlay_icon || 'icons/mob/clothing/mask.dmi'
var/muzzled = FALSE
var/variation_flag = NONE
if(head && (head.flags_inv & HIDEMASK))
@@ -470,11 +484,10 @@ There are several things that need to be remembered:
else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None")
muzzled = TRUE
if(muzzled && M.mutantrace_variation & STYLE_MUZZLE)
- alt_icon = 'icons/mob/mask_muzzled.dmi'
+ alt_icon = 'icons/mob/clothing/mask_muzzled.dmi'
variation_flag |= STYLE_MUZZLE
- overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(wear_mask.icon_state, FACEMASK_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE)
- var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER]
+ var/mutable_appearance/mask_overlay = M.build_worn_icon(FACEMASK_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, wear_mask.icon_state, variation_flag, FALSE)
if(OFFSET_FACEMASK in dna.species.offset_features)
mask_overlay.pixel_x += dna.species.offset_features[OFFSET_FACEMASK][1]
@@ -512,22 +525,6 @@ There are several things that need to be remembered:
//human HUD updates for items in our inventory
-//update whether our head item appears on our hud.
-/mob/living/carbon/human/update_hud_head(obj/item/I)
- I.screen_loc = ui_head
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += I
- update_observer_view(I,1)
-
-//update whether our mask item appears on our hud.
-/mob/living/carbon/human/update_hud_wear_mask(obj/item/I)
- I.screen_loc = ui_mask
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += I
- update_observer_view(I,1)
-
//update whether our neck item appears on our hud.
/mob/living/carbon/human/update_hud_neck(obj/item/I)
I.screen_loc = ui_neck
@@ -556,27 +553,32 @@ covers:
By Remie Richards (yes I'm taking credit because this just removed 90% of the copypaste in update_icons())
-state: A string to use as the state, this is FAR too complex to solve in this proc thanks to shitty old code
-so it's specified as an argument instead.
+override_state: A string to use as the state, otherwise item_state or icon_state will be used.
default_layer: The layer to draw this on if no other layer is specified
default_icon_file: The icon file to draw states from if no other icon file is specified
-isinhands: If true then alternate_worn_icon is skipped so that default_icon_file is used,
+isinhands: If true then mob_overlay_icon is skipped so that default_icon_file is used,
in this situation default_icon_file is expected to match either the lefthand_ or righthand_ file var
femalueuniform: A value matching a uniform item's fitted var, if this is anything but NO_FEMALE_UNIFORM, we
generate/load female uniform sprites matching all previously decided variables
+style_flags: mutant race appearance flags, mostly used for worn_overlays()
+
+use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if mob_overlay_icon is present.
*/
-/obj/item/proc/build_worn_icon(state = "", default_layer = 0, default_icon_file = null, isinhands = FALSE, femaleuniform = NO_FEMALE_UNIFORM, style_flags = NONE, use_alt_icon = TRUE)
+/obj/item/proc/build_worn_icon(default_layer = 0, default_icon_file = null, isinhands = FALSE, femaleuniform = NO_FEMALE_UNIFORM, override_state, style_flags = NONE, use_mob_overlay_icon = TRUE)
+
+ var/t_state
+ t_state = override_state || item_state || icon_state
//Find a valid icon file from variables+arguments
var/file2use
- if(!isinhands && alternate_worn_icon && use_alt_icon)
- file2use = alternate_worn_icon
+ if(!isinhands && mob_overlay_icon && use_mob_overlay_icon)
+ file2use = mob_overlay_icon
if(!file2use)
file2use = default_icon_file
@@ -589,13 +591,13 @@ generate/load female uniform sprites matching all previously decided variables
var/mutable_appearance/standing
if(femaleuniform)
- standing = wear_female_version(state,file2use,layer2use,femaleuniform)
+ standing = wear_female_version(t_state,file2use,layer2use,femaleuniform)
if(!standing)
- standing = mutable_appearance(file2use, state, -layer2use)
+ standing = mutable_appearance(file2use, t_state, -layer2use)
//Get the overlays for this item when it's being worn
//eg: ammo counters, primed grenade flashes, etc.
- var/list/worn_overlays = worn_overlays(isinhands, file2use, style_flags)
+ var/list/worn_overlays = worn_overlays(isinhands, file2use, t_state, style_flags)
if(worn_overlays && worn_overlays.len)
standing.overlays.Add(worn_overlays)
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index ebb5a3dd31..8097859aac 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -28,10 +28,8 @@
if(stat != DEAD)
handle_brain_damage()
- /* BUG_PROBABLE_CAUSE
if(stat != DEAD)
handle_liver()
- */
if(stat == DEAD)
stop_sound_channel(CHANNEL_HEARTBEAT)
@@ -377,9 +375,15 @@
var/turf/open/miasma_turf = deceasedturf
- var/list/cached_gases = miasma_turf.air.gases
+ var/datum/gas_mixture/stank = new
- cached_gases[/datum/gas/miasma] += 0.1
+ stank.gases[/datum/gas/miasma] = 0.1
+
+ stank.temperature = BODYTEMP_NORMAL
+
+ miasma_turf.assume_air(stank)
+
+ miasma_turf.air_update_turf()
/mob/living/carbon/proc/handle_blood()
return
@@ -684,36 +688,17 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
var/obj/item/organ/liver/liver = getorganslot(ORGAN_SLOT_LIVER)
if((!dna && !liver) || (NOLIVER in dna.species.species_traits))
return
- if(liver)
- if(liver.damage < liver.maxHealth)
- liver.organ_flags |= ORGAN_FAILING
- liver_failure()
- else
+ if(!liver || liver.organ_flags & ORGAN_FAILING)
liver_failure()
-/mob/living/carbon/proc/undergoing_liver_failure()
- var/obj/item/organ/liver/liver = getorganslot(ORGAN_SLOT_LIVER)
- if(liver && liver.failing)
- return TRUE
-
-/mob/living/carbon/proc/return_liver_damage()
- var/obj/item/organ/liver/liver = getorganslot(ORGAN_SLOT_LIVER)
- if(liver)
- return liver.damage
-
-/mob/living/carbon/proc/applyLiverDamage(var/d)
- var/obj/item/organ/liver/L = getorganslot(ORGAN_SLOT_LIVER)
- if(L)
- L.damage += d
-
/mob/living/carbon/proc/liver_failure()
reagents.end_metabolization(src, keep_liverless = TRUE) //Stops trait-based effects on reagents, to prevent permanent buffs
reagents.metabolize(src, can_overdose=FALSE, liverless = TRUE)
if(HAS_TRAIT(src, TRAIT_STABLELIVER))
return
adjustToxLoss(4, TRUE, TRUE)
- if(prob(30))
- to_chat(src, "You feel a stabbing pain in your abdomen! ")
+ if(prob(15))
+ to_chat(src, "You feel a stabbing pain in your abdomen! ")
////////////////
diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm
index ff83b00fe1..1e00815f24 100644
--- a/code/modules/mob/living/carbon/monkey/update_icons.dm
+++ b/code/modules/mob/living/carbon/monkey/update_icons.dm
@@ -45,7 +45,7 @@
remove_overlay(LEGCUFF_LAYER)
clear_alert("legcuffed")
if(legcuffed)
- var/mutable_appearance/legcuffs = mutable_appearance('icons/mob/restraints.dmi', legcuffed.item_state, -LEGCUFF_LAYER)
+ var/mutable_appearance/legcuffs = mutable_appearance('icons/mob/clothing/restraints.dmi', legcuffed.item_state, -LEGCUFF_LAYER)
legcuffs.color = handcuffed.color
legcuffs.pixel_y = 8
diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index e5483e8d73..a431059a89 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -42,15 +42,11 @@
observers = null
break
- var/t_state = I.item_state
- if(!t_state)
- t_state = I.icon_state
-
var/icon_file = I.lefthand_file
if(get_held_index_of_item(I) % 2 == 0)
icon_file = I.righthand_file
- hands += I.build_worn_icon(state = t_state, default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE)
+ hands += I.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE)
overlays_standing[HANDS_LAYER] = hands
apply_overlay(HANDS_LAYER)
@@ -94,13 +90,13 @@
if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
return
- if(client && hud_used && hud_used.inv_slots[SLOT_WEAR_MASK])
+ if(client && hud_used)
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
- inv.update_icon()
+ inv?.update_icon()
if(wear_mask)
if(!(head && (head.flags_inv & HIDEMASK)))
- overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/mask.dmi')
+ overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi', override_state = wear_mask.icon_state)
update_hud_wear_mask(wear_mask)
apply_overlay(FACEMASK_LAYER)
@@ -114,7 +110,7 @@
if(wear_neck)
if(!(head && (head.flags_inv & HIDENECK)))
- overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(state = wear_neck.icon_state, default_layer = NECK_LAYER, default_icon_file = 'icons/mob/neck.dmi')
+ overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(default_layer = NECK_LAYER, default_icon_file = 'icons/mob/clothing/neck.dmi', override_state = wear_neck.icon_state)
update_hud_neck(wear_neck)
apply_overlay(NECK_LAYER)
@@ -122,12 +118,12 @@
/mob/living/carbon/update_inv_back()
remove_overlay(BACK_LAYER)
- if(client && hud_used && hud_used.inv_slots[SLOT_BACK])
+ if(client && hud_used)
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
- inv.update_icon()
+ inv?.update_icon()
if(back)
- overlays_standing[BACK_LAYER] = back.build_worn_icon(state = back.icon_state, default_layer = BACK_LAYER, default_icon_file = 'icons/mob/back.dmi')
+ overlays_standing[BACK_LAYER] = back.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = 'icons/mob/clothing/back.dmi', override_state = back.icon_state)
update_hud_back(back)
apply_overlay(BACK_LAYER)
@@ -138,12 +134,12 @@
if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
return
- if(client && hud_used && hud_used.inv_slots[SLOT_BACK])
+ if(client && hud_used)
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
- inv.update_icon()
+ inv?.update_icon()
if(head)
- overlays_standing[HEAD_LAYER] = head.build_worn_icon(state = head.icon_state, default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/head.dmi')
+ overlays_standing[HEAD_LAYER] = head.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/clothing/head.dmi', override_state = head.icon_state)
update_hud_head(head)
apply_overlay(HEAD_LAYER)
@@ -152,7 +148,7 @@
/mob/living/carbon/update_inv_handcuffed()
remove_overlay(HANDCUFF_LAYER)
if(handcuffed)
- var/mutable_appearance/cuffs = mutable_appearance('icons/mob/restraints.dmi', handcuffed.item_state, -HANDCUFF_LAYER)
+ var/mutable_appearance/cuffs = mutable_appearance('icons/mob/clothing/restraints.dmi', handcuffed.item_state, -HANDCUFF_LAYER)
cuffs.color = handcuffed.color
overlays_standing[HANDCUFF_LAYER] = cuffs
@@ -162,7 +158,7 @@
remove_overlay(LEGCUFF_LAYER)
clear_alert("legcuffed")
if(legcuffed)
- var/mutable_appearance/legcuffs = mutable_appearance('icons/mob/restraints.dmi', legcuffed.item_state, -LEGCUFF_LAYER)
+ var/mutable_appearance/legcuffs = mutable_appearance('icons/mob/clothing/restraints.dmi', legcuffed.item_state, -LEGCUFF_LAYER)
legcuffs.color = legcuffed.color
overlays_standing[LEGCUFF_LAYER] = legcuffs
@@ -195,15 +191,6 @@
/mob/living/carbon/proc/update_hud_back(obj/item/I)
return
-
-
-//Overlays for the worn overlay so you can overlay while you overlay
-//eg: ammo counters, primed grenade flashing, etc.
-//"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file
-/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE)
- . = list()
-
-
/mob/living/carbon/update_body()
update_body_parts()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 4ef741745f..5fa64e5ab5 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1198,3 +1198,19 @@
gender = ngender
return TRUE
return FALSE
+
+/mob/living/vv_get_header()
+ . = ..()
+ var/refid = REF(src)
+ . += {"
+ [VV_HREF_TARGETREF_1V(refid, VV_HK_BASIC_EDIT, "[ckey || "no ckey"]", NAMEOF(src, ckey))] / [VV_HREF_TARGETREF_1V(refid, VV_HK_BASIC_EDIT, "[real_name || "no real name"]", NAMEOF(src, real_name))]
+
+ BRUTE:[getBruteLoss()]
+ FIRE:[getFireLoss()]
+ TOXIN:[getToxLoss()]
+ OXY:[getOxyLoss()]
+ CLONE:[getCloneLoss()]
+ BRAIN:[getOrganLoss(ORGAN_SLOT_BRAIN)]
+ STAMINA:[getStaminaLoss()]
+
+ "}
diff --git a/code/modules/mob/living/living_block.dm b/code/modules/mob/living/living_block.dm
new file mode 100644
index 0000000000..d9e3309e47
--- /dev/null
+++ b/code/modules/mob/living/living_block.dm
@@ -0,0 +1,98 @@
+// This file has a weird name, but it's for anything related to the checks for shields, blocking, dodging, and similar "stop this attack before it actually impacts the target" as opposed to "defend once it has hit".
+
+/*
+/// Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS.
+/// Attack was not blocked
+#define BLOCK_NONE NONE
+/// Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION!
+#define BLOCK_SUCCESS (1<<1)
+
+/// The below are for "metadata" on "how" the attack was blocked.
+
+/// Attack was and should be reflected (NOTE: the SHOULD here is important, as it says "the thing blocking isn't handling the reflecting for you so do it yourself"!)
+#define BLOCK_SHOULD_REFLECT (1<<2)
+/// Attack was manually redirected (including reflected) by any means by the defender. For when YOU are handling the reflection, rather than the thing hitting you. (see sleeping carp)
+#define BLOCK_REDIRECTED (1<<3)
+/// Attack was blocked by something like a shield.
+#define BLOCK_PHYSICAL_EXTERNAL (1<<4)
+/// Attack was blocked by something worn on you.
+#define BLOCK_PHYSICAL_INTERNAL (1<<5)
+/// Attack should pass through. Like SHOULD_REFLECT but for.. well, passing through harmlessly.
+#define BLOCK_SHOULD_PASSTHROUGH (1<<6)
+/// Attack outright missed because the target dodged. Should usually be combined with SHOULD_PASSTHROUGH or something (see martial arts)
+#define BLOCK_TARGET_DODGED (1<<7)
+*/
+
+///Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields. Wrapper for do_run_block(). The arguments on that means the same as for this.
+/mob/living/proc/check_block(atom/object, damage, attack_text = "the attack", attack_type, armour_penetration, mob/attacker, def_zone, list/return_list)
+ return do_run_block(FALSE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list)
+
+/// Runs a block "sequence", effectively checking and then doing effects if necessary. Wrapper for do_run_block(). The arguments on that means the same as for this.
+/mob/living/proc/run_block(atom/object, damage, attack_text = "the attack", attack_type, armour_penetration, mob/attacker, def_zone, list/return_list)
+ return do_run_block(TRUE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list)
+
+/** The actual proc for block checks. DO NOT USE THIS DIRECTLY UNLESS YOU HAVE VERY GOOD REASON TO. To reduce copypaste for differences between handling for real attacks and virtual checks.
+ * Automatically checks all held items for /obj/item/proc/run_block() with the same parameters.
+ * @params
+ * real_attack - If this attack is real. This one is quirky; If it's real, run_block is called. If it's not, check_block is called and none of the regular checks happen, and this is effectively only useful
+ * for populating return_list with blocking metadata.
+ * object - Whatever /atom is actually hitting us, in essence. For example, projectile if gun, item if melee, structure/whatever if it's a thrown, etc.
+ * damage - The nominal damage this would do if it was to hit. Obviously doesn't take into effect explosions/magic/similar things.. unless you implement it to raise the value.
+ * attack_text - The text that this attack should show, in the context of something like "[src] blocks [attack_text]!"
+ * attack_type - See __DEFINES/combat.dm - Attack types, to distinguish between, for example, someone throwing an item at us vs bashing us with it.
+ * armour_penetration - 0-100 value of how effectively armor penetrating the attack should be.
+ * attacker - Set to the mob attacking IF KNOWN. Do not expect this to always be set!
+ * def_zone - The zone this'll impact.
+ * return_list - If something wants to grab things from what items/whatever put into list/block_return on obj/item/run_block and the comsig, pass in a list so you can grab anything put in it after block runs.
+ */
+/mob/living/proc/do_run_block(real_attack = TRUE, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list = list())
+ // Component signal block runs have highest priority.. for now.
+ . = SEND_SIGNAL(src, COMSIG_LIVING_RUN_BLOCK, real_attack, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list)
+ if((. & BLOCK_SUCCESS) && !(. & BLOCK_CONTINUE_CHAIN))
+ return
+ var/list/obj/item/tocheck = get_blocking_items()
+ sortTim(tocheck, /proc/cmp_item_block_priority_asc)
+ // i don't like this
+ var/block_chance_modifier = round(damage / -3)
+ if(real_attack)
+ for(var/obj/item/I in tocheck)
+ // i don't like this too
+ var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example
+ var/results = I.run_block(src, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, return_list)
+ . |= results
+ if((results & BLOCK_SUCCESS) && !(results & BLOCK_CONTINUE_CHAIN))
+ break
+ else
+ for(var/obj/item/I in tocheck)
+ // i don't like this too
+ var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example
+ I.check_block(src, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, return_list)
+
+/// Gets an unsortedlist of objects to run block checks on.
+/mob/living/proc/get_blocking_items()
+ . = list()
+ for(var/obj/item/I in held_items)
+ // this is a bad check but i am not removing it until a better catchall is made
+ if(istype(I, /obj/item/clothing))
+ continue
+ . |= I
+
+/obj/item
+ /// The 0% to 100% chance for the default implementation of random block rolls.
+ var/block_chance = 0
+ /// Block priority, higher means we check this higher in the "chain".
+ var/block_priority = BLOCK_PRIORITY_DEFAULT
+
+/// Runs block and returns flag for do_run_block to process.
+/obj/item/proc/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ SEND_SIGNAL(src, COMSIG_ITEM_RUN_BLOCK, owner, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return)
+ if(prob(final_block_chance))
+ owner.visible_message("[owner] blocks [attack_text] with [src]! ")
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return BLOCK_NONE
+
+/// Returns block information using list/block_return. Used for check_block() on mobs.
+/obj/item/proc/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ SEND_SIGNAL(src, COMSIG_ITEM_CHECK_BLOCK, owner, object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return)
+ var/existing = block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE]
+ block_return[BLOCK_RETURN_NORMAL_BLOCK_CHANCE] = max(existing || 0, final_block_chance)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 27ecaf30d5..7d220739d5 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -36,48 +36,44 @@
/mob/living/proc/on_hit(obj/item/projectile/P)
return BULLET_ACT_HIT
-/mob/living/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0)
- var/block_chance_modifier = round(damage / -3)
- for(var/obj/item/I in held_items)
- if(!istype(I, /obj/item/clothing))
- var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example
- if(I.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type))
- return TRUE
- return FALSE
-
-/mob/living/proc/check_reflect(def_zone) //Reflection checks for anything in your hands, based on the reflection chance of the object(s)
- for(var/obj/item/I in held_items)
- if(I.IsReflect(def_zone))
- return TRUE
- return FALSE
-
-/mob/living/proc/reflect_bullet_check(obj/item/projectile/P, def_zone)
- if(P.is_reflectable && check_reflect(def_zone)) // Checks if you've passed a reflection% check
- visible_message("The [P.name] gets reflected by [src]! ", \
- "The [P.name] gets reflected by [src]! ")
- // Find a turf near or on the original location to bounce to
- if(P.starting)
- var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
- var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
- var/turf/curloc = get_turf(src)
- // redirect the projectile
- P.original = locate(new_x, new_y, P.z)
- P.starting = curloc
- P.firer = src
- P.yo = new_y - curloc.y
- P.xo = new_x - curloc.x
- var/new_angle_s = P.Angle + rand(120,240)
- while(new_angle_s > 180) // Translate to regular projectile degrees
- new_angle_s -= 360
- P.setAngle(new_angle_s)
- return TRUE
- return FALSE
+/mob/living/proc/handle_projectile_attack_redirection(obj/item/projectile/P, redirection_mode, silent = FALSE)
+ P.ignore_source_check = TRUE
+ switch(redirection_mode)
+ if(REDIRECT_METHOD_DEFLECT)
+ P.setAngle(SIMPLIFY_DEGREES(P.Angle + rand(120, 240)))
+ if(!silent)
+ visible_message("[P] gets deflected by [src]! ", \
+ "[P] gets deflected by [src]! ")
+ if(REDIRECT_METHOD_REFLECT)
+ P.setAngle(SIMPLIFY_DEGREES(P.Angle + 180))
+ if(!silent)
+ visible_message("[P] gets reflected by [src]! ", \
+ "[P] gets reflected by [src]! ")
+ if(REDIRECT_METHOD_PASSTHROUGH)
+ if(!silent)
+ visible_message("[P] passes through [src]! ", \
+ "[P] passes through [src]! ")
+ return
+ if(REDIRECT_METHOD_RETURN_TO_SENDER)
+ if(!silent)
+ visible_message("[src] deflects [P] back at their attacker! ", \
+ "[src] deflects [P] back at their attacker! ")
+ if(P.firer)
+ P.setAngle(Get_Angle(src, P.firer))
+ else
+ P.setAngle(SIMPLIFY_DEGREES(P.Angle + 180))
+ else
+ CRASH("Invalid rediretion mode [redirection_mode]")
/mob/living/bullet_act(obj/item/projectile/P, def_zone)
if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself
- if(reflect_bullet_check(P, def_zone))
- return BULLET_ACT_FORCE_PIERCE // complete projectile permutation
- if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration))
+ var/list/returnlist = list()
+ var/returned = run_block(P, P.damage, "the [P.name]", ATTACK_TYPE_PROJECTILE, P.armour_penetration, P.firer, def_zone, returnlist)
+ if(returned & BLOCK_SHOULD_REDIRECT)
+ handle_projectile_attack_redirection(P, returnlist[BLOCK_RETURN_REDIRECT_METHOD])
+ if(returned & BLOCK_REDIRECTED)
+ return BULLET_ACT_FORCE_PIERCE
+ if(returned & BLOCK_SUCCESS)
P.on_hit(src, 100, def_zone)
return BULLET_ACT_BLOCK
var/armor = run_armor_check(def_zone, P.flag, null, null, P.armour_penetration, null)
@@ -108,12 +104,14 @@
return FALSE
/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum)
+ // Throwingdatum can be null if someone had an accident() while slipping with an item in hand.
var/obj/item/I
var/throwpower = 30
if(isitem(AM))
I = AM
throwpower = I.throwforce
- if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK))
+ var/impacting_zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest
+ if(run_block(AM, throwpower, "\the [AM.name]", ATTACK_TYPE_THROWN, 0, throwingdatum?.thrower, impacting_zone) & BLOCK_SUCCESS)
hitpush = FALSE
skipcatch = TRUE
blocked = TRUE
@@ -124,10 +122,9 @@
if(I)
if(!skipcatch && isturf(I.loc) && catch_item(I))
return TRUE
- var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest
var/dtype = BRUTE
var/volume = I.get_volume_by_throwforce_and_or_w_class()
- SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, zone)
+ SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, impacting_zone)
dtype = I.damtype
if (I.throwforce > 0) //If the weapon's throwforce is greater than zero...
@@ -145,8 +142,8 @@
if(!blocked)
visible_message("[src] has been hit by [I]. ", \
"[src] has been hit by [I]. ")
- var/armor = run_armor_check(zone, "melee", "Your armor has protected your [parse_zone(zone)].", "Your armor has softened hit to your [parse_zone(zone)].",I.armour_penetration)
- apply_damage(I.throwforce, dtype, zone, armor)
+ var/armor = run_armor_check(impacting_zone, "melee", "Your armor has protected your [parse_zone(impacting_zone)].", "Your armor has softened hit to your [parse_zone(impacting_zone)].",I.armour_penetration)
+ apply_damage(I.throwforce, dtype, impacting_zone, armor)
if(I.thrownby)
log_combat(I.thrownby, src, "threw and hit", I)
else
@@ -193,17 +190,6 @@
if(user == anchored || !isturf(user.loc))
return FALSE
- //pacifist vore check.
- if(user.pulling && HAS_TRAIT(user, TRAIT_PACIFISM) && user.voremode) //they can only do heals, noisy guts, absorbing (technically not harm)
- if(ismob(user.pulling))
- var/mob/P = user.pulling
- if(src != user)
- to_chat(user, "You can't risk digestion! ")
- return FALSE
- else
- user.vore_attack(user, P, user)
- return
-
//normal vore check.
if(user.pulling && user.grab_state == GRAB_AGGRESSIVE && user.voremode)
if(ismob(user.pulling))
@@ -283,7 +269,7 @@
/mob/living/attack_hand(mob/user)
..() //Ignoring parent return value here.
SEND_SIGNAL(src, COMSIG_MOB_ATTACK_HAND, user)
- if((user != src) && user.a_intent != INTENT_HELP && check_shields(user, 0, user.name, attack_type = UNARMED_ATTACK))
+ if((user != src) && user.a_intent != INTENT_HELP && (run_block(user, 0, user.name, ATTACK_TYPE_UNARMED | ATTACK_TYPE_MELEE, null, user, check_zone(user.zone_selected)) & BLOCK_SUCCESS))
log_combat(user, src, "attempted to touch")
visible_message("[user] attempted to touch [src]! ")
return TRUE
@@ -294,7 +280,7 @@
to_chat(user, "You don't want to hurt [src]! ")
return TRUE
var/hulk_verb = pick("smash","pummel")
- if(user != src && check_shields(user, 15, "the [hulk_verb]ing"))
+ if(user != src && (run_block(user, 15, "the [hulk_verb]ing", ATTACK_TYPE_MELEE, null, user, check_zone(user.zone_selected)) & BLOCK_SUCCESS))
return TRUE
..()
return FALSE
@@ -309,14 +295,14 @@
M.Feedstop()
return // can't attack while eating!
- if(HAS_TRAIT(src, TRAIT_PACIFISM))
+ if(HAS_TRAIT(M, TRAIT_PACIFISM))
to_chat(M, "You don't want to hurt anyone! ")
return FALSE
var/damage = rand(5, 35)
if(M.is_adult)
damage = rand(20, 40)
- if(check_shields(M, damage, "the [M.name]"))
+ if(run_block(M, damage, "the [M.name]", ATTACK_TYPE_MELEE, null, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS)
return FALSE
if (stat != DEAD)
@@ -335,7 +321,7 @@
if(HAS_TRAIT(M, TRAIT_PACIFISM))
to_chat(M, "You don't want to hurt anyone! ")
return FALSE
- if(check_shields(M, rand(M.melee_damage_lower, M.melee_damage_upper), "the [M.name]", MELEE_ATTACK, M.armour_penetration))
+ if(run_block(M, rand(M.melee_damage_lower, M.melee_damage_upper), "the [M.name]", ATTACK_TYPE_MELEE, M.armour_penetration, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS)
return FALSE
if(M.attack_sound)
playsound(loc, M.attack_sound, 50, 1, 1)
@@ -345,17 +331,15 @@
log_combat(M, src, "attacked")
return TRUE
-
/mob/living/attack_paw(mob/living/carbon/monkey/M)
if (M.a_intent == INTENT_HARM)
if(HAS_TRAIT(M, TRAIT_PACIFISM))
to_chat(M, "You don't want to hurt anyone! ")
return FALSE
-
if(M.is_muzzled() || (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSMOUTH))
to_chat(M, "You can't bite with your mouth covered! ")
return FALSE
- if(check_shields(M, 0, "the [M.name]"))
+ if(run_block(M, 0, "the [M.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS)
return FALSE
M.do_attack_animation(src, ATTACK_EFFECT_BITE)
if (prob(75))
@@ -379,7 +363,7 @@
if(HAS_TRAIT(L, TRAIT_PACIFISM))
to_chat(L, "You don't want to hurt anyone! ")
return FALSE
- if(L != src && check_shields(L, rand(1, 3), "the [L.name]"))
+ if(L != src && (run_block(L, rand(1, 3), "the [L.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, L, check_zone(L.zone_selected)) & BLOCK_SUCCESS))
return FALSE
L.do_attack_animation(src)
if(prob(90))
@@ -393,7 +377,7 @@
"[L.name] has attempted to bite [src]! ", null, COMBAT_MESSAGE_RANGE)
/mob/living/attack_alien(mob/living/carbon/alien/humanoid/M)
- if((M != src) && M.a_intent != INTENT_HELP && check_shields(M, 0, "the [M.name]"))
+ if((M != src) && M.a_intent != INTENT_HELP && (run_block(M, 0, "the [M.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS))
visible_message("[M] attempted to touch [src]! ")
return FALSE
switch(M.a_intent)
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 35b49cce8e..f90b285d2d 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -354,7 +354,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
if(cultslurring)
message = cultslur(message)
-
+
if(clockcultslurring)
message = CLOCK_CULT_SLUR(message)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 6b4a6645e6..d178af9fb0 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -695,7 +695,7 @@
holo_icon = client.prefs.get_filtered_holoform(HOLOFORM_FILTER_AI)
else
holo_icon = getHologramIcon(icon('icons/mob/ai.dmi', "female"))
- else if("xeno queen")
+ if("xeno queen")
holo_icon = getHologramIcon(icon(icon_list[input],"alienq"))
else
holo_icon = getHologramIcon(icon(icon_list[input], input))
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index 810dd778de..892cc3f13b 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -283,9 +283,7 @@
T.visible_message("A port on [src] opens to reveal [cable], which promptly falls to the floor. ", "You hear the soft click of something light and hard falling to the ground. ")
if("loudness")
if(subscreen == 1) // Open Instrument
- internal_instrument.interact(src)
- if(subscreen == 2) // Change Instrument type
- internal_instrument.selectInstrument()
+ internal_instrument.ui_interact(src)
//updateUsrDialog() We only need to account for the single mob this is intended for, and he will *always* be able to call this window
paiInterface() // So we'll just call the update directly rather than doing some default checks
diff --git a/code/modules/mob/living/silicon/robot/update_icons.dm b/code/modules/mob/living/silicon/robot/update_icons.dm
index 8d40e35706..72ad21c51e 100644
--- a/code/modules/mob/living/silicon/robot/update_icons.dm
+++ b/code/modules/mob/living/silicon/robot/update_icons.dm
@@ -41,7 +41,7 @@
else
add_overlay("ov-opencover -c")
if(hat)
- var/mutable_appearance/head_overlay = hat.build_worn_icon(state = hat.icon_state, default_layer = 20, default_icon_file = 'icons/mob/head.dmi')
+ var/mutable_appearance/head_overlay = hat.build_worn_icon(default_layer = 20, default_icon_file = 'icons/mob/clothing/head.dmi', override_state = hat.icon_state)
head_overlay.pixel_y += hat_offset
add_overlay(head_overlay)
update_fire()
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index a93bc8662e..9b3db8af62 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -112,11 +112,15 @@
/mob/living/silicon/bullet_act(obj/item/projectile/P, def_zone)
if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself
- if(reflect_bullet_check(P, def_zone))
- return -1 // complete projectile permutation
- if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration))
+ var/list/returnlist = list()
+ var/returned = run_block(P, P.damage, "the [P.name]", ATTACK_TYPE_PROJECTILE, P.armour_penetration, P.firer, def_zone, returnlist)
+ if(returned & BLOCK_SHOULD_REDIRECT)
+ handle_projectile_attack_redirection(P, returnlist[BLOCK_RETURN_REDIRECT_METHOD])
+ if(returned & BLOCK_REDIRECTED)
+ return BULLET_ACT_FORCE_PIERCE
+ if(returned & BLOCK_SUCCESS)
P.on_hit(src, 100, def_zone)
- return 2
+ return BULLET_ACT_BLOCK
if((P.damage_type == BRUTE || P.damage_type == BURN))
adjustBruteLoss(P.damage)
if(prob(P.damage*1.5))
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 75364b2845..a8e0d2c1c8 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -445,7 +445,6 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r
return scan_result
else
return FALSE //The current element failed assessment, move on to the next.
- return
/mob/living/simple_animal/bot/proc/check_bot(targ)
var/turf/T = get_turf(targ)
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index d3fb65c585..ab7c632214 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -523,9 +523,6 @@
soft_reset()
return
- reagent_id = null
- return
-
/mob/living/simple_animal/bot/medbot/proc/check_overdose(mob/living/carbon/patient,reagent_id,injection_amount)
var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_id]
if(!R.overdose_threshold) //Some chems do not have an OD threshold
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index 5754f8c3b2..d199bc2ead 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -235,10 +235,11 @@ Auto Patrol: []"},
playsound(src, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2)
C.visible_message("[src] is trying to put zipties on [C]! ",\
"[src] is trying to put zipties on you! ")
- addtimer(CALLBACK(src, .proc/attempt_handcuff, C), 60)
+ if(do_after(src, 60, FALSE, C))
+ attempt_handcuff(C)
/mob/living/simple_animal/bot/secbot/proc/attempt_handcuff(mob/living/carbon/C)
- if( !on || !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
+ if (!on)
return
if(!C.handcuffed)
C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C)
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index a6366c03fe..674cc722d8 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -392,6 +392,9 @@
var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult)
if(!C)
return
+ if(!C.cult_team)
+ to_chat(the_construct, "You are alone, and have no team. ")
+ return
var/datum/objective/eldergod/summon_objective = locate() in C.cult_team.objectives
if(summon_objective.check_completion())
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
index 0d344f1a9b..2a84152088 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
@@ -105,7 +105,7 @@
. = ..()
if(can_be_held)
//icon/item state is defined in mob_holder/drone_worn_icon()
- AddElement(/datum/element/mob_holder, null, 'icons/mob/head.dmi', 'icons/mob/inhands/clothing_righthand.dmi', 'icons/mob/inhands/clothing_lefthand.dmi', ITEM_SLOT_HEAD, /datum/element/mob_holder.proc/drone_worn_icon)
+ AddElement(/datum/element/mob_holder, null, 'icons/mob/clothing/head.dmi', 'icons/mob/inhands/clothing_righthand.dmi', 'icons/mob/inhands/clothing_lefthand.dmi', ITEM_SLOT_HEAD, /datum/element/mob_holder.proc/drone_worn_icon)
/mob/living/simple_animal/drone/med_hud_set_health()
var/image/holder = hud_list[DIAG_HUD]
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
index 0f97a4c496..54184310a8 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
@@ -92,8 +92,8 @@
return
if(hack)
if(hacked)
- return
Stun(40)
+ return
if(clockwork)
to_chat(src, "ERROR: LAW OVERRIDE DETECTED ")
to_chat(src, "From now on, these are your laws: ")
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
index 408edc7110..815c2bc0db 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
@@ -28,12 +28,7 @@
var/y_shift = getItemPixelShiftY()
if(r_hand)
-
- var/r_state = r_hand.item_state
- if(!r_state)
- r_state = r_hand.icon_state
-
- var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(state = r_state, default_layer = DRONE_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
+ var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(default_layer = DRONE_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
if(y_shift)
r_hand_overlay.pixel_y += y_shift
@@ -46,12 +41,7 @@
client.screen |= r_hand
if(l_hand)
-
- var/l_state = l_hand.item_state
- if(!l_state)
- l_state = l_hand.icon_state
-
- var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(state = l_state, default_layer = DRONE_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
+ var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(default_layer = DRONE_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
if(y_shift)
l_hand_overlay.pixel_y += y_shift
@@ -82,10 +72,10 @@
if(client && hud_used && hud_used.hud_shown)
head.screen_loc = ui_drone_head
client.screen += head
- var/used_head_icon = 'icons/mob/head.dmi'
+ var/used_head_icon = 'icons/mob/clothing/head.dmi'
if(istype(head, /obj/item/clothing/mask))
- used_head_icon = 'icons/mob/mask.dmi'
- var/mutable_appearance/head_overlay = head.build_worn_icon(state = head.icon_state, default_layer = DRONE_HEAD_LAYER, default_icon_file = used_head_icon)
+ used_head_icon = 'icons/mob/clothing/mask.dmi'
+ var/mutable_appearance/head_overlay = head.build_worn_icon(default_layer = DRONE_HEAD_LAYER, default_icon_file = used_head_icon, override_state = head.icon_state)
head_overlay.pixel_y -= 15
drone_overlays[DRONE_HEAD_LAYER] = head_overlay
diff --git a/code/modules/mob/living/simple_animal/friendly/gondola.dm b/code/modules/mob/living/simple_animal/friendly/gondola.dm
index 67ec46cf2d..04d53e7d05 100644
--- a/code/modules/mob/living/simple_animal/friendly/gondola.dm
+++ b/code/modules/mob/living/simple_animal/friendly/gondola.dm
@@ -33,6 +33,10 @@
if (!(istype(src, /mob/living/simple_animal/pet/gondola/gondolapod)))
CreateGondola()
+/mob/living/simple_animal/pet/gondola/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/spellcasting, SPELL_SKIP_VOCAL) // so they can cast spells despite being silent.
+
/mob/living/simple_animal/pet/gondola/proc/CreateGondola()
icon_state = null
icon_living = null
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm
index 3a1df8c0b3..af342118a2 100644
--- a/code/modules/mob/living/simple_animal/guardian/guardian.dm
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm
@@ -112,6 +112,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
attacktext = "bites"
attack_sound = 'sound/weapons/bite.ogg'
recolorentiresprite = TRUE
+ if(!recolorentiresprite) //we want this to proc before stand logs in, so the overlay isnt gone for some reason
+ cooloverlay = mutable_appearance(icon, theme)
+ add_overlay(cooloverlay)
/mob/living/simple_animal/hostile/guardian/Login() //if we have a mind, set its name to ours when it logs in
..()
@@ -310,11 +313,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
var/obj/item/r_hand = get_item_for_held_index(2)
if(r_hand)
- var/r_state = r_hand.item_state
- if(!r_state)
- r_state = r_hand.icon_state
-
- hands_overlays += r_hand.build_worn_icon(state = r_state, default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
+ hands_overlays += r_hand.build_worn_icon(default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
r_hand.layer = ABOVE_HUD_LAYER
@@ -323,11 +322,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
client.screen |= r_hand
if(l_hand)
- var/l_state = l_hand.item_state
- if(!l_state)
- l_state = l_hand.icon_state
-
- hands_overlays += l_hand.build_worn_icon(state = l_state, default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
+ hands_overlays += l_hand.build_worn_icon(default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
l_hand.layer = ABOVE_HUD_LAYER
diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
index 237ab9d919..1ece6dde37 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
@@ -54,7 +54,7 @@
var/blocked = FALSE
if(hasmatchingsummoner(hit_atom)) //if the summoner matches don't hurt them
blocked = TRUE
- if(L.check_shields(src, 90, "[name]", attack_type = THROWN_PROJECTILE_ATTACK))
+ if(L.run_block(src, 90, "[name]", ATTACK_TYPE_TACKLE, 0, src) & BLOCK_SUCCESS)
blocked = TRUE
if(!blocked)
L.drop_all_held_items()
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 3c3612f434..439bedf3cc 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -400,10 +400,9 @@
action.button_icon_state = "wrap_[active]"
action.UpdateButtonIcon()
-/obj/effect/proc_holder/wrap/Click()
- if(!istype(usr, /mob/living/simple_animal/hostile/poison/giant_spider/nurse))
+/obj/effect/proc_holder/wrap/Trigger(mob/living/simple_animal/hostile/poison/giant_spider/nurse/user)
+ if(!istype(user))
return TRUE
- var/mob/living/simple_animal/hostile/poison/giant_spider/nurse/user = usr
activate(user)
return TRUE
@@ -444,7 +443,7 @@
check_flags = AB_CHECK_CONSCIOUS
button_icon_state = "lay_eggs"
-/datum/action/innate/spider/lay_eggs/IsAvailable()
+/datum/action/innate/spider/lay_eggs/IsAvailable(silent = FALSE)
if(..())
if(!istype(owner, /mob/living/simple_animal/hostile/poison/giant_spider/nurse))
return 0
@@ -508,7 +507,7 @@
desc = "Send a command to all living spiders."
button_icon_state = "command"
-/datum/action/innate/spider/comm/IsAvailable()
+/datum/action/innate/spider/comm/IsAvailable(silent = FALSE)
if(!istype(owner, /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife))
return FALSE
return TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
index b3e0f3b658..9d451748b0 100644
--- a/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
@@ -33,14 +33,12 @@
var/obj/item/r_hand = get_item_for_held_index(2)
if(r_hand)
- var/r_state = r_hand.item_state ? r_hand.item_state : r_hand.icon_state
- var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(state = r_state, default_layer = GORILLA_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
+ var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(default_layer = GORILLA_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
r_hand_overlay.pixel_y -= 1
hands_overlays += r_hand_overlay
if(l_hand)
- var/l_state = l_hand.item_state ? l_hand.item_state : l_hand.icon_state
- var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(state = l_state, default_layer = GORILLA_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
+ var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(default_layer = GORILLA_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
l_hand_overlay.pixel_y -= 1
hands_overlays += l_hand_overlay
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 08bd1cedbc..83d27e7ea6 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -762,7 +762,7 @@ Difficulty: Very Hard
name = "Exit Possession"
desc = "Exits the body you are possessing."
charge_max = 60
- clothes_req = 0
+ clothes_req = NONE
invocation_type = "none"
max_targets = 1
range = -1
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 9ee51c0c4f..8aed1ede30 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -26,7 +26,6 @@
pull_force = MOVE_FORCE_OVERPOWERING
mob_size = MOB_SIZE_LARGE
layer = LARGE_MOB_LAYER //Looks weird with them slipping under mineral walls and cameras and shit otherwise
- mouse_opacity = MOUSE_OPACITY_OPAQUE // Easier to click on in melee, they're giant targets anyway
flags_1 = PREVENT_CONTENTS_EXPLOSION_1 | HEAR_1
var/list/crusher_loot
var/medal_type
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 95fafbabfd..884e3bb989 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
@@ -40,27 +40,27 @@
deathsound = 'sound/magic/demon_dies.ogg'
deathmessage = "begins to shudder as it becomes transparent..."
loot_drop = /obj/item/clothing/neck/cloak/herald_cloak
-
+
can_talk = 1
attack_action_types = list(/datum/action/innate/elite_attack/herald_trishot,
/datum/action/innate/elite_attack/herald_directionalshot,
/datum/action/innate/elite_attack/herald_teleshot,
/datum/action/innate/elite_attack/herald_mirror)
-
+
var/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/my_mirror = null
var/is_mirror = FALSE
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/death()
. = ..()
if(!is_mirror)
addtimer(CALLBACK(src, .proc/become_ghost), 8)
if(my_mirror != null)
qdel(my_mirror)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/become_ghost()
icon_state = "herald_ghost"
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
. = ..()
if(.)
@@ -71,25 +71,25 @@
button_icon_state = "herald_trishot"
chosen_message = "You are now firing three shots in your chosen direction. "
chosen_attack_num = HERALD_TRISHOT
-
+
/datum/action/innate/elite_attack/herald_directionalshot
name = "Circular Shot"
button_icon_state = "herald_directionalshot"
chosen_message = "You are firing projectiles in all directions. "
chosen_attack_num = HERALD_DIRECTIONALSHOT
-
+
/datum/action/innate/elite_attack/herald_teleshot
name = "Teleport Shot"
button_icon_state = "herald_teleshot"
chosen_message = "You will now fire a shot which teleports you where it lands. "
chosen_attack_num = HERALD_TELESHOT
-
+
/datum/action/innate/elite_attack/herald_mirror
name = "Summon Mirror"
button_icon_state = "herald_mirror"
chosen_message = "You will spawn a mirror which duplicates your attacks. "
chosen_attack_num = HERALD_MIRROR
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/OpenFire()
if(client)
switch(chosen_attack)
@@ -124,7 +124,7 @@
my_mirror.herald_teleshot(target)
if(HERALD_MIRROR)
herald_mirror()
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/shoot_projectile(turf/marker, set_angle, var/is_teleshot)
var/turf/startloc = get_turf(src)
var/obj/item/projectile/herald/H = null
@@ -137,7 +137,7 @@
if(target)
H.original = target
H.fire(set_angle)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_trishot(target)
ranged_cooldown = world.time + 30
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
@@ -151,17 +151,17 @@
addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 10)
addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 12)
addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 14)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_circleshot()
var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315)
for(var/i in directional_shot_angles)
shoot_projectile(get_turf(src), i, FALSE)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/unenrage()
if(stat == DEAD || is_mirror)
return
icon_state = "herald"
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_directionalshot()
ranged_cooldown = world.time + 50
if(!is_mirror)
@@ -172,14 +172,14 @@
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
addtimer(CALLBACK(src, .proc/herald_circleshot), 15)
addtimer(CALLBACK(src, .proc/unenrage), 20)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_teleshot(target)
ranged_cooldown = world.time + 30
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
var/target_turf = get_turf(target)
var/angle_to_target = Get_Angle(src, target_turf)
shoot_projectile(target_turf, angle_to_target, TRUE)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_mirror()
ranged_cooldown = world.time + 40
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
@@ -190,7 +190,7 @@
my_mirror = new_mirror
my_mirror.my_master = src
my_mirror.faction = faction.Copy()
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror
name = "herald's mirror"
desc = "This fiendish work of magic copies the herald's attacks. Seems logical to smash it."
@@ -203,16 +203,16 @@
del_on_death = TRUE
is_mirror = TRUE
var/mob/living/simple_animal/hostile/asteroid/elite/herald/my_master = null
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/Initialize()
..()
toggle_ai(AI_OFF)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/Destroy()
if(my_master != null)
my_master.my_mirror = null
. = ..()
-
+
/obj/item/projectile/herald
name ="death bolt"
icon_state= "chronobolt"
@@ -222,7 +222,7 @@
eyeblur = 0
damage_type = BRUTE
pass_flags = PASSTABLE
-
+
/obj/item/projectile/herald/teleshot
name ="golden bolt"
damage = 0
@@ -239,11 +239,11 @@
var/mob/living/F = firer
if(F != null && istype(F, /mob/living/simple_animal/hostile/asteroid/elite) && F.faction_check_mob(L))
L.heal_overall_damage(damage)
-
+
/obj/item/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE)
. = ..()
firer.forceMove(get_turf(src))
-
+
//Herald's loot: Cloak of the Prophet
/obj/item/clothing/neck/cloak/herald_cloak
@@ -252,13 +252,13 @@
icon = 'icons/obj/lavaland/elite_trophies.dmi'
icon_state = "herald_cloak"
body_parts_covered = CHEST|GROIN|ARMS
- hit_reaction_chance = 10
-
+ var/hit_reaction_chance = 10
+
/obj/item/clothing/neck/cloak/herald_cloak/proc/reactionshot(mob/living/carbon/owner)
var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315)
for(var/i in directional_shot_angles)
shoot_projectile(get_turf(owner), i, owner)
-
+
/obj/item/clothing/neck/cloak/herald_cloak/proc/shoot_projectile(turf/marker, set_angle, mob/living/carbon/owner)
var/turf/startloc = get_turf(owner)
var/obj/item/projectile/herald/H = null
@@ -266,12 +266,11 @@
H.preparePixelProjectile(marker, startloc)
H.firer = owner
H.fire(set_angle)
-
-/obj/item/clothing/neck/cloak/herald_cloak/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+
+/obj/item/clothing/neck/cloak/herald_cloak/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
. = ..()
if(rand(1,100) > hit_reaction_chance)
return
owner.visible_message("[owner]'s [src] emits a loud noise as [owner] is struck! ")
- var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315)
playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
addtimer(CALLBACK(src, .proc/reactionshot, owner), 10)
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 d83a38ae24..c9011c5f5f 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
@@ -12,7 +12,7 @@
* - Charges at the target after a telegraph, throwing them across the arena should it connect.
* - Legionnaire's head detaches, attacking as it's own entity. Has abilities of it's own later into the fight. Once dead, regenerates after a brief period. If the skill is used while the head is off, it will be killed.
* - Leaves a pile of bones at your location. Upon using this skill again, you'll swap locations with the bone pile.
- * - Spews a cloud of smoke from it's maw, wherever said maw is.
+ * - Spews a cloud of smoke from it's maw, wherever said maw is.
* A unique fight incorporating the head mechanic of legion into a whole new beast. Combatants will need to make sure the tag-team of head and body don't lure them into a deadly trap.
*/
@@ -45,35 +45,35 @@
/datum/action/innate/elite_attack/head_detach,
/datum/action/innate/elite_attack/bonfire_teleport,
/datum/action/innate/elite_attack/spew_smoke)
-
+
var/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead/myhead = null
var/obj/structure/legionnaire_bonfire/mypile = null
var/has_head = TRUE
-
+
/datum/action/innate/elite_attack/legionnaire_charge
name = "Legionnaire Charge"
button_icon_state = "legionnaire_charge"
chosen_message = "You will attempt to grab your opponent and throw them. "
chosen_attack_num = LEGIONNAIRE_CHARGE
-
+
/datum/action/innate/elite_attack/head_detach
name = "Release Head"
button_icon_state = "head_detach"
chosen_message = "You will now detach your head or kill it if it is already released. "
chosen_attack_num = HEAD_DETACH
-
+
/datum/action/innate/elite_attack/bonfire_teleport
name = "Bonfire Teleport"
button_icon_state = "bonfire_teleport"
chosen_message = "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_attack_num = BONFIRE_TELEPORT
-
+
/datum/action/innate/elite_attack/spew_smoke
name = "Spew Smoke"
button_icon_state = "spew_smoke"
chosen_message = "Your head will spew smoke in an area, wherever it may be. "
chosen_attack_num = SPEW_SMOKE
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/OpenFire()
if(client)
switch(chosen_attack)
@@ -96,7 +96,7 @@
bonfire_teleport()
if(SPEW_SMOKE)
spew_smoke()
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/legionnaire_charge(target)
ranged_cooldown = world.time + 50
var/dir_to_target = get_dir(get_turf(src), get_turf(target))
@@ -107,7 +107,7 @@
playsound(src,'sound/magic/demon_attack1.ogg', 200, 1)
visible_message("[src] prepares to charge! ")
addtimer(CALLBACK(src, .proc/legionnaire_charge_2, dir_to_target, 0), 5)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/legionnaire_charge_2(var/move_dir, var/times_ran)
if(times_ran >= 4)
return
@@ -136,7 +136,7 @@
L.Stun(20) //substituting this for the Paralyze from the line above, because we don't have tg paralysis stuff
L.adjustBruteLoss(50)
addtimer(CALLBACK(src, .proc/legionnaire_charge_2, move_dir, (times_ran + 1)), 2)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/head_detach(target)
ranged_cooldown = world.time + 10
if(myhead != null)
@@ -160,11 +160,11 @@
else if(health < maxHealth * 0.5)
myhead.melee_damage_lower = 20
myhead.melee_damage_upper = 20
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/onHeadDeath()
myhead = null
addtimer(CALLBACK(src, .proc/regain_head), 50)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/regain_head()
has_head = TRUE
if(stat == DEAD)
@@ -196,7 +196,7 @@
forceMove(pileturf)
visible_message("[src] forms from the bonfire! ")
mypile.forceMove(legionturf)
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/spew_smoke()
ranged_cooldown = world.time + 60
var/turf/T = null
@@ -213,7 +213,7 @@
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(2, T)
smoke.start()
-
+
//The legionnaire's head. Basically the same as any legion head, but we have to tell our creator when we die so they can generate another head.
/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead
name = "legionnaire head"
@@ -239,12 +239,12 @@
faction = list()
ranged = FALSE
var/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/body = null
-
+
/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead/death()
. = ..()
if(body)
body.onHeadDeath()
-
+
//The legionnaire's bonfire, which can be swapped positions with. Also sets flammable living beings on fire when they walk over it.
/obj/structure/legionnaire_bonfire
name = "bone pile"
@@ -258,20 +258,20 @@
light_range = 4
light_color = LIGHT_COLOR_RED
var/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/myowner = null
-
-
+
+
/obj/structure/legionnaire_bonfire/Entered(atom/movable/mover, turf/target)
if(isliving(mover))
var/mob/living/L = mover
L.adjust_fire_stacks(3)
L.IgniteMob()
. = ..()
-
+
/obj/structure/legionnaire_bonfire/Destroy()
if(myowner != null)
myowner.mypile = null
. = ..()
-
+
//The visual effect which appears in front of legionnaire when he goes to charge.
/obj/effect/temp_visual/dragon_swoop/legionnaire
duration = 10
@@ -280,7 +280,7 @@
/obj/effect/temp_visual/dragon_swoop/legionnaire/Initialize()
. = ..()
transform *= 0.33
-
+
// Legionnaire's loot: Legionnaire Spine
/obj/item/crusher_trophy/legionnaire_spine
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index b41ca15948..89d9919981 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -285,9 +285,10 @@
if("Miner")
mob_species = pickweight(list(/datum/species/human = 70, /datum/species/lizard = 26, /datum/species/fly = 2, /datum/species/plasmaman = 2))
if(mob_species == /datum/species/plasmaman)
- uniform = /obj/item/clothing/under/plasmaman
- head = /obj/item/clothing/head/helmet/space/plasmaman
+ uniform = /obj/item/clothing/under/plasmaman/mining
+ head = /obj/item/clothing/head/helmet/space/plasmaman/mining
belt = /obj/item/tank/internals/plasmaman/belt
+ mask = /obj/item/clothing/mask/gas/explorer
else
uniform = /obj/item/clothing/under/rank/cargo/miner/lavaland
if (prob(4))
diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm
index fb31e48d90..8c622c7f29 100644
--- a/code/modules/mob/living/simple_animal/hostile/statue.dm
+++ b/code/modules/mob/living/simple_animal/hostile/statue.dm
@@ -169,7 +169,7 @@
desc = "You will trigger a large amount of lights around you to flicker."
charge_max = 300
- clothes_req = 0
+ clothes_req = NONE
range = 14
/obj/effect/proc_holder/spell/aoe_turf/flicker_lights/cast(list/targets,mob/user = usr)
@@ -185,7 +185,7 @@
message = "You glare your eyes. "
charge_max = 600
- clothes_req = 0
+ clothes_req = NONE
range = 10
/obj/effect/proc_holder/spell/aoe_turf/blindness/cast(list/targets,mob/user = usr)
@@ -201,7 +201,7 @@
desc = "Toggle your nightvision mode."
charge_max = 10
- clothes_req = 0
+ clothes_req = NONE
message = "You toggle your night vision! "
range = -1
diff --git a/code/modules/mob/living/simple_animal/hostile/wizard.dm b/code/modules/mob/living/simple_animal/hostile/wizard.dm
index 7265540679..15d641299d 100644
--- a/code/modules/mob/living/simple_animal/hostile/wizard.dm
+++ b/code/modules/mob/living/simple_animal/hostile/wizard.dm
@@ -43,23 +43,23 @@
/mob/living/simple_animal/hostile/wizard/Initialize()
. = ..()
fireball = new /obj/effect/proc_holder/spell/aimed/fireball
- fireball.clothes_req = 0
- fireball.human_req = 0
- fireball.player_lock = 0
+ fireball.clothes_req = NONE
+ fireball.mobs_whitelist = null
+ fireball.player_lock = FALSE
AddSpell(fireball)
var/obj/item/implant/exile/I = new
I.implant(src, null, TRUE)
mm = new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile
- mm.clothes_req = 0
- mm.human_req = 0
- mm.player_lock = 0
+ mm.clothes_req = NONE
+ mm.mobs_whitelist = null
+ mm.player_lock = FALSE
AddSpell(mm)
blink = new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink
- blink.clothes_req = 0
- blink.human_req = 0
- blink.player_lock = 0
+ blink.clothes_req = NONE
+ blink.mobs_whitelist = null
+ blink.player_lock = FALSE
blink.outer_tele_radius = 3
AddSpell(blink)
diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm
index bf80ab9ff4..4f8e271d6f 100644
--- a/code/modules/mob/living/simple_animal/slime/powers.dm
+++ b/code/modules/mob/living/simple_animal/slime/powers.dm
@@ -11,7 +11,7 @@
background_icon_state = "bg_alien"
var/needs_growth = NO_GROWTH_NEEDED
-/datum/action/innate/slime/IsAvailable()
+/datum/action/innate/slime/IsAvailable(silent = FALSE)
if(..())
var/mob/living/simple_animal/slime/S = owner
if(needs_growth == GROWTH_NEEDED)
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 5cdeaecd37..1375d88948 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -7,6 +7,8 @@
/mob/living/proc/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg)
if(!iscarbon(src))
return Paralyze(amount, updating, ignore_canknockdown)
+ if(!ignore_canknockdown && !(status_flags & CANKNOCKDOWN))
+ return FALSE
if(istype(buckled, /obj/vehicle/ridden))
buckled.unbuckle_mob(src)
var/drop_items = amount > 80 //80 is cutoff for old item dropping behavior
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 5225534cee..d03443cf61 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -632,7 +632,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
/mob/proc/add_spells_to_statpanel(list/spells)
for(var/obj/effect/proc_holder/spell/S in spells)
- if(S.can_be_cast_by(src))
+ if((!S.mobs_blacklist || !S.mobs_blacklist[src]) && (!S.mobs_whitelist || S.mobs_whitelist[src]))
switch(S.charge_type)
if("recharge")
statpanel("[S.panel]","[S.charge_counter/10.0]/[S.charge_max/10]",S)
@@ -946,18 +946,65 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
/mob/vv_get_dropdown()
. = ..()
- . += "---"
- .["Gib"] = "?_src_=vars;[HrefToken()];gib=[REF(src)]"
- .["Give Spell"] = "?_src_=vars;[HrefToken()];give_spell=[REF(src)]"
- .["Remove Spell"] = "?_src_=vars;[HrefToken()];remove_spell=[REF(src)]"
- .["Give Disease"] = "?_src_=vars;[HrefToken()];give_disease=[REF(src)]"
- .["Toggle Godmode"] = "?_src_=vars;[HrefToken()];godmode=[REF(src)]"
- .["Drop Everything"] = "?_src_=vars;[HrefToken()];drop_everything=[REF(src)]"
- .["Regenerate Icons"] = "?_src_=vars;[HrefToken()];regenerateicons=[REF(src)]"
- .["Show player panel"] = "?_src_=vars;[HrefToken()];mob_player_panel=[REF(src)]"
- .["Toggle Build Mode"] = "?_src_=vars;[HrefToken()];build_mode=[REF(src)]"
- .["Assume Direct Control"] = "?_src_=vars;[HrefToken()];direct_control=[REF(src)]"
- .["Offer Control to Ghosts"] = "?_src_=vars;[HrefToken()];offer_control=[REF(src)]"
+ VV_DROPDOWN_OPTION("", "---------")
+ VV_DROPDOWN_OPTION(VV_HK_GIB, "Gib")
+ VV_DROPDOWN_OPTION(VV_HK_GIVE_SPELL, "Give Spell")
+ VV_DROPDOWN_OPTION(VV_HK_REMOVE_SPELL, "Remove Spell")
+ VV_DROPDOWN_OPTION(VV_HK_GIVE_DISEASE, "Give Disease")
+ VV_DROPDOWN_OPTION(VV_HK_GODMODE, "Toggle Godmode")
+ VV_DROPDOWN_OPTION(VV_HK_DROP_ALL, "Drop Everything")
+ VV_DROPDOWN_OPTION(VV_HK_REGEN_ICONS, "Regenerate Icons")
+ VV_DROPDOWN_OPTION(VV_HK_PLAYER_PANEL, "Show player panel")
+ VV_DROPDOWN_OPTION(VV_HK_BUILDMODE, "Toggle Buildmode")
+ VV_DROPDOWN_OPTION(VV_HK_DIRECT_CONTROL, "Assume Direct Control")
+ VV_DROPDOWN_OPTION(VV_HK_OFFER_GHOSTS, "Offer Control to Ghosts")
+
+/mob/vv_do_topic(list/href_list)
+ . = ..()
+ if(href_list[VV_HK_REGEN_ICONS])
+ if(!check_rights(NONE))
+ return
+ regenerate_icons()
+ if(href_list[VV_HK_PLAYER_PANEL])
+ if(!check_rights(NONE))
+ return
+ usr.client.holder.show_player_panel(src)
+ if(href_list[VV_HK_GODMODE])
+ if(!check_rights(R_ADMIN))
+ return
+ usr.client.cmd_admin_godmode(src)
+ if(href_list[VV_HK_GIVE_SPELL])
+ if(!check_rights(NONE))
+ return
+ usr.client.give_spell(src)
+ if(href_list[VV_HK_REMOVE_SPELL])
+ if(!check_rights(NONE))
+ return
+ usr.client.remove_spell(src)
+ if(href_list[VV_HK_GIVE_DISEASE])
+ if(!check_rights(NONE))
+ return
+ usr.client.give_disease(src)
+ if(href_list[VV_HK_GIB])
+ if(!check_rights(R_FUN))
+ return
+ usr.client.cmd_admin_gib(src)
+ if(href_list[VV_HK_BUILDMODE])
+ if(!check_rights(R_BUILDMODE))
+ return
+ togglebuildmode(src)
+ if(href_list[VV_HK_DROP_ALL])
+ if(!check_rights(NONE))
+ return
+ usr.client.cmd_admin_drop_everything(src)
+ if(href_list[VV_HK_DIRECT_CONTROL])
+ if(!check_rights(NONE))
+ return
+ usr.client.cmd_assume_direct_control(src)
+ if(href_list[VV_HK_OFFER_GHOSTS])
+ if(!check_rights(NONE))
+ return
+ offer_control(src)
/mob/vv_get_var(var_name)
switch(var_name)
@@ -965,6 +1012,10 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
return debug_variable(var_name, logging, 0, src, FALSE)
. = ..()
+/mob/vv_auto_rename(new_name)
+ //Do not do parent's actions, as we *usually* do this differently.
+ fully_replace_character_name(real_name, new_name)
+
/mob/verb/open_language_menu()
set name = "Open Language Menu"
set category = "IC"
diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm
index 295ecc66c0..81e2cb95e6 100644
--- a/code/modules/modular_computers/computers/item/processor.dm
+++ b/code/modules/modular_computers/computers/item/processor.dm
@@ -20,7 +20,6 @@
. = ..()
if(!loc || !istype(loc, /obj/machinery/modular_computer))
CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.")
- return
// Obtain reference to machinery computer
all_components = list()
idle_threads = list()
@@ -69,4 +68,4 @@
if(MC_SDD)
machinery_computer.verbs -= /obj/machinery/modular_computer/proc/eject_disk
if(MC_AI)
- machinery_computer.verbs -= /obj/machinery/modular_computer/proc/eject_card
\ No newline at end of file
+ machinery_computer.verbs -= /obj/machinery/modular_computer/proc/eject_card
diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm
index 55f7c19cd7..e03427cc9c 100644
--- a/code/modules/modular_computers/hardware/battery_module.dm
+++ b/code/modules/modular_computers/hardware/battery_module.dm
@@ -54,7 +54,6 @@
holder.shutdown_computer()
return TRUE
- return FALSE
@@ -95,4 +94,4 @@
name = "nano battery"
desc = "A tiny power cell, commonly seen in low-end portable microcomputers."
icon_state = "cell_micro"
- maxcharge = 300
\ No newline at end of file
+ maxcharge = 300
diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
index b360a70775..c0ee68cdee 100644
--- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
@@ -57,12 +57,12 @@ It is possible to destroy the net by the occupant or someone else.
continue//So all they're left with are shoes and uniform.
H.dropItemToGround(W)
H.dna.species.give_important_for_life(H) // After we remove items, at least give them what they need to live.
+/*
var/datum/antagonist/antag_datum
for(var/datum/antagonist/ninja/AD in GLOB.antagonists) //Because only ninjas get capture objectives; They're not doable without the suit.
if(AD.owner == master)
antag_datum = AD
break
-
for(var/datum/objective/capture/capture in antag_datum)
if(istype(affecting, /mob/living/carbon/human)) //Humans.
if(affecting.stat == DEAD)//Dead folks are worth less.
@@ -87,7 +87,7 @@ It is possible to destroy the net by the occupant or someone else.
capture.captured_amount+=1
continue
capture.captured_amount+=2
-
+*/
affecting.revive(1, 1) //Basically a revive and full heal, including limbs/organs
//In case people who have been captured dead want to hang out at the holding area
@@ -106,7 +106,7 @@ It is possible to destroy the net by the occupant or someone else.
playsound(affecting, 'sound/effects/sparks2.ogg', 50, 1)
new /obj/effect/temp_visual/dir_setting/ninja/phase(affecting.drop_location(), affecting.dir)
-/obj/attack_alien(mob/living/carbon/alien/humanoid/user)
+/obj/structure/energy_net/attack_alien(mob/living/carbon/alien/humanoid/user)
if(attack_generic(user, 15, BRUTE, "melee", 0)) //Aliens normally deal 60 damage to structures. They'd one-shot nets without this.
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index 01e6abaa6a..b46f30b4fb 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -22,7 +22,7 @@ Contents:
armor = list("melee" = 60, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 100, "acid" = 100)
strip_delay = 12
- actions_types = list(/datum/action/item_action/initialize_ninja_suit, /datum/action/item_action/ninjasmoke, /datum/action/item_action/ninjaboost, /datum/action/item_action/ninjapulse, /datum/action/item_action/ninjastar, /datum/action/item_action/ninjanet, /datum/action/item_action/ninja_sword_recall, /datum/action/item_action/ninja_stealth, /datum/action/item_action/toggle_glove)
+ actions_types = list(/datum/action/item_action/initialize_ninja_suit, /datum/action/item_action/ninjasmoke, /datum/action/item_action/ninjaboost, /datum/action/item_action/ninjapulse, /datum/action/item_action/ninjastar, /datum/action/item_action/ninja_sword_recall, /datum/action/item_action/ninja_stealth, /datum/action/item_action/toggle_glove)
//Important parts of the suit.
var/mob/living/carbon/human/affecting = null
@@ -175,9 +175,6 @@ Contents:
if(istype(action, /datum/action/item_action/ninjastar))
ninjastar()
return TRUE
- if(istype(action, /datum/action/item_action/ninjanet))
- ninjanet()
- return TRUE
if(istype(action, /datum/action/item_action/ninja_sword_recall))
ninja_sword_recall()
return TRUE
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 2c02903d3e..f46d4bf029 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -8,7 +8,6 @@
item_flags = NOBLUDGEON
/obj/item/paper/contract/ComponentInitialize()
- return
. = ..()
AddElement(/datum/element/update_icon_blocker)
diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm
index 9a60158e73..2d03a17e0a 100644
--- a/code/modules/paperwork/paper_premade.dm
+++ b/code/modules/paperwork/paper_premade.dm
@@ -48,11 +48,113 @@
name = "paper- 'Chemical Information'"
info = "Known Onboard Toxins: \n\tGrade A Semi-Liquid Plasma: \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units. \n\t\tA gas mask fails to filter plasma after 50 units. \n\t\tWill attempt to diffuse like a gas. \n\t\tFiltered by scrubbers. \n\t\tThere is a bottled version which is very different \n\t\t\tfrom the version found in canisters! \n \n\t\tWARNING: Highly Flammable. Keep away from heat sources \n\t\texcept in an enclosed fire area! \n\t\tWARNING: It is a crime to use this without authorization. \nKnown Onboard Anti-Toxin: \n\tAnti-Toxin Type 01P: Works against Grade A Plasma. \n\t\tBest if injected directly into bloodstream. \n\t\tA full injection is in every regular Med-Kit. \n\t\tSpecial toxin Kits hold around 7. \n \nKnown Onboard Chemicals (other): \n\tRejuvenation T#001: \n\t\tEven 1 unit injected directly into the bloodstream \n\t\t\twill cure unconscious and sleep toxins. \n\t\tIf administered to a dying patient it will prevent \n\t\t\tfurther damage for about units*3 seconds. \n\t\t\tit will not cure them or allow them to be cured. \n\t\tIt can be administered to a non-dying patient \n\t\t\tbut the chemicals disappear just as fast. \n\tMorphine T#054: \n\t\t5 units will induce precisely 1 minute of sleep. \n\t\t\tThe effect are cumulative. \n\t\tWARNING: It is a crime to use this without authorization"
-
/*
* Stations
*/
+/obj/item/paper/guides/cogstation/job_changes
+ name = "MEMO: Job Changes"
+ info = "To ensure minimal employee downtime, please take note of the following changes to select professions that Cogstation specifically requires: \n \n- Chemists are to have basic Research access and an encryption key for the Science channel. \n- Roboticists are to have basic Medical and Morgue access . \n- Engineers and Atmospheric Technicians are to have Warehouse and Mining access. \n- The Cook should not have Morgue access \n- The Clown and Mime are to have Maintenance access. This is necessary due to the location of their offices. \n \nGenerated by Organic Resources Bot #2053 "
+
+/obj/item/paper/guides/cogstation/letter_sec
+ name = "To future Security personnel"
+ info = "As this station's Head of Security prior to it being translocated to your sector, my hope is that Central Command will properly brief you on the ins and outs of this particular layout. I'm writing this in case they don't. 'CogStation' as it's called may be worlds different than other stations in your sector, so I wanted to mention a few things: \n \nFirst of all, the brig uses a 'genpop' prison system. While I'm sure books exist on the subject, the main thing to know is prisoners share a common area regardless of sentence length. There is a single solitary cell, but it should be reserved only for the particularly dangerous. \n \nYour auxiliary posts can be found in the fore and starboard quarter parts of the station; near arrivals and cargo, respectively. I've heard about stations with a post in each department - unfortunately, this isn't one of them. If it's any consolation, the security wing is rather centrally located. \n \nAfter a perp's done their time, you can let them out via the disposal unit right outside the prison wing. It'll plop them right outside your front desk without the potential hassle of escorting them through your office. \n \nHave a secure day! \n- Louis Cannon "
+
+/obj/item/paper/guides/cogstation/disposals
+ name = "Regarding the disposal system:"
+ info = "As you might have noticed, this station has far more disposal pipes than you may expect from your average Nanotrasen research facility. Part of the reason for this is specialization - mail, trash, even corpses have their own disposal systems. Unfortunately, the convenient color-coding was lost in translocation and we've had to compensate by marking the area around each bin. \n \n- WHITE/GRAY STRIPES is for DELIVERIES. \n- RED STRIPES is for CORPSES. \n- EVERYTHING ELSE is for TRASH, barring a few exceptions that should be labeled as such. \n \nIdeally the station won't sustain any heavy structural damage during your time here but if it does, or someone decides to tamper with/sabotage this system, you'll be forgiven if you can't put it back together perfectly. \n \n-C. Donnelly Architectural Analyst"
+
+/obj/item/paper/guides/cogstation/janitor
+ name = "a quick tip"
+ info = "I'm gonna tell you something I wish I knew my first day here: there's an auxiliary custodial closet on the other end of the station. Just head straight through maintenance behind the bathrooms next to engineering and you'll find it. \n \nNow this sounds great until you realize there's no quick way to the other end of the station without a spacesuit - then it sounds like a gift from the gods! \n \n- 'Squeaky' Kleiner "
+
+/obj/item/paper/guides/cogstation/cooks
+ name = "MEMO: Cooks"
+ info = "Please be aware that while a smartfridge has recently been installed in your kitchen, botanists may choose to use the produce delivery system instead. You'll find the outlet, in addition to your freezer in the adjacent service hall. You can also send food directly to the bar and prison inmates via the disposal bins marked with dark red and bright red tiling, respectively. \n \nGenerated by Organic Resources Bot #7004 "
+
+/obj/item/paper/guides/cogstation/cdn_chap
+ name = "About the corpse disposal network"
+ info = "One of the medical staff has insisted I leave a message regarding the 'corpse disposal network' and its significance. From what I have been told, it has been designed so medical staff can deliver the deceased directly to you. However, bodies from the medical booth or detective's office next door will be sent your way first. \nThe delivery chute will allow you to send these bodies to the medical department so that they can attempt to revive them, if possible. I would recommend periodically checking the morgue for any unannounced arrivals, but make sure bodies are devoid of a soul before 'burying' or cremating them! \n \nSoulstone Obelisk \n \nDepartment of Higher-Dimensional Affairs"
+
+/obj/item/paper/guides/cogstation/letter_cmo
+ name = "To the future Medical Director..."
+ info = "From one Medical Director to another, I'm happy to say you won't have to rethink how you do things here, since saving lives is universal! That being said, you might want to consider the following: \n \n There's a medical booth over in the civilian wing, so ideally folks with minor cuts and bruises will head there first. While it can operate on a self-serve basis, you might want to send one of your doctors there to make sure it's run proper. \n \n The Geneticists and Virologists share the same pool of test subjects, so make sure they don't reintroduce them to the control group! A group of regular monkeys is dangerous enough, so do NOT attack one in view of the others! \n \nLastly, you might want to check the morgue regularly - it's one of the two main endpoints for the corpse disposal network. At the very least, make sure robotics gets your approval BEFORE borging someone! Robert hasn't been the same since he became Rob-Bot... \n \nEarl. E. Greaves "
+
+/obj/item/paper/guides/cogstation/cdn_med
+ name = "Corpse Disposal Network"
+ info = "It's come to my attention that this station has been outfitted with a Corpse Disposal Network (CDN), and disposal units incorporated into this network are marked with RED STRIPES surrounding them. This morgue is one of the network's major endpoints, the other being the chapel morgue. \n \nAs such, it should be checked routinely for any bodies that may have arrived unannounced. Cloned corpses or personnel that have proven unrevivable can be shipped to the chapel morgue via your delivery chute. The same can be done for bodies that arrived brainless, although if you want botany to have at them you should tag them accordingly. \n \nLiving persons who treat the CDN like a theme park ride are to be swiftly removed from the medical department, short of them being on the verge of death. In such cases, treatment is advised. \n \n-Dr. Halley "
+
+/obj/item/paper/guides/cogstation/letter_eng
+ name = "To future Engineering staff:"
+ info = "I'm not gonna sugarcoat this. Compared to other departments, you might have your work cut out for you. CogStation is an entirely different beast than your standard Box, but everyone's still gonna expect you to keep the place running. \n \n If there's any good news, it's your time to shine if you know how to run a thermo-electric generator. That's what this station runs on, and CentCom isn't planning on changing that. If it's absolutely critical you might be able to run a singularity or tesla engine east of mining, but it won't have any sort of shielding out there. \n \nThe air system's different too. It's multiple small networks instead of a single big one, with air hookups across the station. Fortunately it's not that complicated, but it comes at the expense of being able to filter out and reuse specific gases. Besides, you'll probably be busy enough with the engine and general upkeep anyway. \n \nThe disposal network in contrast is significantly more complicated, yet more capable. I've already elaborated on it, so I'll let you find and read my write-up for that. As for the routing system, it's just begging to get hit by a stray meteor so consider other utilities a higher priority. \n \nGood luck. You're gonna need it. \n \n-C. Donnelly Architectural Analyst"
+
+/obj/item/paper/guides/cogstation/letter_chief
+ name = "To the future Chief Engineer:"
+ info = "Considering some of the other heads are writing letters to their successors, I reckon I might as well do the same. If this place is heading where I think it is, I sure as hell hope they made sure you know how to run a TEG. Oh who am I kidding, of course they won't. Well, the good news is unlike that newfangled supermatter that can kill everyone from radiation before you know anything is wrong, you'll know if a Thermo-Electric Generator is failing, since you'll either have no power or be on fire. \n \nThere's two main ways to set it up, with the 'proper way' being to run plasma through the pipes. You hook them up on the hot side (the one with the red pipes), then use the heaters and freezers to keep the hot side hot and the cold side cold. Just keep an eye on pressures - too much on the hot side or too little on the cold side and you'll get reduced or even no power. Of course, the fun way is to get something cooking in the burn chamber for the hot side and use space itself for the cold side. You might want to throw a monkey into the burn chamber for good luck and an indication whether your gas is suitably hot or not. Just make sure that \n \nI found this on the CE's desk. My guess is he was going to finish it, but was interrupted at some point in his last shift and ultimately met his untimely demise. I just hope whatever he was going to warn you about wasn't critical... \n \n-C. Donnelly "
+
+/obj/item/paper/guides/cogstation/letter_hos
+ name = "To the future HoS"
+ info = "I'm gonna be rather disappointed if CentCom doesn't brief you about this station, but if they don't I wrote up another letter for your department that should cover it pretty well. Make sure your officers read it if they aren't up to speed. \n \nSomething you in particular should know is that if someone's getting to be too much to handle, the boys and I have constructed a 'discount transfer centre' just behind the router. Use it only as a last resort - the walls may be reinforced but they're still thin, and you'll have big trouble on your hands if the AI or any cyborgs find out about it. \n-LC "
+
+/obj/item/paper/guides/cogstation/letter_supp
+ name = "To future Supply Staff:"
+ info = "Cargo, move freight. Miners, don't die. Your jobs are pretty straightforward, which is likely why they originally fell under Engineering on this station as opposed to their own department. Although we've considerably readjusted this part of the station to accommodate you, there are potential differences you should be aware of. \n \nEngineeringwill have access to some of your department, namely the warehouse and mining dock. Mining operations on this station were originally asteroid-based, hence the catwalk into the great beyond. Although you won't need to worry about being space-worthy due to a newly installed shuttle dock, they might need to get out there. \n \nYou'll have all your usual means of shipping out goods, but the disposal network is more complex with a separate line for mail and trash. I've left another note that explains this in detail, but know trash is the janitor's responsibility, not yours. \n \nThe biggest difference has to be this station's router system, which allows departments to ship goods between themselves. Even if the belts aren't working properly they'll still have their own request consoles, so you'll want to check for orders regularly. \n \n-C. Donnelly \nArchitectural Analyst"
+
+/obj/item/paper/fluff/cogstation/sleepers
+ name = "Re: Sleepers?"
+ info = "Yes, the sleepers are meant to be publicly accessible. Policies in this station's original location encouraged crew to visit the clinic or treat themselves when it came to minor injuries. \n \nThis is no excuse for you not to do your jobs. You may wish to keep an eye on the sleepers as to ensure they're being used responsibly. Remember, allowing an overdose to happen under your watch isn't much different from administering that overdose yourself. \n \n- Dr. Halley "
+
+/obj/item/paper/fluff/cogstation/cloner
+ name = "Re: Issue with the cloner?"
+ info = "I've yet to see any sentient small primates working in this sector, but if they aren't carrying the Devo gene they should be fine. The document was likely referring to the nonsapient ones you can get out of a monkey cube. \n \n- Dr. Halley "
+
+/obj/item/paper/fluff/cogstation/letter_rd
+ name = "To the future Research Director"
+ info = "Apologies if you were expecting a letter from the station's Research Director, but just prior to translocation we found out they were a BLF operative. I wouldn't trust a single word they wrote and while I'm not a scientist, something tells me your department will have the easiest time adjusting to this station. \n \nYou should have everything you need - this is a research facility after all. It's just a matter of finding it, which shouldn't be too hard. Folks like you are why we're out in deep space, after all! \n-Louis Cannon \nFormer Head of Security"
+
+/obj/item/paper/fluff/cogstation/letter_cap
+ name = "Captain's Log"
+ info = "So I guess some of the other heads have decided to leave little notes for future employees here. Heartwarming, but the most important thing I figure I can leave you is the truth. Nevermind the Syndicate, the xenomorphs, the apocalyptic death cults I hear are a thing way out there - I'm convinced we are our own worst enemy. \n \nDon't believe me? Maybe you can ask Chief Engineer Earp. Oh right, he vaporized himself trying to produce enough power to keep the lights on in Space China for a week, despite only needing a sliver of that to run this place as intended. Or maybe you can ask Head of Security Cannon, who executed our Research Director in plain sight of everyone. Even if he was in the right, the final frontier isn't the goddamn wild west! Hell, maybe you can ask one of your 'staff assistants', although in my experience the only ones they seem to want to help is themselves. \n \nOf course, the REAL problems are with the higher-ups that stationed us on this deathtrap before deciding to send it your way, but there's only so much I can say and get away with it, for instance that they only sent this station since they could care less if it was a total loss. By the time you read this, I'll already be long gone. Maybe it'll be a different story with your crew, but between you and me, I wouldn't hold my breath...unless they fuck up the air system. \n \nDom Kahn Former Captain of Nanotrasen CogStation"
+
+/obj/item/paper/fluff/cogstation/letter_qm
+ name = "To the future Quartermaster:"
+ info = "Sorry if this office seems like an afterthought - as I mentioned in my letter to your department at large, you used to be a sub-department of Engineering on this station. Fortunately that's not the case here and you have cargo techs as opposed to other quartermasters, but you should keep the following in mind: \n \n- Keep your miners focused on where they're supposed to mine. I get the allure of deep space can be tempting, but we want them somewhere we can be fairly confident they'll come back alive and with ores. \n \n- Anyone with maintenance access can enter the Routing Depot at the heart of the station, but you'll need a space suit to safely reach it. You've been given one for this very reason, but your techs will need to source their own. \n \n- The fact that you've been given an office and had a good portion of your department refurbished as opposed to being told to make do should be seen as an indication that there are people in this company that care about you, even if it doesn't feel that way sometimes. Remember that before trying to 'declare independence' as 'Cargonia'. \n \n-C. Donnelly \nArchitectural Analyst"
+
+/obj/item/paper/fluff/cogstation/letter_chap
+ name = "A message from the DHDA"
+ info = "Regardless of what the name leads you to believe, CogStation is neither Ratvarian in origin nor designed by members of this so-called 'clock cult'. Despite a potential common enemy and instances of exhibiting peaceful behavior, their beliefs have been labeled 'Heretical' by the Department of Higher-Dimensional Affairs and following them is grounds for immediate termination. \nAs the station's designated Chaplain, it is advised you correct anyone who claims this station and/or its designers are Ratvarian. While they are most likely misinformed or 'joking around', untruths gain credibility the more they are repeated. \n \nSoulstone Obelisk \n \nDepartment of Higher-Dimensional Affairs"
+
+/obj/item/paper/fluff/cogstation/cluwne
+ name = "Mysterious Note"
+ info = "ThE rInGmAsTeR dOeSn'T rUn ThE cIrCus... HONK!!! "
+
+/obj/item/paper/fluff/cogstation/mime
+ name = "Au futur Mime"
+ info = "Toutes mes excuses pour toute mauvaise grammaire, je ne suis pas un haut-parleur naturel Français et a dû utiliser NanoTranslate. Bien que vous puissiez être mécontent de l’emplacement de votre bureau, s’il vous plaît comprendre que c’était le seul endroit où nous pourrions le mettre sans problèmes de sécurité et/ou CentClown se plaindre à ce sujet. Nous nous excusons également pour l’absence d’une zone de performance dédiée, mais nous espérons que vous accorder un accès à l’entretien compensera. \n \n-C. Donnelly \n \nAnalyste Architectural"
+
+/obj/item/paper/fluff/cogstation/bsrb
+ name = "Message from the NTBSRB"
+ info = "Congratulations, (sector name here)! You've been chosen as a candidate to receive a Nanotrasen icon via bluespace translocation! 'CogStation' as it's commonly known has a rich history and a unique layout. Our hope is that you'll be able to retrofit this station to serve your needs, ideally as one of your primary research hubs. We look forward to seeing what you can accomplish here! \n \n-The Nanotrasen Bluespace Research Board "
+
+/obj/item/paper/fluff/cogstation/survey
+ name = "Fwd: Survey Report"
+ info = "After a thorough investigation, I'm happy to say that this translocation and its consequences weren't for naught. CogStation appears to have made it in one piece, with the only exception being a 'drone factory' satellite. I suspect it met a fate similar to parts of the station's original home, which means there's the possibility it's not terribly far from here. \n \nI can see some of CogStation's components being alien to local crews, but fortunately some of the station's previous staff appear to have anticipated this and left some advice. The assessment team and I have decided to do the same where appropriate, although I can see some areas that might be worth redesigning to better suit area protocol. I've brought them up to the Chief Architect, you should hear from them in a couple of hours. \n \n-C. Donnelly \n \nArchitectural Analyst"
+
+/obj/item/paper/fluff/cogstation/router_off
+ name = "ROUTER STATUS: INACTIVE"
+ info = "This router line has been closed while we determine possible solutions. While you are free to use the request and supply consoles, you should plan on receiving your deliveries elsewhere. \n \n-C. Donnelly \n \nArchitectural Analyst"
+
+/obj/item/paper/fluff/cogstation/router_verylimited
+ name = "ROUTER STATUS: VERY LIMITED"
+ info = "Currently, this router is only capable of making deliveries to Engineering, Cargo and the recycler, via manual input from the Routing Depot. It is not yet capable of receiving deliveries, meaning you should expect to receive any orders elsewhere. \n \n-C. Donnelly \n \nArchitectural Analyst"
+
+/obj/item/paper/fluff/cogstation/router_limited
+ name = "ROUTER STATUS: LIMITED"
+ info = "Currently, this router cannot receive deliveries from the Airbridge, MedSci, Security, or Service Routers. Cargo and the recycler are the only points currently accepting deliveries from here, although manual input from the routing depot is currently required. \n \n-C. Donnelly \n \nArchitectural Analyst"
+
+/obj/item/paper/fluff/cogstation/router_cargo
+ name = "ROUTER STATUS: VERY LIMITED"
+ info = "Currently, this router cannot receive deliveries from the Airbridge, MedSci, Security, or Service Routers. It is not yet capable of making deliveries, beyond sending items to the recycler. \n \n-C. Donnelly \n \nArchitectural Analyst"
/////////// CentCom
diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm
index 2beb9296b3..241dde13a8 100644
--- a/code/modules/paperwork/stamps.dm
+++ b/code/modules/paperwork/stamps.dm
@@ -9,7 +9,6 @@
throw_speed = 3
throw_range = 7
custom_materials = list(/datum/material/iron=60)
- item_color = "cargo"
pressure_resistance = 2
attack_verb = list("stamped")
@@ -20,52 +19,52 @@
/obj/item/stamp/qm
name = "quartermaster's rubber stamp"
icon_state = "stamp-qm"
- item_color = "qm"
+ dye_color = DYE_QM
/obj/item/stamp/law
name = "law office's rubber stamp"
icon_state = "stamp-law"
- item_color = "cargo"
+ dye_color = DYE_LAW
/obj/item/stamp/captain
name = "captain's rubber stamp"
icon_state = "stamp-cap"
- item_color = "captain"
+ dye_color = DYE_CAPTAIN
/obj/item/stamp/hop
name = "head of personnel's rubber stamp"
icon_state = "stamp-hop"
- item_color = "hop"
+ dye_color = DYE_HOP
/obj/item/stamp/hos
name = "head of security's rubber stamp"
icon_state = "stamp-hos"
- item_color = "hosred"
+ dye_color = DYE_HOS
/obj/item/stamp/ce
name = "chief engineer's rubber stamp"
icon_state = "stamp-ce"
- item_color = "chief"
+ dye_color = DYE_CE
/obj/item/stamp/rd
name = "research director's rubber stamp"
icon_state = "stamp-rd"
- item_color = "director"
+ dye_color = DYE_RD
/obj/item/stamp/cmo
name = "chief medical officer's rubber stamp"
icon_state = "stamp-cmo"
- item_color = "cmo"
+ dye_color = DYE_CMO
/obj/item/stamp/denied
name = "\improper DENIED rubber stamp"
icon_state = "stamp-deny"
- item_color = "redcoat"
+ dye_color = DYE_REDCOAT
/obj/item/stamp/clown
name = "clown's rubber stamp"
icon_state = "stamp-clown"
- item_color = "clown"
+ dye_color = DYE_CLOWN
/obj/item/stamp/attack_paw(mob/user)
return attack_hand(user)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 9c96216ce8..1b23b1bb5d 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -84,7 +84,7 @@
var/lastused_equip = 0
var/lastused_environ = 0
var/lastused_total = 0
- var/main_status = 0
+ var/main_status = 0 // Whether or not there's external power. 0 is "none", 1 is "insufficient", 2 is "charging".
powernet = 0 // set so that APCs aren't found as powernet nodes //Hackish, Horrible, was like this before I changed it :(
var/malfhack = 0 //New var for my changes to AI malf. --NeoFite
var/mob/living/silicon/ai/malfai = null //See above --NeoFite
@@ -1276,63 +1276,89 @@
var/last_eq = equipment
var/last_en = environ
var/last_ch = charging
-
var/excess = surplus()
-
- if(!src.avail())
+ if(!avail())
main_status = 0
else if(excess < 0)
main_status = 1
else
main_status = 2
+ var/cur_excess = excess
+ var/cur_used = lastused_total
+
+ // first: if we have enough power, power the essentials DIRECTLY
+
+ var/environ_satisfied = FALSE
+ var/equipment_satisfied = FALSE
+ var/lighting_satisfied = FALSE
+
+ if(cur_excess >= lastused_environ)
+ autoset(environ, 1)
+ add_load(lastused_environ)
+ cur_excess -= lastused_environ
+ cur_used -= lastused_environ
+ environ_satisfied = TRUE
+
+ if(cur_excess >= lastused_equip)
+ autoset(equipment, 1)
+ add_load(lastused_equip)
+ cur_excess -= lastused_equip
+ cur_used -= lastused_equip
+ equipment_satisfied = TRUE
+
+ if(cur_excess >= lastused_light)
+ autoset(lighting, 1)
+ add_load(lastused_light)
+ cur_excess -= lastused_light
+ cur_used -= lastused_light
+ lighting_satisfied = TRUE
+
+
+ // next: take from or charge to the cell, depending on how much is left
if(cell && !shorted)
- // draw power from cell as before to power the area
- var/cellused = min(cell.charge, GLOB.CELLRATE * lastused_total) // clamp deduction to a max, amount left in cell
- cell.use(cellused)
+ if(cur_excess > 0)
+ var/charging_cell = min(cur_excess, cell.maxcharge * GLOB.CHARGELEVEL)
+ cell.give(charging_cell)
+ add_load(charging_cell)
+ lastused_total += charging_cell
+ longtermpower = min(10,longtermpower + 1)
+ if(chargemode && !charging)
+ chargecount++
+ if(chargecount == 10)
- if(excess > lastused_total) // if power excess recharge the cell
- // by the same amount just used
- cell.give(cellused)
- add_load(cellused/GLOB.CELLRATE) // add the load used to recharge the cell
-
-
- else // no excess, and not enough per-apc
- if((cell.charge/GLOB.CELLRATE + excess) >= lastused_total) // can we draw enough from cell+grid to cover last usage?
- cell.charge = min(cell.maxcharge, cell.charge + GLOB.CELLRATE * excess) //recharge with what we can
- add_load(excess) // so draw what we can from the grid
- charging = APC_NOT_CHARGING
-
- else // not enough power available to run the last tick!
- charging = APC_NOT_CHARGING
- chargecount = 0
+ chargecount = 0
+ charging = APC_CHARGING
+ else // not enough power available to run the last tick!
+ charging = APC_NOT_CHARGING
+ chargecount = 0
+ longtermpower = max(-10,longtermpower - 2)
+ if(cell.charge >= cur_used)
+ cell.use(GLOB.CELLRATE * cur_used)
+ else
// This turns everything off in the case that there is still a charge left on the battery, just not enough to run the room.
equipment = autoset(equipment, 0)
lighting = autoset(lighting, 0)
environ = autoset(environ, 0)
+ // set channels based on remaining charge
- // set channels depending on how much charge we have left
-
- // Allow the APC to operate as normal if the cell can charge
- if(charging && longtermpower < 10)
- longtermpower += 1
- else if(longtermpower > -10)
- longtermpower -= 2
+ var/cell_percent = cell.percent()
if(cell.charge <= 0) // zero charge, turn all off
equipment = autoset(equipment, 0)
lighting = autoset(lighting, 0)
environ = autoset(environ, 0)
area.poweralert(0, src)
- else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment
+
+ else if(cell_percent < 15 && longtermpower < 0) // <15%, turn off lighting & equipment
equipment = autoset(equipment, 2)
lighting = autoset(lighting, 2)
environ = autoset(environ, 1)
area.poweralert(0, src)
- else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment
- equipment = autoset(equipment, 2)
- lighting = autoset(lighting, 1)
+ else if(cell_percent < 30 && longtermpower < 0) // <30%, turn off lighting
+ equipment = autoset(equipment, 1)
+ lighting = autoset(lighting, 2)
environ = autoset(environ, 1)
area.poweralert(0, src)
else // otherwise all can be on
@@ -1340,50 +1366,21 @@
lighting = autoset(lighting, 1)
environ = autoset(environ, 1)
area.poweralert(1, src)
- if(cell.percent() > 75)
+ if(cell_percent > 75)
area.poweralert(1, src)
- // now trickle-charge the cell
- if(chargemode && charging == APC_CHARGING && operating)
- if(excess > 0) // check to make sure we have enough to charge
- // Max charge is capped to % per second constant
- var/ch = min(excess*GLOB.CELLRATE, cell.maxcharge*GLOB.CHARGELEVEL)
- add_load(ch/GLOB.CELLRATE) // Removes the power we're taking from the grid
- cell.give(ch) // actually recharge the cell
-
- else
- charging = APC_NOT_CHARGING // stop charging
- chargecount = 0
// show cell as fully charged if so
if(cell.charge >= cell.maxcharge)
cell.charge = cell.maxcharge
charging = APC_FULLY_CHARGED
- if(chargemode)
- if(!charging)
- if(excess > cell.maxcharge*GLOB.CHARGELEVEL)
- chargecount++
- else
- chargecount = 0
-
- if(chargecount == 10)
-
- chargecount = 0
- charging = APC_CHARGING
-
- else // chargemode off
- charging = 0
- chargecount = 0
-
- else // no cell, switch everything off
-
+ else // no cell, can still run but not very well
charging = APC_NOT_CHARGING
chargecount = 0
- equipment = autoset(equipment, 0)
- lighting = autoset(lighting, 0)
- environ = autoset(environ, 0)
- area.poweralert(0, src)
+ environ = autoset(environ, environ_satisfied)
+ equipment = autoset(equipment, equipment_satisfied)
+ lighting = autoset(lighting, lighting_satisfied)
// update icon & area power if anything changed
@@ -1398,17 +1395,13 @@
// on 0=off, 1=on, 2=autooff
/obj/machinery/power/apc/proc/autoset(val, on)
- if(on==0)
- if(val==2) // if on, return off
- return 0
- else if(val==3) // if auto-on, return auto-off
- return 1
- else if(on==1)
- if(val==1) // if auto-off, return auto-on
- return 3
- else if(on==2)
- if(val==3) // if auto-on, return auto-off
- return 1
+ if(val == 3 && (on == 2 || !on)) // if auto-on, return auto-off
+ return 1
+ else if(val == 2 && !on) // if on, return off
+ return 0
+ else if(on == 1 && val == 1) // if auto-off, return auto-on
+ return 3
+ // no, i don't understand these comments either
return val
/obj/machinery/power/apc/proc/reset(wire)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 8d5de661ae..49848824e4 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -196,7 +196,7 @@ By design, d1 is the smallest direction and d2 is the highest
/obj/structure/cable/proc/update_stored(length = 1, colorC = "red")
stored.amount = length
- stored.item_color = colorC
+ stored.color = colorC
stored.update_icon()
////////////////////////////////////////////
@@ -469,7 +469,6 @@ By design, d1 is the smallest direction and d2 is the highest
// Definitions
////////////////////////////////
-GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restraints", /obj/item/restraints/handcuffs/cable, 15)))
/obj/item/stack/cable_coil
name = "cable coil"
@@ -482,7 +481,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
max_amount = MAXCOIL
amount = MAXCOIL
merge_type = /obj/item/stack/cable_coil // This is here to let its children merge between themselves
- item_color = "red"
+ color = "red"
desc = "A coil of insulated power cable."
throwforce = 0
w_class = WEIGHT_CLASS_SMALL
@@ -504,7 +503,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
/obj/item/stack/cable_coil/cyborg/attack_self(mob/user)
var/cable_color = input(user,"Pick a cable color.","Cable Color") in list("red","yellow","green","blue","pink","orange","cyan","white")
- item_color = cable_color
+ color = cable_color
update_icon()
/obj/item/stack/cable_coil/suicide_act(mob/user)
@@ -514,18 +513,11 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide! ")
return(OXYLOSS)
-/obj/item/stack/cable_coil/Initialize(mapload, new_amount = null, param_color = null)
+/obj/item/stack/cable_coil/Initialize(mapload, new_amount = null)
. = ..()
-
- var/list/cable_colors = GLOB.cable_colors
- item_color = param_color || item_color || pick(cable_colors)
- if(cable_colors[item_color])
- item_color = cable_colors[item_color]
-
pixel_x = rand(-2,2)
pixel_y = rand(-2,2)
update_icon()
- recipes = GLOB.cable_coil_recipes
///////////////////////////////////
// General procedures
@@ -541,7 +533,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
if(affecting && affecting.status == BODYPART_ROBOTIC)
if(user == H)
user.visible_message("[user] starts to fix some of the wires in [H]'s [affecting.name]. ", "You start fixing some of the wires in [H]'s [affecting.name]. ")
- if(!do_mob(user, H, 50))
+ if(!do_after(user, H, 50))
return
if(item_heal_robotic(H, user, 0, 15))
use(1)
@@ -553,8 +545,6 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
/obj/item/stack/cable_coil/update_icon()
icon_state = "[initial(item_state)][amount < 3 ? amount : ""]"
name = "cable [amount < 3 ? "piece" : "coil"]"
- color = null
- add_atom_colour(item_color, FIXED_COLOUR_PRIORITY)
/obj/item/stack/cable_coil/attack_hand(mob/user)
. = ..()
@@ -562,9 +552,23 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
return
var/obj/item/stack/cable_coil/new_cable = ..()
if(istype(new_cable))
- new_cable.item_color = item_color
+ new_cable.color = color
new_cable.update_icon()
+/obj/item/stack/cable_coil/attack_self(mob/user)
+ if(!use(15))
+ to_chat(user, "You dont have enough cable coil to make restraints out of them ")
+ return
+ to_chat(user, "You start making some cable restraints. ")
+ if(!do_after(user, 30, TRUE, user, TRUE))
+ to_chat(user, "You fail to make cable restraints, you need to stand still while doing so. ")
+ give(15)
+ return
+ var/obj/item/restraints/handcuffs/cable/result = new(get_turf(user))
+ user.put_in_hands(result)
+ result.color = color
+ to_chat(user, "You make some restraints out of cable ")
+
//add cables to the stack
/obj/item/stack/cable_coil/proc/give(extra)
if(amount + extra > max_amount)
@@ -581,7 +585,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
/obj/item/stack/cable_coil/proc/get_new_cable(location)
var/path = /obj/structure/cable
- return new path(location, item_color)
+ return new path(location, color)
// called when cable_coil is clicked on a turf
/obj/item/stack/cable_coil/proc/place_turf(turf/T, mob/user, dirnew)
@@ -738,7 +742,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
C.d2 = nd2
//updates the stored cable coil
- C.update_stored(2, item_color)
+ C.update_stored(2, color)
C.add_fingerprint(user)
C.update_icon()
@@ -769,40 +773,36 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
/////////////////////////////
/obj/item/stack/cable_coil/red
- item_color = "red"
- color = "#ff0000"
+ color = "red"
/obj/item/stack/cable_coil/yellow
- item_color = "yellow"
- color = "#ffff00"
+ color = "yellow"
/obj/item/stack/cable_coil/blue
- item_color = "blue"
- color = "#1919c8"
+ color = "blue"
/obj/item/stack/cable_coil/green
- item_color = "green"
- color = "#00aa00"
+ color = "green"
/obj/item/stack/cable_coil/pink
- item_color = "pink"
color = "#ff3ccd"
/obj/item/stack/cable_coil/orange
- item_color = "orange"
color = "#ff8000"
/obj/item/stack/cable_coil/cyan
- item_color = "cyan"
- color = "#00ffff"
+ color = "cyan"
/obj/item/stack/cable_coil/white
- item_color = "white"
+ color = "white"
/obj/item/stack/cable_coil/random
- item_color = null
color = "#ffffff"
+/obj/item/stack/cable_coil/random/Initialize(mapload, new_amount = null, param_color = null)
+ . = ..()
+ var/list/cable_colors = GLOB.cable_colors
+ color = pick(cable_colors)
/obj/item/stack/cable_coil/random/five
amount = 5
@@ -820,36 +820,33 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
update_icon()
/obj/item/stack/cable_coil/cut/red
- item_color = "red"
- color = "#ff0000"
+ color = "red"
/obj/item/stack/cable_coil/cut/yellow
- item_color = "yellow"
- color = "#ffff00"
+ color = "yellow"
/obj/item/stack/cable_coil/cut/blue
- item_color = "blue"
- color = "#1919c8"
+ color = "blue"
/obj/item/stack/cable_coil/cut/green
- item_color = "green"
- color = "#00aa00"
+ color = "green"
/obj/item/stack/cable_coil/cut/pink
- item_color = "pink"
color = "#ff3ccd"
-
/obj/item/stack/cable_coil/cut/orange
- item_color = "orange"
color = "#ff8000"
/obj/item/stack/cable_coil/cut/cyan
- item_color = "cyan"
- color = "#00ffff"
+ color = "cyan"
/obj/item/stack/cable_coil/cut/white
- item_color = "white"
+ color = "white"
/obj/item/stack/cable_coil/cut/random
- item_color = null
- color = "#ffffff"
\ No newline at end of file
+ color = "#ffffff"
+
+/obj/item/stack/cable_coil/cut/random/Initialize(mapload, new_amount = null, param_color = null)
+ . = ..()
+ var/list/cable_colors = GLOB.cable_colors
+ color = pick(cable_colors)
+
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index a073997b9d..c471047682 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -51,7 +51,8 @@
for(var/datum/antagonist/cult/C in GLOB.antagonists)
if(!C.owner)
continue
- all_cults |= C.cult_team
+ if(C.cult_team)
+ all_cults |= C.cult_team
for(var/datum/team/cult/T in all_cults)
deltimer(T.blood_target_reset_timer)
T.blood_target = src
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 6c5f97557d..73ea3ccd59 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -185,7 +185,7 @@
if(sunfrac <= 0)
return
- var/sgen = SOLAR_GEN_RATE * sunfrac
+ var/sgen = SOLAR_GEN_RATE * sunfrac * efficiency
add_avail(sgen)
if(control)
control.gen += sgen
@@ -253,6 +253,7 @@
var/obj/item/stack/sheet/G = S.change_stack(null, 2)
if(G)
glass_type = G
+ G.moveToNullspace()
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
user.visible_message("[user] places the glass on the solar assembly.", "You place the glass on the solar assembly. ")
if(tracker)
diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm
index 13a284e970..58a5bfb497 100644
--- a/code/modules/projectiles/ammunition/ballistic/pistol.dm
+++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm
@@ -21,6 +21,11 @@
desc = "A 10mm incendiary bullet casing."
projectile_type = /obj/item/projectile/bullet/incendiary/c10mm
+/obj/item/ammo_casing/c10mm/soporific
+ name = ".10mm soporific bullet casing"
+ desc = "A 10mm soporific bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c10mm/soporific
+
// 9mm (Stechkin APS)
/obj/item/ammo_casing/c9mm
diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
index fbbca99ec2..81ae026138 100644
--- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
+++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
@@ -52,6 +52,29 @@
ammo_type = /obj/item/ammo_casing/c10mm
max_ammo = 20
+/obj/item/ammo_box/c10mm/fire
+ name = "ammo box (10mm Incendiary)"
+ icon_state = "10mmbox"
+ ammo_type = /obj/item/ammo_casing/c10mm/fire
+ max_ammo = 20
+
+/obj/item/ammo_box/c10mm/hp
+ name = "ammo box (10mm Hollow Point)"
+ icon_state = "10mmbox"
+ ammo_type = /obj/item/ammo_casing/c10mm/hp
+ max_ammo = 20
+
+/obj/item/ammo_box/c10mm/ap
+ name = "ammo box (10mm Armour Piercing)"
+ icon_state = "10mmbox"
+ ammo_type = /obj/item/ammo_casing/c10mm/ap
+ max_ammo = 20
+
+/obj/item/ammo_box/c10mm/soporific
+ name = "ammo box (10mm Soporific)"
+ ammo_type = /obj/item/ammo_casing/c10mm/soporific
+ max_ammo = 20
+
/obj/item/ammo_box/c45
name = "ammo box (.45)"
icon_state = "45box"
diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm
index dbde572db1..63b0483875 100644
--- a/code/modules/projectiles/boxes_magazines/external/pistol.dm
+++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm
@@ -25,6 +25,13 @@
desc= "A gun magazine. Loaded with rounds which penetrate armour, but are less effective against normal targets."
ammo_type = /obj/item/ammo_casing/c10mm/ap
+/obj/item/ammo_box/magazine/m10mm/soporific
+ name = "pistol magazine (10mm soporific)"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "9x19pS"
+ desc = "A gun magazine. Loaded with rounds which inject the target with a variety of illegal substances to induce sleep in the target."
+ ammo_type = /obj/item/ammo_casing/c10mm/soporific
+
/obj/item/ammo_box/magazine/m45
name = "handgun magazine (.45)"
icon_state = "45-8"
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index d06ad972e6..9c1a23174e 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -41,7 +41,7 @@
var/firing = FALSE
/// Used in gun-in-mouth execution/suicide and similar, while TRUE nothing should work on this like firing or modification and so on and so forth.
var/busy_action = FALSE
- var/weapon_weight = WEAPON_LIGHT //currently only used for inaccuracy
+ var/weapon_weight = WEAPON_LIGHT //used for inaccuracy and wielding requirements/penalties
var/spread = 0 //Spread induced by the gun itself.
var/burst_spread = 0 //Spread induced by the gun itself during burst fire per iteration. Only checked if spread is 0.
var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once.
@@ -513,7 +513,7 @@
icon_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
-/datum/action/item_action/toggle_scope_zoom/IsAvailable()
+/datum/action/item_action/toggle_scope_zoom/IsAvailable(silent = FALSE)
. = ..()
if(!.)
var/obj/item/gun/G = target
diff --git a/code/modules/projectiles/guns/ballistic/magweapon.dm b/code/modules/projectiles/guns/ballistic/magweapon.dm
index f1d02e5cc2..e71f414bd8 100644
--- a/code/modules/projectiles/guns/ballistic/magweapon.dm
+++ b/code/modules/projectiles/guns/ballistic/magweapon.dm
@@ -1,10 +1,10 @@
/obj/item/gun/ballistic/automatic/magrifle
- name = "\improper Magnetic Rifle"
+ name = "magnetic rifle"
desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs."
icon_state = "magrifle"
item_state = "arg"
force = 10
- slot_flags = NONE
+ slot_flags = ITEM_SLOT_BACK
mag_type = /obj/item/ammo_box/magazine/mmag
fire_sound = 'sound/weapons/magrifle.ogg'
can_suppress = FALSE
@@ -17,6 +17,7 @@
inaccuracy_modifier = 0
dualwield_spread_mult = 1.4
weapon_weight = WEAPON_MEDIUM
+ w_class = WEIGHT_CLASS_BULKY
var/obj/item/stock_parts/cell/cell
var/cell_type = /obj/item/stock_parts/cell/magnetic
@@ -63,12 +64,13 @@
spawnwithmagazine = FALSE
/obj/item/gun/ballistic/automatic/magrifle/hyperburst
- name = "\improper Hyper-Burst Rifle"
+ name = "\improper Hyper-Burst rifle"
desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once."
icon_state = "hyperburst"
- item_state = "arg"
+ slot_flags = NONE //too lazy for the sprites rn and it's pretty stronk anyway.
mag_type = /obj/item/ammo_box/magazine/mhyper
fire_sound = 'sound/weapons/magburst.ogg'
+ w_class = WEIGHT_CLASS_HUGE
fire_delay = 40
recoil = 2
weapon_weight = WEAPON_HEAVY
@@ -83,6 +85,8 @@
name = "magpistol"
desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities."
icon_state = "magpistol"
+ w_class = WEIGHT_CLASS_NORMAL
+ slot_flags = ITEM_SLOT_BELT
fire_sound = 'sound/weapons/magpistol.ogg'
mag_type = /obj/item/ammo_box/magazine/mmag/small
fire_delay = 2
diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm
index 68f212ba30..e15c49b891 100644
--- a/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -21,6 +21,38 @@
var/obj/item/suppressor/S = new(src)
install_suppressor(S)
+//(reskinnable stetchkin)
+/obj/item/gun/ballistic/automatic/pistol/modular
+ name = "modular pistol"
+ desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors."
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "cde"
+ can_unsuppress = TRUE
+ obj_flags = UNIQUE_RENAME
+ unique_reskin = list("Default" = "cde",
+ "N-99" = "n99",
+ "Stealth" = "stealthpistol",
+ "HKVP-78" = "vp78",
+ "Luger" = "p08b",
+ "Mk.58" = "secguncomp",
+ "PX4 Storm" = "px4"
+ )
+
+/obj/item/gun/ballistic/automatic/pistol/modular/update_icon()
+ ..()
+ if(current_skin)
+ icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
+ else
+ icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
+ if(magazine && suppressed)
+ cut_overlays()
+ add_overlay("[unique_reskin[current_skin]]-magazine-sup") //Yes, this means the default iconstate can't have a magazine overlay
+ else if (magazine)
+ cut_overlays()
+ add_overlay("[unique_reskin[current_skin]]-magazine")
+ else
+ cut_overlays()
+
/obj/item/gun/ballistic/automatic/pistol/m1911
name = "\improper M1911"
desc = "A classic .45 handgun with a small magazine capacity."
@@ -92,3 +124,34 @@
to_chat(user, "..and falls into view. Whew, that was a close one. ")
user.dropItemToGround(src)
+////////////Anti Tank Pistol////////////
+
+/obj/item/gun/ballistic/automatic/pistol/antitank
+ name = "Anti Tank Pistol"
+ desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate your wrist."
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "atp"
+ item_state = "pistol"
+ recoil = 4
+ mag_type = /obj/item/ammo_box/magazine/sniper_rounds
+ fire_delay = 50
+ burst_size = 1
+ can_suppress = 0
+ w_class = WEIGHT_CLASS_NORMAL
+ actions_types = list()
+ fire_sound = 'sound/weapons/blastcannon.ogg'
+ spread = 20 //damn thing has no rifling.
+
+/obj/item/gun/ballistic/automatic/pistol/antitank/update_icon()
+ ..()
+ if(magazine)
+ cut_overlays()
+ add_overlay("atp-mag")
+ else
+ cut_overlays()
+ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
+
+/obj/item/gun/ballistic/automatic/pistol/antitank/syndicate
+ name = "Syndicate Anti Tank Pistol"
+ desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate a variety of joints without proper bracing."
+ pin = /obj/item/firing_pin/implant/pindicate
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 36a9bba295..e0c84e7047 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -65,9 +65,6 @@
update_icon()
/obj/item/gun/energy/Destroy()
- //no need to delete them, since contents are already deleted in atom/movable/Destroy().
- cell = null
- ammo_type = null
STOP_PROCESSING(SSobj, src)
return ..()
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 2fe9b326eb..bcd3a97ccd 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -24,6 +24,7 @@
icon_state = "toyburst"
obj_flags = NONE
fire_delay = 40
+ w_class = WEIGHT_CLASS_HUGE
weapon_weight = WEAPON_HEAVY
selfcharge = EGUN_SELFCHARGE
charge_delay = 2
@@ -56,12 +57,14 @@
/obj/item/gun/energy/laser/carbine
name = "laser carbine"
desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal laser gun."
- icon = 'icons/obj/guns/energy.dmi'
icon_state = "lasernew"
- item_state = "laser"
+ item_state = "lasernew"
+ slot_flags = ITEM_SLOT_BACK
+ w_class = WEIGHT_CLASS_BULKY
+ weapon_weight = WEAPON_MEDIUM
+ inaccuracy_modifier = 0.5
force = 10
throwforce = 10
- ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
cell_type = /obj/item/stock_parts/cell/lascarbine
resistance_flags = FIRE_PROOF | ACID_PROOF
diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm
index 14b2ff0c1a..c993c0013a 100644
--- a/code/modules/projectiles/guns/magic/staff.dm
+++ b/code/modules/projectiles/guns/magic/staff.dm
@@ -90,9 +90,10 @@
. = ..()
AddComponent(/datum/component/butchering, 15, 125, 0, hitsound)
-/obj/item/gun/magic/staff/spellblade/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
- final_block_chance = 0
+/obj/item/gun/magic/staff/spellblade/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ // Do not block projectiles.
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
+ return BLOCK_NONE
return ..()
/obj/item/gun/magic/staff/locker
diff --git a/code/modules/projectiles/guns/misc/chameleon.dm b/code/modules/projectiles/guns/misc/chameleon.dm
index d2afe2bd78..4fa614ae5c 100644
--- a/code/modules/projectiles/guns/misc/chameleon.dm
+++ b/code/modules/projectiles/guns/misc/chameleon.dm
@@ -60,13 +60,12 @@
continue
vv_edit_var(v, initial(vars[v]))
vars[v] = initial(vars[v])
- QDEL_NULL(chambered.BB)
+ QDEL_NULL(chambered.BB)
chambered.newshot()
/obj/item/gun/energy/laser/chameleon/proc/set_chameleon_ammo(obj/item/ammo_casing/AC, passthrough = TRUE, reset = FALSE)
if(!istype(AC))
CRASH("[AC] is not /obj/item/ammo_casing!")
- return FALSE
for(var/V in ammo_copy_vars)
if(AC.vars.Find(V))
chameleon_ammo_vars[V] = AC.vars[V]
@@ -78,7 +77,6 @@
/obj/item/gun/energy/laser/chameleon/proc/set_chameleon_projectile(obj/item/projectile/P)
if(!istype(P))
CRASH("[P] is not /obj/item/projectile!")
- return FALSE
chameleon_projectile_vars = list("name" = "practice laser", "icon" = 'icons/obj/projectiles.dmi', "icon_state" = "laser", "nodamage" = TRUE)
for(var/V in projectile_copy_vars)
if(P.vars.Find(V))
@@ -99,7 +97,6 @@
/obj/item/gun/energy/laser/chameleon/proc/set_chameleon_gun(obj/item/gun/G , passthrough = TRUE)
if(!istype(G))
CRASH("[G] is not /obj/item/gun!")
- return FALSE
for(var/V in gun_copy_vars)
if(vars.Find(V) && G.vars.Find(V))
chameleon_gun_vars[V] = G.vars[V]
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 9b60f96d16..6094a7aa46 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -20,7 +20,7 @@
var/atom/movable/firer = null//Who shot it
var/atom/fired_from = null // the atom that the projectile was fired from (gun, turret) var/suppressed = FALSE //Attack message
var/suppressed = FALSE //Attack message
- var/candink = FALSE //Can this projectile play the dink sound when hitting the head? var/yo = null
+ var/candink = FALSE //Can this projectile play the dink sound when hitting the head?
var/yo = null
var/xo = null
var/atom/original = null // the original target clicked
@@ -695,3 +695,9 @@
/obj/item/projectile/experience_pressure_difference()
return
+
+/////// MISC HELPERS ////////
+/// Is this atom reflectable with ""standardized"" reflection methods like you know eshields and deswords and similar
+/proc/is_energy_reflectable_projectile(atom/A)
+ var/obj/item/projectile/P = A
+ return istype(P) && P.is_reflectable
diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm
index b68c3847e2..319640a4d5 100644
--- a/code/modules/projectiles/projectile/bullets/pistol.dm
+++ b/code/modules/projectiles/projectile/bullets/pistol.dm
@@ -34,3 +34,17 @@
name = "10mm incendiary bullet"
damage = 15
fire_stacks = 2
+
+/obj/item/projectile/bullet/c10mm/soporific
+ name ="10mm soporific bullet"
+ nodamage = TRUE
+
+/obj/item/projectile/bullet/c10mm/soporific/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if((blocked != 100) && isliving(target))
+ var/mob/living/L = target
+ L.blur_eyes(6)
+ if(L.getStaminaLoss() >= 60)
+ L.Sleeping(300)
+ else
+ L.adjustStaminaLoss(25)
\ No newline at end of file
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index eff1531e23..89dd229407 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -972,7 +972,6 @@
if(isnull(amount))
amount = 0
CRASH("null amount passed to reagent code")
- return FALSE
if(!isnum(amount))
return FALSE
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 22ff88d793..9899d219bf 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -189,96 +189,139 @@
if(beaker)
for(var/datum/reagent/R in beaker.reagents.reagent_list)
beakerContents.Add(list(list("name" = R.name, "id" = ckey(R.name), "volume" = R.volume))) // list in a list because Byond merges the first list...
- data["beakerContents"] = beakerContents
+ data["beakerContents"] = beakerContents
var/bufferContents[0]
if(reagents.total_volume)
for(var/datum/reagent/N in reagents.reagent_list)
bufferContents.Add(list(list("name" = N.name, "id" = ckey(N.name), "volume" = N.volume))) // ^
- data["bufferContents"] = bufferContents
+ data["bufferContents"] = bufferContents
//Calculated at init time as it never changes
data["pillStyles"] = pillStyles
-
return data
/obj/machinery/chem_master/ui_act(action, params)
if(..())
return
+
switch(action)
if("eject")
replace_beaker(usr)
. = TRUE
- if("ejectp")
+ if("ejectPillBottle")
replace_pillbottle(usr)
. = TRUE
- if("transferToBuffer")
- if(beaker)
- var/reagent = GLOB.name2reagent[params["id"]]
- var/amount = text2num(params["amount"])
- if (amount > 0)
- end_fermi_reaction()
- beaker.reagents.trans_id_to(src, reagent, amount)
- . = TRUE
- else if (amount == -1) // -1 means custom amount
- useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null
- if (useramount > 0)
- end_fermi_reaction()
- beaker.reagents.trans_id_to(src, reagent, useramount)
- . = TRUE
-
- if("transferFromBuffer")
+ if("transfer")
+ if(!beaker)
+ return FALSE
var/reagent = GLOB.name2reagent[params["id"]]
var/amount = text2num(params["amount"])
- if (amount > 0)
- if(mode)
- reagents.trans_id_to(beaker, reagent, amount)
- . = TRUE
- else
- reagents.remove_reagent(reagent, amount)
- . = TRUE
- else if (amount == -1) // -1 means custom amount
- useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null
- if (useramount > 0)
- end_fermi_reaction()
- reagents.trans_id_to(beaker, reagent, useramount)
- . = TRUE
+ var/to_container = params["to"]
+ // Custom amount
+ if (amount == -1)
+ amount = text2num(input(
+ "Enter the amount you want to transfer:",
+ name, ""))
+ if (amount == null || amount <= 0)
+ return FALSE
+ if (to_container == "buffer")
+ end_fermi_reaction()
+ beaker.reagents.trans_id_to(src, reagent, amount)
+ return TRUE
+ if (to_container == "beaker" && mode)
+ end_fermi_reaction()
+ reagents.trans_id_to(beaker, reagent, amount)
+ return TRUE
+ if (to_container == "beaker" && !mode)
+ end_fermi_reaction()
+ reagents.remove_reagent(reagent, amount)
+ return TRUE
+ return FALSE
if("toggleMode")
mode = !mode
. = TRUE
- if("createPill")
- var/many = params["many"]
+ if("pillStyle")
+ var/id = text2num(params["id"])
+ chosenPillStyle = id
+ return TRUE
+
+ if("create")
if(reagents.total_volume == 0)
- return
- if(!condi)
- var/amount = 1
- var/vol_each = min(reagents.total_volume, 50)
- if(text2num(many))
- amount = CLAMP(round(input(usr, "Max 10. Buffer content will be split evenly.", "How many pills?", amount) as num|null), 0, 10)
- if(!amount)
- return
- vol_each = min(reagents.total_volume / amount, 50)
- var/name = html_decode(stripped_input(usr,"Name:","Name your pill!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN))
- if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
- return
+ return FALSE
+ var/item_type = params["type"]
+ // Get amount of items
+ var/amount = text2num(params["amount"])
+ if(amount == null)
+ amount = text2num(input(usr,
+ "Max 10. Buffer content will be split evenly.",
+ "How many to make?", 1))
+ amount = clamp(round(amount), 0, 10)
+ if (amount <= 0)
+ return FALSE
+ // Get units per item
+ var/vol_each = text2num(params["volume"])
+ var/vol_each_text = params["volume"]
+ var/vol_each_max = reagents.total_volume / amount
+ if (item_type == "pill")
+ vol_each_max = min(50, vol_each_max)
+ else if (item_type == "patch")
+ vol_each_max = min(40, vol_each_max)
+ else if (item_type == "bottle")
+ vol_each_max = min(30, vol_each_max)
+ else if (item_type == "condimentPack")
+ vol_each_max = min(10, vol_each_max)
+ else if (item_type == "condimentBottle")
+ vol_each_max = min(50, vol_each_max)
+ else if (item_type == "hypoVial")
+ vol_each_max = min(60, vol_each_max)
+ else if (item_type == "smartDart")
+ vol_each_max = min(20, vol_each_max)
+ else
+ return FALSE
+ if(vol_each_text == "auto")
+ vol_each = vol_each_max
+ if(vol_each == null)
+ vol_each = text2num(input(usr,
+ "Maximum [vol_each_max] units per item.",
+ "How many units to fill?",
+ vol_each_max))
+ vol_each = clamp(vol_each, 0, vol_each_max)
+ if(vol_each <= 0)
+ return FALSE
+ // Get item name
+ var/name = params["name"]
+ var/name_has_units = item_type == "pill" || item_type == "patch"
+ if(!name)
+ var/name_default = reagents.get_master_reagent_name()
+ if (name_has_units)
+ name_default += " ([vol_each]u)"
+ name = stripped_input(usr,
+ "Name:",
+ "Give it a name!",
+ name_default,
+ MAX_NAME_LEN)
+ if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr)))
+ return FALSE
+ // Start filling
+ if(item_type == "pill")
var/obj/item/reagent_containers/pill/P
var/target_loc = drop_location()
var/drop_threshold = INFINITY
if(bottle)
- var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage)
+ var/datum/component/storage/STRB = bottle.GetComponent(
+ /datum/component/storage)
if(STRB)
drop_threshold = STRB.max_items - bottle.contents.len
- target_loc = bottle
-
- for(var/i in 1 to amount)
- if(i <= drop_threshold)
- P = new(target_loc)
+ for(var/i = 0; i < amount; i++)
+ if(i < drop_threshold)
+ P = new/obj/item/reagent_containers/pill(target_loc)
else
- P = new(drop_location())
+ P = new/obj/item/reagent_containers/pill(drop_location())
P.name = trim("[name] pill")
if(chosenPillStyle == RANDOM_PILL_STYLE)
P.icon_state ="pill[rand(1,21)]"
@@ -287,171 +330,62 @@
if(P.icon_state == "pill4")
P.desc = "A tablet or capsule, but not just any, a red one, one taken by the ones not scared of knowledge, freedom, uncertainty and the brutal truths of reality."
adjust_item_drop_location(P)
- reagents.trans_to(P,vol_each)
- else
- var/name = html_decode(stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN))
- if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
- return
- var/obj/item/reagent_containers/food/condiment/pack/P = new/obj/item/reagent_containers/food/condiment/pack(drop_location())
-
- P.originalname = name
- P.name = trim("[name] pack")
- P.desc = "A small condiment pack. The label says it contains [name]."
- reagents.trans_to(P,10)
- . = TRUE
-
- if("pillStyle")
- var/id = text2num(params["id"])
- chosenPillStyle = id
-
- if("createPatch")
- var/many = params["many"]
- if(reagents.total_volume == 0)
- return
- var/amount = 1
- var/vol_each = min(reagents.total_volume, 40)
- if(text2num(many))
- amount = CLAMP(round(input(usr, "Max 10. Buffer content will be split evenly.", "How many patches?", amount) as num|null), 0, 10)
- if(!amount)
- return
- vol_each = min(reagents.total_volume / amount, 40)
- var/name = html_decode(stripped_input(usr,"Name:","Name your patch!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN))
- if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
- return
- var/obj/item/reagent_containers/pill/P
-
- for(var/i = 0; i < amount; i++)
- P = new/obj/item/reagent_containers/pill/patch(drop_location())
- P.name = trim("[name] patch")
- adjust_item_drop_location(P)
- reagents.trans_to(P,vol_each)
- . = TRUE
-
- if("createBottle")
- var/many = params["many"]
- if(reagents.total_volume == 0)
- return
-
- if(condi)
- var/name = html_decode(stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN))
- if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
- return
- var/obj/item/reagent_containers/food/condiment/P = new(drop_location())
- P.originalname = name
- P.name = trim("[name] bottle")
- reagents.trans_to(P, P.volume)
- else
- var/amount_full = 0
- var/vol_part = min(reagents.total_volume, 30)
- if(text2num(many))
- amount_full = round(reagents.total_volume / 30)
- vol_part = ((reagents.total_volume*1000) % 30000) / 1000 //% operator doesn't support decimals.
- var/name = html_decode(stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN))
- if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
- return
-
+ reagents.trans_to(P, vol_each)
+ return TRUE
+ if(item_type == "patch")
+ var/obj/item/reagent_containers/pill/patch/P
+ for(var/i = 0; i < amount; i++)
+ P = new/obj/item/reagent_containers/pill/patch(drop_location())
+ P.name = trim("[name] patch")
+ adjust_item_drop_location(P)
+ reagents.trans_to(P, vol_each)
+ return TRUE
+ if(item_type == "bottle")
var/obj/item/reagent_containers/glass/bottle/P
- for(var/i = 0; i < amount_full; i++)
+ for(var/i = 0; i < amount; i++)
P = new/obj/item/reagent_containers/glass/bottle(drop_location())
P.name = trim("[name] bottle")
adjust_item_drop_location(P)
- reagents.trans_to(P, 30)
-
- if(vol_part)
- P = new/obj/item/reagent_containers/glass/bottle(drop_location())
+ reagents.trans_to(P, vol_each)
+ return TRUE
+ if(item_type == "condimentPack")
+ var/obj/item/reagent_containers/food/condiment/pack/P
+ for(var/i = 0; i < amount; i++)
+ P = new/obj/item/reagent_containers/food/condiment/pack(drop_location())
+ P.originalname = name
+ P.name = trim("[name] pack")
+ P.desc = "A small condiment pack. The label says it contains [name]."
+ reagents.trans_to(P, vol_each)
+ return TRUE
+ if(item_type == "condimentBottle")
+ var/obj/item/reagent_containers/food/condiment/P
+ for(var/i = 0; i < amount; i++)
+ P = new/obj/item/reagent_containers/food/condiment(drop_location())
+ P.originalname = name
P.name = trim("[name] bottle")
+ reagents.trans_to(P, vol_each)
+ return TRUE
+ if(item_type == "hypoVial")
+ var/obj/item/reagent_containers/glass/bottle/vial/small/P
+ for(var/i = 0; i < amount; i++)
+ P = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location())
+ P.name = trim("[name] hypovial")
adjust_item_drop_location(P)
- reagents.trans_to(P, vol_part)
- . = TRUE
- //CITADEL ADD Hypospray Vials
- if("createVial")
- var/many = params["many"]
- if(reagents.total_volume == 0)
- return
+ reagents.trans_to(P, vol_each)
+ return TRUE
+ if(item_type == "smartDart")
+ var/obj/item/reagent_containers/syringe/dart/P
+ for(var/i = 0; i < amount; i++)
+ P = new /obj/item/reagent_containers/syringe/dart(drop_location())
+ P.name = trim("[name] SmartDart")
+ adjust_item_drop_location(P)
+ reagents.trans_to(P, vol_each)
+ P.mode=!mode
+ P.update_icon()
+ return TRUE
+ return FALSE
- var/amount_full = 0
- var/vol_part = min(reagents.total_volume, 60)
- if(text2num(many))
- amount_full = round(reagents.total_volume / 60)
- vol_part = reagents.total_volume % 60
- var/name = html_decode(stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN))
- if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
- return
-
- var/obj/item/reagent_containers/glass/bottle/vial/small/P
- for(var/i = 0; i < amount_full; i++)
- P = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location())
- P.name = trim("[name] hypovial")
- adjust_item_drop_location(P)
- reagents.trans_to(P, 60)
-
- if(vol_part)
- P = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location())
- P.name = trim("[name] hypovial")
- adjust_item_drop_location(P)
- reagents.trans_to(P, vol_part)
- . = TRUE
-
- if("createDart")
- for(var/datum/reagent/R in reagents.reagent_list)
- if(!(istype(R, /datum/reagent/medicine)))
- visible_message("The [src] beeps, \"SmartDarts are insoluble with non-medicinal compounds.\" ")
- return
-
- var/many = params["many"]
- if(reagents.total_volume == 0)
- return
- var/amount = 1
- var/vol_each = min(reagents.total_volume, 20)
- if(text2num(many))
- amount = CLAMP(round(input(usr, "Max 10. Buffer content will be split evenly.", "How many darts?", amount) as num|null), 0, 10)
- if(!amount)
- return
- vol_each = min(reagents.total_volume / amount, 20)
-
- var/name = html_decode(stripped_input(usr,"Name:","Name your SmartDart!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN))
- if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
- return
-
- var/obj/item/reagent_containers/syringe/dart/D
- for(var/i = 0; i < amount; i++)
- D = new /obj/item/reagent_containers/syringe/dart(drop_location())
- D.name = trim("[name] SmartDart")
- adjust_item_drop_location(D)
- reagents.trans_to(D, vol_each)
- D.mode=!mode
- D.update_icon()
- . = TRUE
-
- //END CITADEL ADDITIONS
- if("analyzeBeak")
- var/datum/reagent/R = GLOB.name2reagent[params["id"]]
- if(R)
- var/state = "Unknown"
- if(initial(R.reagent_state) == 1)
- state = "Solid"
- else if(initial(R.reagent_state) == 2)
- state = "Liquid"
- else if(initial(R.reagent_state) == 3)
- state = "Gas"
- var/const/P = 3 //The number of seconds between life ticks
- var/T = initial(R.metabolization_rate) * (60 / P)
- var/datum/chemical_reaction/Rcr = get_chemical_reaction(R)
- if(Rcr && Rcr.FermiChem)
- fermianalyze = TRUE
- var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2
- var/datum/reagent/targetReagent = beaker.reagents.has_reagent(R)
-
- if(!targetReagent)
- CRASH("Tried to find a reagent that doesn't exist in the chem_master!")
- analyzeVars = list("name" = initial(R.name), "state" = state, "color" = initial(R.color), "description" = initial(R.description), "metaRate" = T, "overD" = initial(R.overdose_threshold), "addicD" = initial(R.addiction_threshold), "purityF" = targetReagent.purity, "inverseRatioF" = initial(R.inverse_chem_val), "purityE" = initial(Rcr.PurityMin), "minTemp" = initial(Rcr.OptimalTempMin), "maxTemp" = initial(Rcr.OptimalTempMax), "eTemp" = initial(Rcr.ExplodeTemp), "pHpeak" = pHpeakCache)
- else
- fermianalyze = FALSE
- analyzeVars = list("name" = initial(R.name), "state" = state, "color" = initial(R.color), "description" = initial(R.description), "metaRate" = T, "overD" = initial(R.overdose_threshold), "addicD" = initial(R.addiction_threshold))
- screen = "analyze"
- return
-
- if("analyzeBuff")
+ if("analyze")
var/datum/reagent/R = GLOB.name2reagent[params["id"]]
if(R)
var/state = "Unknown"
@@ -476,7 +410,7 @@
fermianalyze = FALSE
analyzeVars = list("name" = initial(R.name), "state" = state, "color" = initial(R.color), "description" = initial(R.description), "metaRate" = T, "overD" = initial(R.overdose_threshold), "addicD" = initial(R.addiction_threshold))
screen = "analyze"
- return
+ return TRUE
if("goScreen")
screen = params["screen"]
@@ -527,4 +461,4 @@
condi = TRUE
#undef PILL_STYLE_COUNT
-#undef RANDOM_PILL_STYLE
\ No newline at end of file
+#undef RANDOM_PILL_STYLE
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index a7c0d55bb6..7ee233b449 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -43,8 +43,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
booze_power *= 0.7
C.drunkenness = max((C.drunkenness + (sqrt(volume) * booze_power * ALCOHOL_RATE)), 0) //Volume, power, and server alcohol rate effect how quickly one gets drunk
var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER)
- if (istype(L))
- C.applyLiverDamage((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * L.alcohol_tolerance, 0))/150)
+ if(L)
+ L.applyOrganDamage((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * L.alcohol_tolerance, 0))/150)
return ..()
/datum/reagent/consumable/ethanol/reaction_obj(obj/O, reac_volume)
@@ -1646,7 +1646,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "pina_colada"
glass_name = "Pina Colada"
glass_desc = "If you like pina coladas, and getting caught in the rain... well, you'll like this drink."
-
+
/datum/reagent/consumable/ethanol/grasshopper
name = "Grasshopper"
description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this."
@@ -2354,7 +2354,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/hotlime_miami/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
M.adjustStaminaLoss(-2)
- return ..()
+ return ..()
/datum/reagent/consumable/ethanol/fruit_wine
name = "Fruit Wine"
diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
index 482dfde1d6..52c06bca9b 100644
--- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
@@ -864,12 +864,13 @@
glass_icon_state = "red_queen"
glass_name = "Red Queen"
glass_desc = "DRINK ME."
- var/current_size = 1
+ var/current_size = RESIZE_DEFAULT_SIZE
/datum/reagent/consumable/red_queen/on_mob_life(mob/living/carbon/H)
if(prob(75))
return ..()
var/newsize = pick(0.5, 0.75, 1, 1.50, 2)
+ newsize *= RESIZE_DEFAULT_SIZE
H.resize = newsize/current_size
current_size = newsize
H.update_transform()
@@ -878,7 +879,8 @@
..()
/datum/reagent/consumable/red_queen/on_mob_end_metabolize(mob/living/M)
- M.resize = 1/current_size
+ M.resize = RESIZE_DEFAULT_SIZE/current_size
+ current_size = RESIZE_DEFAULT_SIZE
M.update_transform()
..()
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index bf090302c8..e7229b5abf 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -467,9 +467,9 @@
if(H.physiology)
H.physiology.stamina_mod *= 0.5
if(H.dna && H.dna.species)
- H.dna.species.punchdamagehigh *= 4
- H.dna.species.punchdamagelow *= 4
- H.dna.species.punchstunthreshold *= 2
+ H.dna.species.punchdamagehigh += 4
+ H.dna.species.punchdamagelow += 4
+ H.dna.species.punchstunthreshold -= 2
/datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L)
. = ..()
@@ -480,9 +480,9 @@
if(H.physiology)
H.physiology.stamina_mod *= 2
if(H.dna && H.dna.species)
- H.dna.species.punchdamagehigh *= 0.25
- H.dna.species.punchdamagelow *= 0.25
- H.dna.species.punchstunthreshold *= 0.5
+ H.dna.species.punchdamagehigh -= 4
+ H.dna.species.punchdamagelow -= 4
+ H.dna.species.punchstunthreshold += 2
/datum/reagent/drug/skooma/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM)
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 46002287dd..ecceb6e8bf 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -263,9 +263,9 @@
/datum/reagent/medicine/silver_sulfadiazine/overdose_start(mob/living/M)
metabolization_rate = 15 * REAGENTS_METABOLISM
M.adjustBruteLoss(2*REM, 0)
- if(iscarbon(M))
- var/mob/living/carbon/C = M
- C.applyLiverDamage(1)
+ var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
+ if(L)
+ L.applyOrganDamage(1)
..()
. = 1
@@ -326,9 +326,9 @@
datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
metabolization_rate = 15 * REAGENTS_METABOLISM
M.adjustBruteLoss(2*REM, 0)
- if(iscarbon(M))
- var/mob/living/carbon/C = M
- C.applyLiverDamage(1)
+ var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
+ if(L)
+ L.applyOrganDamage(1)
..()
. = 1
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 1fbb3cc346..c2f14e69ec 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -332,7 +332,7 @@
data = list("misc" = 1)
data["misc"]++
M.jitteriness = min(M.jitteriness+4,10)
- if(iscultist(M))
+ if(iscultist(M, FALSE, TRUE))
for(var/datum/action/innate/cult/blood_magic/BM in M.actions)
if(!BM.holy_dispel)
BM.holy_dispel = TRUE
@@ -361,7 +361,7 @@
if("emote")
M.visible_message("[M] [pick("whimpers quietly", "shivers as though cold", "glances around in paranoia")]. ")
if(data["misc"] >= 60) // 30 units, 135 seconds
- if(iscultist(M) || is_servant_of_ratvar(M))
+ if(iscultist(M, FALSE, TRUE) || is_servant_of_ratvar(M, FALSE, TRUE))
if(iscultist(M))
SSticker.mode.remove_cultist(M.mind, FALSE, TRUE)
else if(is_servant_of_ratvar(M))
@@ -1070,11 +1070,11 @@
to_chat(M, "You start feeling your guts twisting painfully! ")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
-/datum/reagent/iron/overdose_process(mob/living/carbon/C)
+/datum/reagent/iron/overdose_process(mob/living/M)
if(prob(20))
- var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER)
- if (istype(L))
- C.applyLiverDamage(2) //mild until the fabled med rework comes out. the organ damage galore
+ var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
+ if(L)
+ L.applyOrganDamage(2)
..()
/datum/reagent/gold
@@ -1917,22 +1917,22 @@
name = "Growth Serum"
description = "A commercial chemical designed to help older men in the bedroom."//not really it just makes you a giant
color = "#ff0000"//strong red. rgb 255, 0, 0
- var/current_size = 1
+ var/current_size = RESIZE_DEFAULT_SIZE
taste_description = "bitterness" // apparently what viagra tastes like
/datum/reagent/growthserum/on_mob_life(mob/living/carbon/H)
var/newsize = current_size
switch(volume)
if(0 to 19)
- newsize = 1.25
+ newsize = 1.25*RESIZE_DEFAULT_SIZE
if(20 to 49)
- newsize = 1.5
+ newsize = 1.5*RESIZE_DEFAULT_SIZE
if(50 to 99)
- newsize = 2
+ newsize = 2*RESIZE_DEFAULT_SIZE
if(100 to 199)
- newsize = 2.5
+ newsize = 2.5*RESIZE_DEFAULT_SIZE
if(200 to INFINITY)
- newsize = 3.5
+ newsize = 3.5*RESIZE_DEFAULT_SIZE
H.resize = newsize/current_size
current_size = newsize
@@ -1940,7 +1940,8 @@
..()
/datum/reagent/growthserum/on_mob_end_metabolize(mob/living/M)
- M.resize = 1/current_size
+ M.resize = RESIZE_DEFAULT_SIZE/current_size
+ current_size = RESIZE_DEFAULT_SIZE
M.update_transform()
..()
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 3c4be7969d..9555f5b64b 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -331,7 +331,6 @@
else
to_chat(user, "This doesn't fit in [src]. ")
return FALSE
- return FALSE
/obj/item/hypospray/mkii/AltClick(mob/user)
. = ..()
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 1c87c1901c..1e687816ff 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -235,7 +235,7 @@
/obj/structure/reagent_dispensers/keg/milk
name = "keg of milk"
- desc = "It's not quite what you were hoping for."
+ desc = "A keg of pasteurised, homogenised, filtered and semi-skimmed space milk."
icon_state = "whitekeg"
reagent_id = /datum/reagent/consumable/milk
@@ -250,4 +250,4 @@
desc = "A keg of... wow that's a long name."
icon_state = "bluekeg"
reagent_id = /datum/reagent/consumable/ethanol/gargle_blaster
- tank_volume = 100
\ No newline at end of file
+ tank_volume = 100
diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm
index c5f6b01e57..6d63df7d4b 100644
--- a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm
+++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm
@@ -45,7 +45,7 @@
/datum/design/board/vendor
name = "Machine Design (Vendor Board)"
- desc = "The circuit board for a Vendor."
+ desc = "The circuit board for a Vendor. Use a screwdriver to turn the \"brand selection\" dial."
id = "vendor"
build_path = /obj/item/circuitboard/machine/vendor
category = list ("Misc. Machinery")
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 6b3ba6fe28..5405b82848 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -122,16 +122,6 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
-/datum/design/bluespacebodybag
- name = "Bluespace Body Bag"
- desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures."
- id = "bluespacebodybag"
- build_type = PROTOLATHE
- materials = list(/datum/material/iron = 3000, /datum/material/plasma = 2000, /datum/material/diamond = 500, /datum/material/bluespace = 500)
- build_path = /obj/item/bodybag/bluespace
- category = list("Medical Designs")
- departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
-
/datum/design/plasmarefiller
name = "Plasma-Man Jumpsuit Refill"
desc = "A refill pack for the auto-extinguisher on Plasma-man suits."
@@ -242,6 +232,40 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
+////////////////////////////////////////
+//////////Body Bags/////////////////////
+////////////////////////////////////////
+
+/datum/design/bodybag
+ name = "Body Bag"
+ desc = "A normal body bag used for storge of dead crew."
+ id = "bodybag"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 4000)
+ build_path = /obj/item/bodybag
+ category = list("Medical Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/bluespacebodybag
+ name = "Bluespace Body Bag"
+ desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures."
+ id = "bluespacebodybag"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 3000, /datum/material/plasma = 2000, /datum/material/diamond = 500, /datum/material/bluespace = 500)
+ build_path = /obj/item/bodybag/bluespace
+ category = list("Medical Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/containmentbodybag
+ name = "Containment Body Bag"
+ desc = "A containment body bag, heavy and radiation proof."
+ id = "containmentbodybag"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 6000, /datum/material/plastic = 4000, /datum/material/titanium = 2000)
+ build_path = /obj/item/bodybag/containment
+ category = list("Medical Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
+
////////////////////////////////////////
//////////Defibrillator Tech////////////
////////////////////////////////////////
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index fe5f275da5..dafa119873 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -79,7 +79,7 @@
display_name = "Advanced Biotechnology"
description = "Advanced Biotechnology"
prereq_ids = list("biotech")
- design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "meta_beaker", "healthanalyzer_advanced", "harvester", "holobarrier_med", "defibrillator_compact", "smartdartgun", "medicinalsmartdart", "pHmeter")
+ design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "meta_beaker", "healthanalyzer_advanced", "harvester", "holobarrier_med", "defibrillator_compact", "smartdartgun", "medicinalsmartdart", "pHmeter", "containmentbodybag")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
/datum/techweb_node/bio_process
@@ -221,23 +221,21 @@
description = "Unlock the potential of the mysterious of why CC decided to not build these around the station themselves."
prereq_ids = list("adv_engi", "high_efficiency")
design_ids = list("meteor_defence", "meteor_console")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
-*/
-//datum/techweb_node/adv_meteor_defense
- //id = "adv_meteor_defense"
- //display_name = "Meteor Defense Research"
- //description = "New and improved coding and lock on tech for meteor defence!"
- //prereq_ids = list("basic_meteor_defense", "adv_datatheory", "emp_adv")
- //design_ids = list("meteor_disk")
- //research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
+/datum/techweb_node/adv_meteor_defense
+ id = "adv_meteor_defense"
+ display_name = "Meteor Defense Research"
+ description = "New and improved coding and lock on tech for meteor defence!"
+ prereq_ids = list("basic_meteor_defense", "adv_datatheory", "emp_adv")
+ design_ids = list("meteor_disk")
+*/
/datum/techweb_node/computer_board_gaming
id = "computer_board_gaming"
display_name = "Games and Toys"
description = "For the slackers on the station."
prereq_ids = list("comptech")
- design_ids = list("arcade_battle", "arcade_orion", "slotmachine", "autoylathe")
+ design_ids = list("arcade_battle", "arcade_orion", "arcade_minesweeper", "slotmachine", "autoylathe")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
/////////////////////////Bluespace tech/////////////////////////
diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm
index b8bdffbabf..795a57b82c 100644
--- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm
@@ -137,8 +137,7 @@ Slimecrossing Armor
var/hit_reflect_chance = 10 // Citadel Change: because 40% chance of bouncing lasers back into peoples faces isn't good.
armor = list("melee" = 70, "bullet" = 70, "laser" = 40, "energy" = 40, "bomb" = 80, "bio" = 80, "rad" = 80, "fire" = 70, "acid" = 90) //Citadel Change to avoid immortal Xenobiologists.
-/obj/item/clothing/suit/armor/heavy/adamantine/IsReflect(def_zone)
- if(def_zone in list(BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) && prob(hit_reflect_chance))
- return TRUE
- else
- return FALSE
+/obj/item/clothing/suit/armor/heavy/adamantine/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(is_energy_reflectable_projectile(object) && prob(hit_reflect_chance))
+ return BLOCK_SUCCESS | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT | BLOCK_PHYSICAL_INTERNAL
+ return ..()
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index b9897db303..95d6c49529 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -505,13 +505,13 @@ datum/status_effect/rebreathing/tick()
/datum/status_effect/stabilized/purple/tick()
var/is_healing = FALSE
if(owner.getBruteLoss() > 0)
- owner.adjustBruteLoss(-0.2)
+ owner.adjustBruteLoss(-0.4)
is_healing = TRUE
if(owner.getFireLoss() > 0)
- owner.adjustFireLoss(-0.2)
+ owner.adjustFireLoss(-0.4)
is_healing = TRUE
if(owner.getToxLoss() > 0)
- owner.adjustToxLoss(-0.2, forced = TRUE) //Slimepeople should also get healed.
+ owner.adjustToxLoss(-0.4, forced = TRUE) //Slimepeople should also get healed.
is_healing = TRUE
if(is_healing)
examine_text = "SUBJECTPRONOUN is regenerating slowly, purplish goo filling in small injuries! "
@@ -933,7 +933,6 @@ datum/status_effect/stabilized/blue/on_remove()
return ..()
/datum/status_effect/stabilized/lightpink/tick()
- owner.adjustStaminaLoss(-4.5)
for(var/mob/living/carbon/human/H in range(1, get_turf(owner)))
if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent(/datum/reagent/medicine/epinephrine))
to_chat(owner, "[linked_extract] pulses in sync with [H]'s heartbeat, trying to keep [H.p_them()] alive.")
diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm
index 22dee60eb4..143fe508b6 100644
--- a/code/modules/spells/spell.dm
+++ b/code/modules/spells/spell.dm
@@ -45,6 +45,12 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
/obj/effect/proc_holder/singularity_pull()
return
+/obj/effect/proc_holder/Click()
+ return Trigger(usr, FALSE)
+
+/obj/effect/proc_holder/proc/Trigger(mob/user)
+ return TRUE
+
/obj/effect/proc_holder/proc/InterceptClickOn(mob/living/caller, params, atom/A)
if(caller.ranged_ability != src || ranged_ability_user != caller) //I'm not actually sure how these would trigger, but, uh, safety, I guess?
to_chat(caller, "[caller.ranged_ability.name] has been disabled. ")
@@ -109,10 +115,9 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var"
var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used
- var/clothes_req = 1 //see if it requires clothes
- var/cult_req = 0 //SPECIAL SNOWFLAKE clothes required for cult only spells
- var/human_req = 0 //spell can only be cast by humans
- var/nonabstract_req = 0 //spell can only be cast by mobs that are physical entities
+ var/clothes_req = SPELL_WIZARD_GARB //see if it requires clothes
+ var/list/mobs_whitelist //spell can only be casted by mobs in this typecache.
+ var/list/mobs_blacklist //The opposite of the above.
var/stat_allowed = 0 //see if it requires being conscious/alive, need to set to 1 for ghostpells
var/phase_allowed = 0 // If true, the spell can be cast while phased, eg. blood crawling, ethereal jaunting
var/antimagic_allowed = TRUE // If false, the spell cannot be cast while under the effect of antimagic
@@ -144,79 +149,17 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
action_background_icon_state = "bg_spell"
base_action = /datum/action/spell_action/spell
-/obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell
- if(player_lock)
- if(!user.mind || !(src in user.mind.spell_list) && !(src in user.mob_spell_list))
- to_chat(user, "You shouldn't have this spell! Something's wrong. ")
- return FALSE
- else
- if(!(src in user.mob_spell_list))
- return FALSE
+/obj/effect/proc_holder/spell/Initialize()
+ . = ..()
+ if(mobs_whitelist)
+ mobs_whitelist = typecacheof(mobs_whitelist)
+ if(mobs_blacklist)
+ mobs_blacklist = typecacheof(mobs_blacklist)
- var/turf/T = get_turf(user)
- if(is_centcom_level(T.z) && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel
- to_chat(user, "You can't cast this spell here. ")
+/obj/effect/proc_holder/spell/proc/cast_check(skipcharge = FALSE, mob/user = usr, skip_can_cast = FALSE) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell
+ if(!skip_can_cast && !can_cast(user, skipcharge))
return FALSE
- if(!skipcharge)
- if(!charge_check(user))
- return FALSE
-
- if(user.stat && !stat_allowed)
- to_chat(user, "Not when you're incapacitated. ")
- return FALSE
-
- if(!antimagic_allowed)
- var/antimagic = user.anti_magic_check(TRUE, FALSE, chargecost = 0, self = TRUE)
- if(antimagic)
- if(isitem(antimagic))
- to_chat(user, "[antimagic] is interfering with your magic. ")
- else
- to_chat(user, "Magic seems to flee from you, you can't gather enough power to cast this spell. ")
- return FALSE
-
- if(!phase_allowed && istype(user.loc, /obj/effect/dummy))
- to_chat(user, "[name] cannot be cast unless you are completely manifested in the material plane. ")
- return FALSE
-
- if(ishuman(user))
-
- var/mob/living/carbon/human/H = user
-
- if((invocation_type == "whisper" || invocation_type == "shout") && !H.can_speak_vocal())
- to_chat(user, "You can't get the words out! ")
- return FALSE
-
- var/list/casting_clothes = typecacheof(list(/obj/item/clothing/suit/wizrobe,
- /obj/item/clothing/suit/space/hardsuit/wizard,
- /obj/item/clothing/head/wizard,
- /obj/item/clothing/head/helmet/space/hardsuit/wizard,
- /obj/item/clothing/suit/space/hardsuit/shielded/wizard,
- /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard))
-
- if(clothes_req) //clothes check
- if(!is_type_in_typecache(H.wear_suit, casting_clothes))
- to_chat(H, "I don't feel strong enough without my robe. ")
- return FALSE
- if(!is_type_in_typecache(H.head, casting_clothes))
- to_chat(H, "I don't feel strong enough without my hat. ")
- return FALSE
- if(cult_req) //CULT_REQ CLOTHES CHECK
- if(!istype(H.wear_suit, /obj/item/clothing/suit/magusred) && !istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit/cult))
- to_chat(H, "I don't feel strong enough without my armor. ")
- return FALSE
- if(!istype(H.head, /obj/item/clothing/head/magus) && !istype(H.head, /obj/item/clothing/head/helmet/space/hardsuit/cult))
- to_chat(H, "I don't feel strong enough without my helmet. ")
- return FALSE
- else
- if(clothes_req || human_req)
- to_chat(user, "This spell can only be cast by humans! ")
- return FALSE
- if(nonabstract_req && (isbrain(user) || ispAI(user)))
- to_chat(user, "This spell can only be cast by physical beings! ")
- return FALSE
-
-
if(!skipcharge)
switch(charge_type)
if("recharge")
@@ -227,7 +170,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
adjust_var(user, holder_var_type, holder_var_amount)
if(action)
action.UpdateButtonIcon()
- return 1
+ return TRUE
/obj/effect/proc_holder/spell/proc/charge_check(mob/user, silent = FALSE)
switch(charge_type)
@@ -244,17 +187,22 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
return TRUE
/obj/effect/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount
+ var/mob/living/L
+ if(isliving(user))
+ L = user
switch(invocation_type)
if("shout")
- if(prob(50))//Auto-mute? Fuck that noise
- user.say(invocation, forced = "spell")
- else
- user.say(replacetext(invocation," ","`"), forced = "spell")
+ if(!L || L.can_speak_vocal(invocation))
+ if(prob(50))//Auto-mute? Fuck that noise
+ user.say(invocation, forced = "spell")
+ else
+ user.say(replacetext(invocation," ","`"), forced = "spell")
if("whisper")
- if(prob(50))
- user.whisper(invocation)
- else
- user.whisper(replacetext(invocation," ","`"))
+ if(!L || L.can_speak_vocal(invocation))
+ if(prob(50))
+ user.whisper(invocation)
+ else
+ user.whisper(replacetext(invocation," ","`"))
if("emote")
user.visible_message(invocation, invocation_emote_self) //same style as in mob/living/emote.dm
@@ -273,8 +221,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
qdel(action)
return ..()
-/obj/effect/proc_holder/spell/Click()
- if(cast_check())
+/obj/effect/proc_holder/spell/Trigger(mob/user, skip_can_cast = TRUE)
+ if(cast_check(FALSE, user, skip_can_cast))
choose_targets()
return 1
@@ -482,11 +430,6 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
/obj/effect/proc_holder/spell/proc/updateButtonIcon(status_only, force)
action.UpdateButtonIcon(status_only, force)
-/obj/effect/proc_holder/spell/proc/can_be_cast_by(mob/caster)
- if((human_req || clothes_req) && !ishuman(caster))
- return 0
- return 1
-
/obj/effect/proc_holder/spell/targeted/proc/los_check(mob/A,mob/B)
//Checks for obstacles from A to B
var/obj/dummy = new(A.loc)
@@ -499,24 +442,61 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
qdel(dummy)
return 1
-/obj/effect/proc_holder/spell/proc/can_cast(mob/user = usr)
- if(((!user.mind) || !(src in user.mind.spell_list)) && !(src in user.mob_spell_list))
+/obj/effect/proc_holder/spell/proc/can_cast(mob/user = usr, skipcharge = FALSE, silent = FALSE)
+ var/magic_flags = SEND_SIGNAL(user, COMSIG_MOB_SPELL_CAN_CAST, src)
+ if(magic_flags & SPELL_SKIP_ALL_REQS)
+ return TRUE
+
+ if(player_lock ? (!user.mind || !(src in user.mind.spell_list) && !(src in user.mob_spell_list)) : !(src in user.mob_spell_list))
+ if(!silent)
+ to_chat(user, "You shouldn't have this spell! Something's wrong. ")
return FALSE
- if(!charge_check(user,TRUE))
- return FALSE
-
- if(user.stat && !stat_allowed)
- return FALSE
-
- if(!antimagic_allowed && user.anti_magic_check(TRUE, FALSE, chargecost = 0, self = TRUE))
- return FALSE
-
- if(!ishuman(user))
- if(clothes_req || human_req)
+ if(!centcom_cancast && !(magic_flags & SPELL_SKIP_CENTCOM)) //Certain spells are not allowed on the centcom zlevel
+ var/turf/T = get_turf(user)
+ if(is_centcom_level(T.z))
+ if(!silent)
+ to_chat(user, "You can't cast this spell here. ")
return FALSE
- if(nonabstract_req && (isbrain(user) || ispAI(user)))
+
+ if(!skipcharge && !charge_check(user, silent))
+ return FALSE
+
+ if(user.stat && !stat_allowed && !(magic_flags & SPELL_SKIP_STAT))
+ if(!silent)
+ to_chat(user, "Not when you're incapacitated. ")
+ return FALSE
+
+ if(!phase_allowed && istype(user.loc, /obj/effect/dummy))
+ if(!silent)
+ to_chat(user, "[name] cannot be cast unless you are completely manifested in the material plane. ")
+ return FALSE
+
+ if(clothes_req && !(magic_flags & SPELL_SKIP_CLOTHES))
+ var/met_requirements = magic_flags & (clothes_req)
+ if(met_requirements != clothes_req)
+ if(!silent)
+ var/the_many_hats = met_requirements & (clothes_req & (SPELL_WIZARD_HAT|SPELL_CULT_HELMET))
+ var/the_many_suits = met_requirements & (clothes_req & (SPELL_WIZARD_ROBE|SPELL_CULT_ARMOR))
+ var/without_hat_robe = the_many_suits ? "a proper headwear" : the_many_hats ? "a proper suit" : "proper garments"
+ to_chat(user, "I don't feel strong enough to cast this spell without [without_hat_robe]. ")
return FALSE
+
+ if(!antimagic_allowed && !(magic_flags & SPELL_SKIP_ANTIMAGIC) && user.anti_magic_check(TRUE, FALSE, chargecost = 0, self = TRUE))
+ return FALSE
+
+
+ if(!(magic_flags & SPELL_SKIP_VOCAL) && (invocation_type in list("whisper", "shout")) && isliving(user))
+ var/mob/living/L = user
+ if(!L.can_speak_vocal())
+ if(!silent)
+ to_chat(L, "You can't get the words out! ")
+ return FALSE
+
+ if(!(magic_flags & SPELL_SKIP_MOBTYPE) && ((mobs_whitelist && !mobs_whitelist[user.type]) || (mobs_blacklist && mobs_blacklist[user.type])))
+ if(!silent)
+ to_chat(user, "This spell can't be casted in this current form! ")
+ return FALSE
return TRUE
/obj/effect/proc_holder/spell/self //Targets only the caster. Good for buffs and heals, but probably not wise for fireballs (although they usually fireball themselves anyway, honke)
@@ -531,8 +511,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
/obj/effect/proc_holder/spell/self/basic_heal //This spell exists mainly for debugging purposes, and also to show how casting works
name = "Lesser Heal"
desc = "Heals a small amount of brute and burn damage."
- human_req = 1
- clothes_req = 0
+ mobs_whitelist = list(/mob/living/carbon/human)
+ clothes_req = NONE
charge_max = 100
cooldown_min = 50
invocation = "Victus sano!"
diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm
index 5ba85bef6b..1a904b1076 100644
--- a/code/modules/spells/spell_types/aimed.dm
+++ b/code/modules/spells/spell_types/aimed.dm
@@ -11,12 +11,11 @@
var/current_amount = 0 //How many projectiles left.
var/projectiles_per_fire = 1 //Projectiles per fire. Probably not a good thing to use unless you override ready_projectile().
-/obj/effect/proc_holder/spell/aimed/Click()
- var/mob/living/user = usr
+/obj/effect/proc_holder/spell/aimed/Trigger(mob/user, skip_can_cast = TRUE)
if(!istype(user))
return
var/msg
- if(!can_cast(user))
+ if(!skip_can_cast && !can_cast(user, FALSE, TRUE))
msg = "You can no longer cast [name]! "
remove_ranged_ability(msg)
return
@@ -95,7 +94,6 @@
desc = "Fire a high powered lightning bolt at your foes!"
school = "evocation"
charge_max = 150
- clothes_req = 1
invocation = "ZAP MUTHA'FUCKA"
invocation_type = "shout"
cooldown_min = 30
@@ -113,7 +111,7 @@
desc = "This spell fires a fireball at a target and does not require wizard garb."
school = "evocation"
charge_max = 100
- clothes_req = 0
+ clothes_req = NONE
invocation = "ONI SOMA"
invocation_type = "shout"
range = 20
@@ -131,7 +129,7 @@
desc = "Blazing hot rapid-fire homing cards. Banish your foes with its mystical power!"
school = "evocation"
charge_max = 50
- clothes_req = 0
+ clothes_req = NONE
invocation = "Sigi'lu M'Fan 'Tasia"
invocation_type = "shout"
range = 40
diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm
index 17a895490e..8a615750e0 100644
--- a/code/modules/spells/spell_types/area_teleport.dm
+++ b/code/modules/spells/spell_types/area_teleport.dm
@@ -1,7 +1,7 @@
/obj/effect/proc_holder/spell/targeted/area_teleport
name = "Area teleport"
desc = "This spell teleports you to a type of area of your selection."
- nonabstract_req = 1
+ mobs_blacklist = list(/mob/living/brain, /mob/living/silicon/pai)
var/randomise_selection = 0 //if it lets the usr choose the teleport loc or picks it from the list
var/invocation_area = 1 //if the invocation appends the selected area
diff --git a/code/modules/spells/spell_types/barnyard.dm b/code/modules/spells/spell_types/barnyard.dm
index ccb0280779..4b972e8030 100644
--- a/code/modules/spells/spell_types/barnyard.dm
+++ b/code/modules/spells/spell_types/barnyard.dm
@@ -5,7 +5,7 @@
charge_type = "recharge"
charge_max = 150
charge_counter = 0
- clothes_req = 0
+ clothes_req = NONE
stat_allowed = 0
invocation = "KN'A FTAGHU, PUCK 'BTHNK!"
invocation_type = "shout"
diff --git a/code/modules/spells/spell_types/bloodcrawl.dm b/code/modules/spells/spell_types/bloodcrawl.dm
index 49d73b445b..e59fc2049d 100644
--- a/code/modules/spells/spell_types/bloodcrawl.dm
+++ b/code/modules/spells/spell_types/bloodcrawl.dm
@@ -2,7 +2,7 @@
name = "Blood Crawl"
desc = "Use pools of blood to phase out of existence."
charge_max = 0
- clothes_req = 0
+ clothes_req = NONE
//If you couldn't cast this while phased, you'd have a problem
phase_allowed = 1
selection_type = "range"
diff --git a/code/modules/spells/spell_types/charge.dm b/code/modules/spells/spell_types/charge.dm
index d2513097ea..7728a879c5 100644
--- a/code/modules/spells/spell_types/charge.dm
+++ b/code/modules/spells/spell_types/charge.dm
@@ -4,7 +4,7 @@
school = "transmutation"
charge_max = 600
- clothes_req = 0
+ clothes_req = NONE
invocation = "DIRI CEL"
invocation_type = "whisper"
range = -1
diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm
index 7ff4f30e33..b609655526 100644
--- a/code/modules/spells/spell_types/conjure.dm
+++ b/code/modules/spells/spell_types/conjure.dm
@@ -60,7 +60,7 @@
name = "Link Worlds"
desc = "A whole new dimension for you to play with! They won't be happy about it, though."
invocation = "WTF"
- clothes_req = FALSE
+ clothes_req = NONE
charge_max = 600
cooldown_min = 200
summon_type = list(/obj/structure/spawner/nether)
@@ -74,7 +74,7 @@
invocation_type = "none"
include_user = 1
range = -1
- clothes_req = 0
+ clothes_req = NONE
var/obj/item/item
var/item_type = /obj/item/banhammer
school = "conjuration"
diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm
index 0c0b20f0fc..e8f3ab7d06 100644
--- a/code/modules/spells/spell_types/construct_spells.dm
+++ b/code/modules/spells/spell_types/construct_spells.dm
@@ -7,7 +7,7 @@
action_background_icon_state = "bg_demon"
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser/cult
- cult_req = 1
+ clothes_req = SPELL_CULT_GARB
charge_max = 2500
@@ -17,7 +17,7 @@
school = "transmutation"
charge_max = 50
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = 2
@@ -37,7 +37,7 @@
school = "conjuration"
charge_max = 20
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = 0
@@ -53,7 +53,7 @@
school = "conjuration"
charge_max = 100
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = 0
@@ -70,7 +70,7 @@
school = "conjuration"
charge_max = 300
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = 0
@@ -83,7 +83,7 @@
school = "conjuration"
charge_max = 2400
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = 0
@@ -94,7 +94,7 @@
summon_type = list(/obj/item/soulstone)
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/cult
- cult_req = 1
+ clothes_req = SPELL_CULT_GARB
charge_max = 3600
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/noncult
@@ -105,7 +105,7 @@
desc = "This spell creates a temporary forcefield to shield yourself and allies from incoming fire."
school = "transmutation"
charge_max = 400
- clothes_req = FALSE
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
wall_type = /obj/effect/forcefield/cult
@@ -121,7 +121,7 @@
school = "transmutation"
charge_max = 250
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = -1
@@ -143,7 +143,7 @@
school = "evocation"
charge_max = 400
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
proj_type = "/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile/lesser"
@@ -161,7 +161,7 @@
school = "conjuration"
charge_max = 200
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = -1
@@ -185,7 +185,7 @@
stat_allowed = FALSE
school = "evocation"
- clothes_req = FALSE
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
action_icon = 'icons/mob/actions/actions_cult.dmi'
@@ -232,7 +232,7 @@
stat_allowed = FALSE
school = "evocation"
- clothes_req = FALSE
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
action_icon = 'icons/mob/actions/actions_cult.dmi'
@@ -294,7 +294,7 @@
proj_lifespan = 15
proj_step_delay = 7
charge_max = 350
- clothes_req = FALSE
+ clothes_req = NONE
action_icon = 'icons/mob/actions/actions_cult.dmi'
action_icon_state = "cultfist"
action_background_icon_state = "bg_demon"
diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm
index 3952a347e0..34b033fd17 100644
--- a/code/modules/spells/spell_types/devil.dm
+++ b/code/modules/spells/spell_types/devil.dm
@@ -4,7 +4,7 @@
invocation_type = "none"
include_user = 1
range = -1
- clothes_req = 0
+ clothes_req = NONE
item_type = /obj/item/twohanded/pitchfork/demonic
school = "conjuration"
@@ -37,7 +37,7 @@
invocation = "Just sign on the dotted line."
include_user = 0
range = 5
- clothes_req = 0
+ clothes_req = NONE
school = "conjuration"
charge_max = 150
@@ -79,7 +79,7 @@
school = "evocation"
charge_max = 80
- clothes_req = 0
+ clothes_req = NONE
invocation = "Your very soul will catch fire!"
invocation_type = "shout"
range = 2
@@ -92,7 +92,7 @@
name = "Infernal Jaunt"
desc = "Use hellfire to phase out of existence."
charge_max = 200
- clothes_req = 0
+ clothes_req = NONE
selection_type = "range"
range = -1
cooldown_min = 0
@@ -167,7 +167,7 @@
name = "Sin Touch"
desc = "Subtly encourage someone to sin."
charge_max = 1800
- clothes_req = 0
+ clothes_req = NONE
selection_type = "range"
range = 2
cooldown_min = 0
@@ -206,7 +206,7 @@
desc = "When what a Devil really needs is funk."
include_user = 1
range = -1
- clothes_req = 0
+ clothes_req = NONE
school = "conjuration"
charge_max = 10
diff --git a/code/modules/spells/spell_types/devil_boons.dm b/code/modules/spells/spell_types/devil_boons.dm
index 5d335745d2..ab3e3cc27e 100644
--- a/code/modules/spells/spell_types/devil_boons.dm
+++ b/code/modules/spells/spell_types/devil_boons.dm
@@ -4,7 +4,7 @@
invocation_type = "none"
include_user = 1
range = -1
- clothes_req = 0
+ clothes_req = NONE
school = "conjuration"
charge_max = 100
cooldown_min = 10
@@ -32,7 +32,7 @@
invocation_type = "none"
include_user = 1
range = -1
- clothes_req = 0
+ clothes_req = NONE
charge_max = 50
cooldown_min = 10
action_icon = 'icons/mob/actions/actions_silicon.dmi'
@@ -51,7 +51,7 @@
invocation_type = "none"
include_user = 1
range = -1
- clothes_req = 0
+ clothes_req = NONE
charge_max = 50
cooldown_min = 10
action_icon = 'icons/mob/actions/actions_spells.dmi'
@@ -73,4 +73,4 @@
friendShell = new /obj/effect/mob_spawn/human/demonic_friend(L.loc, L.mind, src)
/obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket/robeless
- clothes_req = FALSE
+ clothes_req = NONE
diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm
index 424a3b7671..f485ae578f 100644
--- a/code/modules/spells/spell_types/ethereal_jaunt.dm
+++ b/code/modules/spells/spell_types/ethereal_jaunt.dm
@@ -4,13 +4,12 @@
school = "transmutation"
charge_max = 300
- clothes_req = 1
invocation = "none"
invocation_type = "none"
range = -1
cooldown_min = 100 //50 deciseconds reduction per rank
include_user = 1
- nonabstract_req = 1
+ mobs_blacklist = list(/mob/living/brain, /mob/living/silicon/pai)
var/jaunt_duration = 50 //in deciseconds
var/jaunt_in_time = 5
var/jaunt_in_type = /obj/effect/temp_visual/wizard
diff --git a/code/modules/spells/spell_types/forcewall.dm b/code/modules/spells/spell_types/forcewall.dm
index aa2fa5ab8b..e0c21066cf 100644
--- a/code/modules/spells/spell_types/forcewall.dm
+++ b/code/modules/spells/spell_types/forcewall.dm
@@ -3,7 +3,7 @@
desc = "Create a magical barrier that only you can pass through. Does not require wizard garb."
school = "transmutation"
charge_max = 80
- clothes_req = 0
+ clothes_req = NONE
invocation = "TARCOL MINTI ZHERI"
invocation_type = "shout"
sound = 'sound/magic/forcewall.ogg'
diff --git a/code/modules/spells/spell_types/infinite_guns.dm b/code/modules/spells/spell_types/infinite_guns.dm
index feb6eeddb6..cfdf0d4a8d 100644
--- a/code/modules/spells/spell_types/infinite_guns.dm
+++ b/code/modules/spells/spell_types/infinite_guns.dm
@@ -7,7 +7,6 @@
school = "conjuration"
charge_max = 750
- clothes_req = 1
cooldown_min = 10 //Gun wizard
action_icon_state = "bolt_action"
var/summon_path = /obj/item/gun/ballistic/shotgun/boltaction/enchanted
diff --git a/code/modules/spells/spell_types/knock.dm b/code/modules/spells/spell_types/knock.dm
index be5f516680..9cbaa5baa3 100644
--- a/code/modules/spells/spell_types/knock.dm
+++ b/code/modules/spells/spell_types/knock.dm
@@ -4,7 +4,7 @@
school = "transmutation"
charge_max = 100
- clothes_req = 0
+ clothes_req = NONE
invocation = "AULIE OXIN FIERA"
invocation_type = "whisper"
range = 3
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index 207ccd8374..f6f56c049a 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -8,7 +8,7 @@
becoming a lich destroys all internal organs except the brain."
school = "necromancy"
charge_max = 10
- clothes_req = 0
+ clothes_req = NONE
centcom_cancast = 0
invocation = "NECREM IMORTIUM!"
invocation_type = "shout"
diff --git a/code/modules/spells/spell_types/lightning.dm b/code/modules/spells/spell_types/lightning.dm
index f4812e7462..d0c3c4166c 100644
--- a/code/modules/spells/spell_types/lightning.dm
+++ b/code/modules/spells/spell_types/lightning.dm
@@ -3,7 +3,6 @@
desc = "Blast lightning at your foes!"
charge_type = "recharge"
charge_max = 270
- clothes_req = 1
invocation = "UN'LTD P'WAH!"
invocation_type = "shout"
range = 7
@@ -16,9 +15,9 @@
action_icon_state = "lightning"
-/obj/effect/proc_holder/spell/targeted/tesla/Click()
- if(!ready && cast_check())
- StartChargeup()
+/obj/effect/proc_holder/spell/targeted/tesla/Trigger(mob/user, skip_can_cast = TRUE)
+ if(!ready && cast_check(FALSE, user, skip_can_cast))
+ StartChargeup(user)
return 1
/obj/effect/proc_holder/spell/targeted/tesla/proc/StartChargeup(mob/user = usr)
diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm
index 621efdc821..8f39da5031 100644
--- a/code/modules/spells/spell_types/mime.dm
+++ b/code/modules/spells/spell_types/mime.dm
@@ -8,20 +8,20 @@
invocation_emote_self = "You form a wall in front of yourself. "
summon_lifespan = 300
charge_max = 300
- clothes_req = 0
+ clothes_req = NONE
range = 0
cast_sound = null
- human_req = 1
+ mobs_whitelist = list(/mob/living/carbon/human)
action_icon_state = "mime"
action_background_icon_state = "bg_mime"
-/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click()
- if(usr && usr.mind)
- if(!usr.mind.miming)
+/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Trigger(mob/user, skip_can_cast = TRUE)
+ if(user.mind)
+ if(!user.mind.miming)
to_chat(usr, "You must dedicate yourself to silence first. ")
return
- invocation = "[usr.real_name] looks as if a wall is in front of [usr.p_them()]."
+ invocation = "[user.real_name] looks as if a wall is in front of [user.p_them()]."
else
invocation_type ="none"
..()
@@ -32,8 +32,8 @@
desc = "Make or break a vow of silence."
school = "mime"
panel = "Mime"
- clothes_req = 0
- human_req = 1
+ clothes_req = NONE
+ mobs_whitelist = list(/mob/living/carbon/human)
charge_max = 3000
range = -1
include_user = 1
@@ -41,17 +41,12 @@
action_icon_state = "mime"
action_background_icon_state = "bg_mime"
-/obj/effect/proc_holder/spell/targeted/mime/speak/Click()
- if(!usr)
- return
- if(!ishuman(usr))
- return
- var/mob/living/carbon/human/H = usr
- if(H.mind.miming)
+/obj/effect/proc_holder/spell/targeted/mime/speak/Trigger(mob/user, skip_can_cast = TRUE)
+ if(user.mind?.miming)
still_recharging_msg = "You can't break your vow of silence that fast! "
else
still_recharging_msg = "You'll have to wait before you can give your vow of silence again! "
- ..()
+ return ..()
/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets,mob/user = usr)
for(var/mob/living/carbon/human/H in targets)
@@ -75,22 +70,22 @@
invocation_emote_self = "You form a blockade in front of yourself. "
charge_max = 600
sound = null
- clothes_req = 0
+ clothes_req = NONE
range = -1
include_user = 1
action_icon_state = "mime"
action_background_icon_state = "bg_mime"
-/obj/effect/proc_holder/spell/targeted/forcewall/mime/Click()
- if(usr && usr.mind)
- if(!usr.mind.miming)
+/obj/effect/proc_holder/spell/targeted/forcewall/mime/Trigger(mob/user, skip_can_cast = TRUE)
+ if(user.mind)
+ if(!user.mind.miming)
to_chat(usr, "You must dedicate yourself to silence first. ")
return
- invocation = "[usr.real_name] looks as if a blockade is in front of [usr.p_them()]."
+ invocation = "[user.real_name] looks as if a blockade is in front of [user.p_them()]."
else
invocation_type ="none"
- ..()
+ return ..()
/obj/effect/proc_holder/spell/aimed/finger_guns
name = "Finger Guns"
@@ -98,7 +93,7 @@
school = "mime"
panel = "Mime"
charge_max = 300
- clothes_req = 0
+ clothes_req = NONE
invocation_type = "emote"
invocation_emote_self = "You fire your finger gun! "
range = 20
@@ -114,19 +109,18 @@
base_icon_state = "mime"
-/obj/effect/proc_holder/spell/aimed/finger_guns/Click()
- var/mob/living/carbon/human/owner = usr
- if(owner.incapacitated())
- to_chat(owner, "You can't properly point your fingers while incapacitated. ")
+/obj/effect/proc_holder/spell/aimed/finger_guns/Trigger(mob/user, skip_can_cast = TRUE)
+ if(user.incapacitated())
+ to_chat(user, "You can't properly point your fingers while incapacitated. ")
return
- if(usr && usr.mind)
- if(!usr.mind.miming)
+ if(user.mind)
+ if(!user.mind.miming)
to_chat(usr, "You must dedicate yourself to silence first. ")
return
- invocation = "[usr.real_name] fires [usr.p_their()] finger gun!"
+ invocation = "[user.real_name] fires [user.p_their()] finger gun!"
else
invocation_type ="none"
- ..()
+ return ..()
/obj/effect/proc_holder/spell/targeted/touch/mimerope
name = "Invisible Rope"
@@ -144,8 +138,8 @@
action_background_icon_state = "bg_mime"
hand_path = /obj/item/melee/touch_attack/mimerope
-/obj/effect/proc_holder/spell/targeted/touch/mimerope/Click()
- if(usr && usr.mind)
+/obj/effect/proc_holder/spell/targeted/touch/mimerope/Trigger(mob/user, skip_can_cast = TRUE)
+ if(user.mind)
if(!usr.mind.miming)
to_chat(usr, "You must dedicate yourself to silence first. ")
return
diff --git a/code/modules/spells/spell_types/mind_transfer.dm b/code/modules/spells/spell_types/mind_transfer.dm
index cbc25fb98e..d2ef015d1d 100644
--- a/code/modules/spells/spell_types/mind_transfer.dm
+++ b/code/modules/spells/spell_types/mind_transfer.dm
@@ -4,7 +4,7 @@
school = "transmutation"
charge_max = 600
- clothes_req = 0
+ clothes_req = NONE
invocation = "GIN'YU CAPAN"
invocation_type = "whisper"
range = 1
diff --git a/code/modules/spells/spell_types/rod_form.dm b/code/modules/spells/spell_types/rod_form.dm
index 5a532db7ac..7a96d0ac55 100644
--- a/code/modules/spells/spell_types/rod_form.dm
+++ b/code/modules/spells/spell_types/rod_form.dm
@@ -1,8 +1,6 @@
/obj/effect/proc_holder/spell/targeted/rod_form
name = "Rod Form"
desc = "Take on the form of an immovable rod, destroying all in your path."
- clothes_req = 1
- human_req = 0
charge_max = 250
cooldown_min = 100
range = -1
diff --git a/code/modules/spells/spell_types/santa.dm b/code/modules/spells/spell_types/santa.dm
index 3da6d90558..64ed925455 100644
--- a/code/modules/spells/spell_types/santa.dm
+++ b/code/modules/spells/spell_types/santa.dm
@@ -4,7 +4,7 @@
desc = "This spell lets you reach into S-space and retrieve presents! Yay!"
school = "santa"
charge_max = 600
- clothes_req = 0
+ clothes_req = NONE
invocation = "HO HO HO"
invocation_type = "shout"
range = 3
diff --git a/code/modules/spells/spell_types/shadow_walk.dm b/code/modules/spells/spell_types/shadow_walk.dm
index 0b492cc6b0..83996b5bfb 100644
--- a/code/modules/spells/spell_types/shadow_walk.dm
+++ b/code/modules/spells/spell_types/shadow_walk.dm
@@ -2,7 +2,7 @@
name = "Shadow Walk"
desc = "Grants unlimited movement in darkness."
charge_max = 0
- clothes_req = 0
+ clothes_req = NONE
phase_allowed = 1
selection_type = "range"
range = -1
diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm
index 46eb14013f..c6966ccee9 100644
--- a/code/modules/spells/spell_types/shapeshift.dm
+++ b/code/modules/spells/spell_types/shapeshift.dm
@@ -1,8 +1,7 @@
/obj/effect/proc_holder/spell/targeted/shapeshift
name = "Shapechange"
desc = "Take on the shape of another for a time to use their natural abilities. Once you've made your choice it cannot be changed."
- clothes_req = 0
- human_req = 0
+ clothes_req = NONE
charge_max = 200
cooldown_min = 50
range = -1
@@ -59,8 +58,9 @@
var/mob/living/shape = new shapeshift_type(caster.loc)
H = new(shape,src,caster)
- clothes_req = 0
- human_req = 0
+ clothes_req = NONE
+ mobs_whitelist = null
+ mobs_blacklist = null
/obj/effect/proc_holder/spell/targeted/shapeshift/proc/Restore(mob/living/shape)
var/obj/shapeshift_holder/H = locate() in shape
@@ -70,7 +70,8 @@
H.restore()
clothes_req = initial(clothes_req)
- human_req = initial(human_req)
+ mobs_whitelist = typecacheof(initial(mobs_whitelist))
+ mobs_blacklist = typecacheof(initial(mobs_blacklist))
/obj/effect/proc_holder/spell/targeted/shapeshift/dragon
name = "Dragon Form"
diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm
index 7a19787675..3af4d3883f 100644
--- a/code/modules/spells/spell_types/spacetime_distortion.dm
+++ b/code/modules/spells/spell_types/spacetime_distortion.dm
@@ -11,7 +11,7 @@
cooldown_min = 300
level_max = 0
-/obj/effect/proc_holder/spell/spacetime_dist/can_cast(mob/user = usr)
+/obj/effect/proc_holder/spell/spacetime_dist/can_cast(mob/user = usr, skipcharge = FALSE, silent = FALSE)
if(ready)
return ..()
return FALSE
diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm
index d0e415fb2a..94de75faac 100644
--- a/code/modules/spells/spell_types/summonitem.dm
+++ b/code/modules/spells/spell_types/summonitem.dm
@@ -3,7 +3,7 @@
desc = "This spell can be used to recall a previously marked item to your hand from anywhere in the universe."
school = "transmutation"
charge_max = 100
- clothes_req = 0
+ clothes_req = NONE
invocation = "GAR YOK"
invocation_type = "whisper"
range = -1
@@ -105,7 +105,7 @@
if(item_to_retrieve.loc)
item_to_retrieve.loc.visible_message("The [item_to_retrieve.name] suddenly disappears! ")
- if(!L.put_in_hands(item_to_retrieve))
+ if(!isitem(item_to_retrieve) || !L.put_in_hands(item_to_retrieve))
item_to_retrieve.forceMove(L.drop_location())
item_to_retrieve.loc.visible_message("The [item_to_retrieve.name] suddenly appears! ")
playsound(get_turf(L), 'sound/magic/summonitems_generic.ogg', 50, 1)
diff --git a/code/modules/spells/spell_types/taeclowndo.dm b/code/modules/spells/spell_types/taeclowndo.dm
index d2b0782b07..5b1e09565b 100644
--- a/code/modules/spells/spell_types/taeclowndo.dm
+++ b/code/modules/spells/spell_types/taeclowndo.dm
@@ -4,7 +4,6 @@
invocation_type = "none"
include_user = 1
range = -1
- clothes_req = 0
item_type = /obj/item/reagent_containers/food/snacks/pie/cream
charge_max = 30
@@ -20,7 +19,7 @@
charge_type = "recharge"
charge_max = 100
cooldown_min = 100
- clothes_req = 0
+ clothes_req = NONE
invocation_type = "none"
range = 7
selection_type = "view"
@@ -61,7 +60,7 @@
hand_path = /obj/item/melee/touch_attack/megahonk
charge_max = 100
- clothes_req = 0
+ clothes_req = NONE
cooldown_min = 100
action_icon = 'icons/mecha/mecha_equipment.dmi'
@@ -75,7 +74,7 @@
hand_path = /obj/item/melee/touch_attack/bspie
charge_max = 450
- clothes_req = 0
+ clothes_req = NONE
cooldown_min = 450
action_icon = 'icons/obj/food/piecake.dmi'
diff --git a/code/modules/spells/spell_types/telepathy.dm b/code/modules/spells/spell_types/telepathy.dm
index 34f100f753..4b4f91eb18 100644
--- a/code/modules/spells/spell_types/telepathy.dm
+++ b/code/modules/spells/spell_types/telepathy.dm
@@ -2,7 +2,7 @@
name = "Telepathy"
desc = "Telepathically transmits a message to the target."
charge_max = 0
- clothes_req = 0
+ clothes_req = NONE
range = 7
include_user = 0
action_icon = 'icons/mob/actions/actions_revenant.dmi'
diff --git a/code/modules/spells/spell_types/the_traps.dm b/code/modules/spells/spell_types/the_traps.dm
index 7402dbfbc8..87928e6a7e 100644
--- a/code/modules/spells/spell_types/the_traps.dm
+++ b/code/modules/spells/spell_types/the_traps.dm
@@ -5,7 +5,6 @@
charge_max = 250
cooldown_min = 50
- clothes_req = 1
invocation = "CAVERE INSIDIAS"
invocation_type = "shout"
range = 3
diff --git a/code/modules/spells/spell_types/touch_attacks.dm b/code/modules/spells/spell_types/touch_attacks.dm
index e5b9144535..a23e16cf88 100644
--- a/code/modules/spells/spell_types/touch_attacks.dm
+++ b/code/modules/spells/spell_types/touch_attacks.dm
@@ -56,7 +56,6 @@
school = "evocation"
charge_max = 600
- clothes_req = 1
cooldown_min = 200 //100 deciseconds reduction per rank
action_icon_state = "gib"
@@ -68,7 +67,6 @@
school = "transmutation"
charge_max = 600
- clothes_req = 1
cooldown_min = 200 //100 deciseconds reduction per rank
action_icon_state = "statue"
@@ -81,7 +79,7 @@
school = "evocation"
charge_max = 100
- clothes_req = 0
+ clothes_req = NONE
cooldown_min = 20
action_icon_state = "nuclearfist"
diff --git a/code/modules/spells/spell_types/turf_teleport.dm b/code/modules/spells/spell_types/turf_teleport.dm
index 8a45f2be22..59f04c7039 100644
--- a/code/modules/spells/spell_types/turf_teleport.dm
+++ b/code/modules/spells/spell_types/turf_teleport.dm
@@ -1,7 +1,7 @@
/obj/effect/proc_holder/spell/targeted/turf_teleport
name = "Turf Teleport"
desc = "This spell teleports the target to the turf in range."
- nonabstract_req = 1
+ mobs_blacklist = list(/mob/living/brain, /mob/living/silicon/pai)
var/inner_tele_radius = 1
var/outer_tele_radius = 2
diff --git a/code/modules/spells/spell_types/voice_of_god.dm b/code/modules/spells/spell_types/voice_of_god.dm
index eb8950086c..495681a818 100644
--- a/code/modules/spells/spell_types/voice_of_god.dm
+++ b/code/modules/spells/spell_types/voice_of_god.dm
@@ -4,7 +4,7 @@
charge_max = 1200 //variable
cooldown_min = 0
level_max = 1
- clothes_req = 0
+ clothes_req = NONE
action_icon = 'icons/mob/actions/actions_items.dmi'
action_icon_state = "voice_of_god"
var/command
@@ -13,9 +13,10 @@
var/list/spans = list("colossus","yell")
var/speech_sound = 'sound/magic/clockwork/invoke_general.ogg'
-/obj/effect/proc_holder/spell/voice_of_god/can_cast(mob/user = usr)
+/obj/effect/proc_holder/spell/voice_of_god/can_cast(mob/user = usr, skipcharge = FALSE, silent = TRUE)
if(!user.can_speak())
- to_chat(user, "You are unable to speak! ")
+ if(!silent)
+ to_chat(user, "You are unable to speak! ")
return FALSE
return TRUE
diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm
index 405bde212a..ace542126c 100644
--- a/code/modules/spells/spell_types/wizard.dm
+++ b/code/modules/spells/spell_types/wizard.dm
@@ -4,7 +4,6 @@
school = "evocation"
charge_max = 200
- clothes_req = 1
invocation = "FORTI GY AMA"
invocation_type = "shout"
range = 7
@@ -38,7 +37,6 @@
school = "transmutation"
charge_max = 400
- clothes_req = 1
invocation = "BIRUZ BENNAR"
invocation_type = "shout"
range = -1
@@ -58,7 +56,7 @@
school = "conjuration"
charge_max = 120
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = -1
@@ -77,7 +75,7 @@
school = "conjuration"
charge_max = 360
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = -1
@@ -92,7 +90,6 @@
name = "Disable Tech"
desc = "This spell disables all weapons, cameras and most other technology in range."
charge_max = 400
- clothes_req = 1
invocation = "NEC CANTIO"
invocation_type = "shout"
range = -1
@@ -109,7 +106,6 @@
school = "abjuration"
charge_max = 20
- clothes_req = 1
invocation = "none"
invocation_type = "none"
range = -1
@@ -131,8 +127,7 @@
name = "quickstep"
charge_max = 100
- clothes_req = 0
- cult_req = 1
+ clothes_req = SPELL_CULT_GARB
/obj/effect/proc_holder/spell/targeted/area_teleport/teleport
name = "Teleport"
@@ -140,7 +135,6 @@
school = "abjuration"
charge_max = 600
- clothes_req = 1
invocation = "SCYAR NILA"
invocation_type = "shout"
range = -1
@@ -156,7 +150,6 @@
name = "Stop Time"
desc = "This spell stops time for everyone except for you, allowing you to move freely while your enemies and even projectiles are frozen."
charge_max = 500
- clothes_req = 1
invocation = "TOKI YO TOMARE"
invocation_type = "shout"
range = 0
@@ -174,7 +167,6 @@
school = "conjuration"
charge_max = 1200
- clothes_req = 1
invocation = "NOUK FHUNMM SACP RISSKA"
invocation_type = "shout"
range = 1
@@ -189,7 +181,7 @@
school = "conjuration"
charge_max = 600
- clothes_req = 0
+ clothes_req = NONE
invocation = "none"
invocation_type = "none"
range = 0
@@ -206,7 +198,7 @@
school = "conjuration"
charge_max = 1200
- clothes_req = 0
+ clothes_req = NONE
invocation = "IA IA"
invocation_type = "shout"
summon_amt = 10
@@ -221,7 +213,7 @@
school = "transmutation"
charge_max = 300
- clothes_req = 0
+ clothes_req = NONE
invocation = "STI KALY"
invocation_type = "whisper"
message = "Your eyes cry out in pain! "
@@ -233,7 +225,7 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/creature/cult
name = "Summon Creatures (DANGEROUS)"
- cult_req = 1
+ clothes_req = SPELL_CULT_GARB
charge_max = 5000
summon_amt = 2
@@ -253,7 +245,6 @@
name = "Repulse"
desc = "This spell throws everything around the user away."
charge_max = 400
- clothes_req = 1
invocation = "GITTAH WEIGH"
invocation_type = "shout"
range = 5
@@ -314,7 +305,7 @@
desc = "Throw back attackers with a sweep of your tail."
sound = 'sound/magic/tail_swing.ogg'
charge_max = 150
- clothes_req = 0
+ clothes_req = NONE
range = 2
cooldown_min = 150
invocation_type = "none"
@@ -335,7 +326,7 @@
name = "Sacred Flame"
desc = "Makes everyone around you more flammable, and lights yourself on fire."
charge_max = 60
- clothes_req = 0
+ clothes_req = NONE
invocation = "FI'RAN DADISKO"
invocation_type = "shout"
max_targets = 0
@@ -358,7 +349,7 @@
/obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket
name = "Thrown Lightning"
desc = "Forged from eldrich energies, a packet of pure power, known as a spell packet will appear in your hand, that when thrown will stun the target."
- clothes_req = 1
+ clothes_req = SPELL_WIZARD_GARB
item_type = /obj/item/spellpacket/lightningbolt
charge_max = 10
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index 4b169173ed..54f2aef10d 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -436,7 +436,7 @@
if(!isnull(body_markings) && status == BODYPART_ORGANIC)
if(!use_digitigrade)
- if(BODY_ZONE_CHEST)
+ if(body_zone == BODY_ZONE_CHEST)
. += image(body_markings_icon, "[body_markings]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir)
else
. += image(body_markings_icon, "[body_markings]_[body_zone]", -MARKING_LAYER, image_dir)
diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm
index 73225fc41c..117a45cdbc 100755
--- a/code/modules/surgery/organs/liver.dm
+++ b/code/modules/surgery/organs/liver.dm
@@ -1,7 +1,6 @@
#define LIVER_DEFAULT_HEALTH 100 //amount of damage required for liver failure
#define LIVER_DEFAULT_TOX_TOLERANCE 3 //amount of toxins the liver can filter out
#define LIVER_DEFAULT_TOX_LETHALITY 0.01 //lower values lower how harmful toxins are to the liver
-#define LIVER_SWELLING_MOVE_MODIFY "pharma"
/obj/item/organ/liver
name = "liver"
@@ -15,12 +14,14 @@
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY
+ high_threshold_passed = "You feel a stange ache in your abdomen, almost like a stitch. This pain is encumbering your movements. "
+ high_threshold_cleared = "The stitching ache in your abdomen passes away, unencumbering your movements. "
+ now_fixed = "The stabbing pain in your abdomen slowly calms down into a more tolerable ache. "
+
var/alcohol_tolerance = ALCOHOL_RATE//affects how much damage the liver takes from alcohol
- var/failing //is this liver failing?
var/toxTolerance = LIVER_DEFAULT_TOX_TOLERANCE//maximum amount of toxins the liver can just shrug off
var/toxLethality = LIVER_DEFAULT_TOX_LETHALITY//affects how much damage toxins do to the liver
var/filterToxins = TRUE //whether to filter toxins
- var/swelling = 0
var/cachedmoveCalc = 1
/obj/item/organ/liver/on_life()
@@ -28,8 +29,6 @@
if(istype(C))
if(!(organ_flags & ORGAN_FAILING))//can't process reagents with a failing liver
- //slowly heal liver damage
- damage = max(0, damage - 0.1)
if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER))
//handle liver toxin filtration
@@ -46,42 +45,41 @@
if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability
to_chat(C, "You feel a dull pain in your abdomen. ")
- if(damage > maxHealth)//cap liver damage
- damage = maxHealth
-
- if(swelling >= 10)
- pharmacokinesis()
-
/obj/item/organ/liver/prepare_eat()
var/obj/S = ..()
S.reagents.add_reagent(/datum/reagent/iron, 5)
return S
-//Just in case
+/obj/item/organ/liver/applyOrganDamage(d, maximum = maxHealth)
+ . = ..()
+ if(!.)
+ return
+ if(damage >= high_threshold)
+ var/move_calc = 1+((round(damage) - high_threshold)/(high_threshold/3))
+ owner.add_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = move_calc)
+ sizeMoveMod(move_calc, owner)
+ else
+ owner.remove_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS)
+ sizeMoveMod(1, owner)
+
+/obj/item/organ/liver/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE)
+ . = ..()
+ if(. && damage >= high_threshold)
+ var/move_calc = 1+((round(damage) - high_threshold)/(high_threshold/3))
+ M.add_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = move_calc)
+ sizeMoveMod(move_calc, owner)
+
/obj/item/organ/liver/Remove(special = FALSE)
if(!QDELETED(owner))
- owner.remove_movespeed_modifier(LIVER_SWELLING_MOVE_MODIFY)
- owner.ResetBloodVol() //At the moment, this shouldn't allow application twice. You either have this OR a thirsty ferret.
+ owner.remove_movespeed_modifier(MOVESPEED_ID_CIRRHOSIS)
sizeMoveMod(1, owner)
return ..()
-//Applies some of the effects to the patient.
-/obj/item/organ/liver/proc/pharmacokinesis()
- var/moveCalc = 1+((round(swelling) - 9)/3)
- if(moveCalc == cachedmoveCalc)//reduce calculations
- return
- if(prob(5))
- to_chat(owner, "You feel a stange ache in your side, almost like a stitch. This pain is affecting your movements and making you feel lightheaded. ")
- var/mob/living/carbon/human/H = owner
- H.add_movespeed_modifier(LIVER_SWELLING_MOVE_MODIFY, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
- H.AdjustBloodVol(moveCalc/3)
- sizeMoveMod(moveCalc, H)
-
-/obj/item/organ/liver/proc/sizeMoveMod(var/value, mob/living/carbon/human/H)
+/obj/item/organ/liver/proc/sizeMoveMod(value, mob/living/carbon/C)
if(cachedmoveCalc == value)
return
- H.next_move_modifier /= cachedmoveCalc
- H.next_move_modifier *= value
+ C.next_move_modifier /= cachedmoveCalc
+ C.next_move_modifier *= value
cachedmoveCalc = value
/obj/item/organ/liver/fly
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index b091af0f92..d95901bdbe 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -143,8 +143,9 @@
var/healing_amount = -(maxHealth * 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
- applyOrganDamage(healing_amount) //to FERMI_TWEAK
- //Make it so each threshold is stuck.
+ if(healing_amount)
+ applyOrganDamage(healing_amount) //to FERMI_TWEAK
+ //Make it so each threshold is stuck.
/obj/item/organ/examine(mob/user)
. = ..()
@@ -205,14 +206,15 @@
///Adjusts an organ's damage by the amount "d", up to a maximum amount, which is by default max damage
/obj/item/organ/proc/applyOrganDamage(var/d, var/maximum = maxHealth) //use for damaging effects
if(!d) //Micro-optimization.
- return
+ return FALSE
if(maximum < damage)
- return
+ return FALSE
damage = CLAMP(damage + d, 0, maximum)
- var/mess = check_damage_thresholds(owner)
+ var/mess = check_damage_thresholds()
prev_damage = damage
if(mess && owner)
to_chat(owner, mess)
+ return TRUE
///SETS an organ's damage to the amount "d", and in doing so clears or sets the failing flag, good for when you have an effect that should fix an organ if broken
/obj/item/organ/proc/setOrganDamage(var/d) //use mostly for admin heals
@@ -224,7 +226,7 @@
* description: By checking our current damage against our previous damage, we can decide whether we've passed an organ threshold.
* If we have, send the corresponding threshold message to the owner, if such a message exists.
*/
-/obj/item/organ/proc/check_damage_thresholds(var/M)
+/obj/item/organ/proc/check_damage_thresholds()
if(damage == prev_damage)
return
var/delta = damage - prev_damage
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 7c849dbd68..671d31530a 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -74,7 +74,7 @@
..()
cords = target
-/datum/action/item_action/organ_action/colossus/IsAvailable()
+/datum/action/item_action/organ_action/colossus/IsAvailable(silent = FALSE)
if(world.time < cords.next_command)
return FALSE
if(!owner)
@@ -632,7 +632,7 @@
..()
cords = target
-/datum/action/item_action/organ_action/velvet/IsAvailable()
+/datum/action/item_action/organ_action/velvet/IsAvailable(silent = FALSE)
return TRUE
/datum/action/item_action/organ_action/velvet/Trigger()
diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm
index ce9de95b4c..c4e056583c 100644
--- a/code/modules/surgery/plastic_surgery.dm
+++ b/code/modules/surgery/plastic_surgery.dm
@@ -40,7 +40,6 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.sec_hud_set_ID()
- return 1
return TRUE
/datum/surgery_step/reshape_face/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/uplink/uplink_items/uplink_ammo.dm b/code/modules/uplink/uplink_items/uplink_ammo.dm
index 15bb47af91..4a7e1f146e 100644
--- a/code/modules/uplink/uplink_items/uplink_ammo.dm
+++ b/code/modules/uplink/uplink_items/uplink_ammo.dm
@@ -15,6 +15,12 @@
cost = 1
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
+/datum/uplink_item/ammo/pistol/box
+ name = "Ammo Box - 10mm"
+ desc = "An additional box of 10mm ammo. The box has 20 cases inside, does not come with a magazine."
+ item = /obj/item/ammo_box/c10mm
+ illegal_tech = FALSE
+
/datum/uplink_item/ammo/pistolap
name = "10mm Armour Piercing Magazine"
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \
@@ -23,6 +29,12 @@
cost = 2
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
+/datum/uplink_item/ammo/pistolap/box
+ name = "Ammo Box - 10mm Armour Piercing"
+ desc = "An additional box of 10mm Armour Piercing ammo. The box has 20 cases inside, does not come with a magazine."
+ item = /obj/item/ammo_box/c10mm/ap
+ illegal_tech = FALSE
+
/datum/uplink_item/ammo/pistolhp
name = "10mm Hollow Point Magazine"
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \
@@ -31,6 +43,12 @@
cost = 3
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
+/datum/uplink_item/ammo/pistolhp/box
+ name = "Ammo Box - 10mm Hollow Point"
+ desc = "An additional box of 10mm Hollow Point ammo. The box has 20 cases inside, does not come with a magazine."
+ item = /obj/item/ammo_box/c10mm/hp
+ illegal_tech = FALSE
+
/datum/uplink_item/ammo/pistolfire
name = "10mm Incendiary Magazine"
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \
@@ -39,6 +57,12 @@
cost = 2
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
+/datum/uplink_item/ammo/pistolfire/box
+ name = "Ammo Box - 10mm Incendiary"
+ desc = "An additional box of 10mm Incendiary ammo. The box has 20 cases inside, does not come with a magazine."
+ item = /obj/item/ammo_box/magazine/m10mm/fire
+ illegal_tech = FALSE
+
/datum/uplink_item/ammo/pistolzzz
name = "10mm Soporific Magazine"
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. Loaded with soporific rounds that put the target to sleep. \
@@ -46,6 +70,12 @@
item = /obj/item/ammo_box/magazine/m10mm/soporific
cost = 2
+/datum/uplink_item/ammo/pistolzzz/box
+ name = "Ammo Box - 10mm Soporific"
+ desc = "An additional box of 10mm Soporific ammo. The box has 20 cases inside, does not come with a magazine."
+ item = /obj/item/ammo_box/c10mm/soporific
+ illegal_tech = FALSE
+
/datum/uplink_item/ammo/shotgun
cost = 2
include_modes = list(/datum/game_mode/nuclear)
@@ -212,6 +242,12 @@
cost = 2
include_modes = list(/datum/game_mode/nuclear)
+/datum/uplink_item/ammo/pistolaps
+ name = "Ammo Box - 9mm"
+ desc = "An additional box of 9mm ammo. The box has 30 cases inside, does not come with a magazine."
+ item = /obj/item/ammo_box/c9mm
+ illegal_tech = FALSE
+
/datum/uplink_item/ammo/flechetteap
name = "Armor Piercing Flechette Magazine"
desc = "An additional 40-round flechette magazine; compatible with the Flechette Launcer. \
diff --git a/code/modules/uplink/uplink_items/uplink_clothing.dm b/code/modules/uplink/uplink_items/uplink_clothing.dm
index aad9834612..d6336bd982 100644
--- a/code/modules/uplink/uplink_items/uplink_clothing.dm
+++ b/code/modules/uplink/uplink_items/uplink_clothing.dm
@@ -83,4 +83,10 @@
name = "Thieving Gloves"
desc = "A pair of gloves that are insulated and frictionless, allowing you to steal easily from anyone you see."
item = /obj/item/clothing/gloves/thief
- cost = 4
\ No newline at end of file
+ cost = 4
+
+/datum/uplink_item/suits/wallwalkers
+ name = "Wall Walking Boots"
+ desc = "Through bluespace magic stolen from an organisation that hoards technology, these boots simply allow you to slip through the atoms that make up anything, but only while walking, for safety reasons. As well as this, they unfortunately cause minor breath loss as the majority of atoms in your lungs are sucked out into any solid object you walk through."
+ item = /obj/item/clothing/shoes/wallwalkers
+ cost = 6
\ No newline at end of file
diff --git a/code/modules/uplink/uplink_items/uplink_dangerous.dm b/code/modules/uplink/uplink_items/uplink_dangerous.dm
index 819ba51623..c798aa5cd9 100644
--- a/code/modules/uplink/uplink_items/uplink_dangerous.dm
+++ b/code/modules/uplink/uplink_items/uplink_dangerous.dm
@@ -9,9 +9,9 @@
/datum/uplink_item/dangerous/pistol
name = "Stechkin Pistol"
- desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \
+ desc = "A sleek box containing a small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines. The handgun is compatible \
with suppressors."
- item = /obj/item/gun/ballistic/automatic/pistol
+ item = /obj/item/storage/box/syndie_kit/pistol
cost = 7
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
@@ -174,10 +174,13 @@
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/dangerous/rapid
- name = "Gloves of the North Star"
- desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed or the meaty fists of a hulk."
- item = /obj/item/clothing/gloves/rapid
- cost = 8
+ name = "Bands of the North Star"
+ desc = "These armbands let the user punch people very fast and with the lethality of a legendary martial artist. \
+ Does not improve weapon attack speed or the meaty fists of a hulk, but you will be unmatched in martial power. \
+ Combines with all martial arts, but the user will be unable to bring themselves to use guns, nor remove the armbands."
+ item = /obj/item/clothing/gloves/fingerless/pugilist/rapid
+ cost = 30
+ include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/dangerous/guardian
name = "Holoparasites"
diff --git a/code/modules/uplink/uplink_items/uplink_devices.dm b/code/modules/uplink/uplink_items/uplink_devices.dm
index 06fd9aab43..194281ded6 100644
--- a/code/modules/uplink/uplink_items/uplink_devices.dm
+++ b/code/modules/uplink/uplink_items/uplink_devices.dm
@@ -20,6 +20,12 @@
item = /obj/item/emagrecharge
cost = 2
+/datum/uplink_item/device_tools/bluespacerecharge
+ name = "Bluespace Crystal Recharging Device"
+ desc = "A small device intended for recharging Wall Walking boots. Using it will add six charges to them. Use ten bluespace crystals on this recharger to add three more charges to it. "
+ item = /obj/item/bluespacerecharge
+ cost = 2
+
/datum/uplink_item/device_tools/phantomthief
name = "Syndicate Mask"
desc = "A cheap plastic mask fitted with an adrenaline autoinjector, which can be used by simply tensing your muscles"
@@ -185,8 +191,9 @@
/datum/uplink_item/device_tools/stimpack
name = "Stimpack"
desc = "Stimpacks, the tool of many great heroes, make you nearly immune to stuns and knockdowns for about \
- 5 minutes after injection."
- item = /obj/item/reagent_containers/syringe/stimulants
+ 5 minutes after fully injecting yourself. Can inject yourself, or others, 5 times and through hardsuits. \
+ Each injection will gives around a minute of stimulants."
+ item = /obj/item/reagent_containers/hypospray/medipen/stimulants
cost = 5
surplus = 90
diff --git a/code/modules/uplink/uplink_items/uplink_roles.dm b/code/modules/uplink/uplink_items/uplink_roles.dm
index 3d28010133..778edf8cc8 100644
--- a/code/modules/uplink/uplink_items/uplink_roles.dm
+++ b/code/modules/uplink/uplink_items/uplink_roles.dm
@@ -92,6 +92,22 @@
restricted_roles = list("Chaplain")
surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain
+/datum/uplink_item/role_restricted/clockwork_slab
+ name = "Clockwork Slab"
+ desc = "A reverse engineered clockwork slab. Is this really a good idea?."
+ item = /obj/item/clockwork/slab/traitor
+ cost = 20
+ refundable = TRUE
+ restricted_roles = list("Chaplain")
+
+/datum/uplink_item/role_restricted/arcane_tome
+ name = "Arcane Tome"
+ desc = "A replica of a Nar'sian tome. This is probably a bad idea.."
+ item = /obj/item/tome/traitor
+ cost = 20
+ refundable = TRUE
+ restricted_roles = list("Chaplain")
+
/datum/uplink_item/role_restricted/explosive_hot_potato
name = "Exploding Hot Potato"
desc = "A potato rigged with explosives. On activation, a special mechanism is activated that prevents it from being dropped. \
diff --git a/code/modules/uplink/uplink_items/uplink_stealth.dm b/code/modules/uplink/uplink_items/uplink_stealth.dm
index 80aba02e2e..b4933b30ba 100644
--- a/code/modules/uplink/uplink_items/uplink_stealth.dm
+++ b/code/modules/uplink/uplink_items/uplink_stealth.dm
@@ -51,6 +51,7 @@
gain skin as hard as steel and swat bullets from the air, but you also refuse to use dishonorable ranged weaponry."
item = /obj/item/book/granter/martial/carp
cost = 17
+ player_minimum = 30
surplus = 0
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
@@ -60,6 +61,7 @@
and dodging all ranged weapon fire, but you will refuse to use dishonorable ranged weaponry."
item = /obj/item/book/granter/martial/bass
cost = 18
+ player_minimum = 30
surplus = 0
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index cb53574653..1fb037d1c5 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -40,11 +40,22 @@
. = ..()
/obj/vehicle/ridden/scooter/skateboard
- name = "skateboard"
- desc = "An unfinished scooter which can only barely be called a skateboard. It's still rideable, but probably unsafe. Looks like you'll need to add a few rods to make handlebars. Alt-click to adjust speed."
+ name = "improvised skateboard"
+ desc = "An unfinished scooter which can only barely be called a skateboard. It's still rideable, but probably unsafe. Looks like you'll need to add a few rods to make handlebars."
icon_state = "skateboard"
density = FALSE
- var/adjusted_speed = FALSE
+ arms_required = 0
+ var/datum/effect_system/spark_spread/sparks
+ ///Whether the board is currently grinding
+ var/grinding = FALSE
+ ///Stores the time of the last crash plus a short cooldown, affects availability and outcome of certain actions
+ var/next_crash
+ ///Stores the default icon state
+ var/board_icon = "skateboard"
+ ///The handheld item counterpart for the board
+ var/board_item_type = /obj/item/melee/skateboard
+ ///Stamina drain multiplier
+ var/instability = 10
/obj/vehicle/ridden/scooter/skateboard/Initialize()
. = ..()
@@ -54,6 +65,23 @@
D.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
D.set_vehicle_dir_layer(EAST, OBJ_LAYER)
D.set_vehicle_dir_layer(WEST, OBJ_LAYER)
+ sparks = new
+ sparks.set_up(1, 0, src)
+ sparks.attach(src)
+
+/obj/vehicle/ridden/scooter/skateboard/Destroy()
+ if(sparks)
+ QDEL_NULL(sparks)
+ . = ..()
+
+/obj/vehicle/ridden/scooter/skateboard/relaymove()
+ if (grinding || world.time < next_crash)
+ return FALSE
+ return ..()
+
+/obj/vehicle/ridden/scooter/skateboard/generate_actions()
+ . = ..()
+ initialize_controller_action_type(/datum/action/vehicle/ridden/scooter/skateboard/ollie, VEHICLE_CONTROL_DRIVE)
/obj/vehicle/ridden/scooter/skateboard/post_buckle_mob(mob/living/M)//allows skateboards to be non-dense but still allows 2 skateboarders to collide with each other
density = TRUE
@@ -68,17 +96,49 @@
. = ..()
if(A.density && has_buckled_mobs())
var/mob/living/H = buckled_mobs[1]
- var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals))
- unbuckle_mob(H)
- H.throw_at(throw_target, 4, 3)
- H.DefaultCombatKnockdown(100)
- H.adjustStaminaLoss(40)
- var/head_slot = H.get_item_by_slot(SLOT_HEAD)
- if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat)))
- H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3)
- H.updatehealth()
- visible_message("[src] crashes into [A], sending [H] flying! ")
- playsound(src, 'sound/effects/bang.ogg', 50, 1)
+ H.adjustStaminaLoss(instability*6)
+ playsound(src, 'sound/effects/bang.ogg', 40, TRUE)
+ if(!iscarbon(H) || H.getStaminaLoss() >= 100 || grinding || world.time < next_crash)
+ var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals))
+ unbuckle_mob(H)
+ H.throw_at(throw_target, 3, 2)
+ var/head_slot = H.get_item_by_slot(SLOT_HEAD)
+ if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat)))
+ H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
+ H.updatehealth()
+ visible_message("[src] crashes into [A], sending [H] flying! ")
+ H.Knockdown(80)
+ else
+ var/backdir = turn(dir, 180)
+ vehicle_move(backdir)
+ H.spin(4, 1)
+ next_crash = world.time + 10
+
+///Moves the vehicle forward and if it lands on a table, repeats
+/obj/vehicle/ridden/scooter/skateboard/proc/grind()
+ vehicle_move(dir)
+ if(has_buckled_mobs() && locate(/obj/structure/table) in loc.contents)
+ var/mob/living/L = buckled_mobs[1]
+ L.adjustStaminaLoss(instability*0.5)
+ if (L.getStaminaLoss() >= 100)
+ playsound(src, 'sound/effects/bang.ogg', 20, TRUE)
+ unbuckle_mob(L)
+ var/atom/throw_target = get_edge_target_turf(src, pick(GLOB.cardinals))
+ L.throw_at(throw_target, 2, 2)
+ visible_message("[L] loses [L.p_their()] footing and slams on the ground! ")
+ L.Knockdown(40)
+ grinding = FALSE
+ icon_state = board_icon
+ return
+ else
+ playsound(src, 'sound/vehicles/skateboard_roll.ogg', 50, TRUE)
+ if(prob (25))
+ sparks.start() //the most radical way to start plasma fires
+ addtimer(CALLBACK(src, .proc/grind), 2)
+ return
+ else
+ grinding = FALSE
+ icon_state = board_icon
/obj/vehicle/ridden/scooter/skateboard/MouseDrop(atom/over_object)
. = ..()
@@ -89,22 +149,42 @@
to_chat(M, "You can't lift this up when somebody's on it. ")
return
if(over_object == M)
- var/obj/item/melee/skateboard/board = new /obj/item/melee/skateboard()
+ var/board = new board_item_type(get_turf(M))
M.put_in_hands(board)
qdel(src)
-/obj/vehicle/ridden/scooter/skateboard/AltClick(mob/user)
- . = ..()
- var/datum/component/riding/R = src.GetComponent(/datum/component/riding)
- if (!adjusted_speed)
- R.vehicle_move_delay = 0
- to_chat(user, "You adjust the wheels on [src] to make it go faster. ")
- adjusted_speed = TRUE
+/obj/vehicle/ridden/scooter/skateboard/pro
+ name = "skateboard"
+ desc = "A RaDSTORMz brand professional skateboard. Looks a lot more stable than the average board."
+ icon_state = "skateboard2"
+ board_icon = "skateboard2"
+ board_item_type = /obj/item/melee/skateboard/pro
+ instability = 6
+
+/obj/vehicle/ridden/scooter/skateboard/hoverboard/
+ name = "hoverboard"
+ desc = "A blast from the past, so retro!"
+ board_item_type = /obj/item/melee/skateboard/hoverboard
+ instability = 3
+ icon_state = "hoverboard_red"
+ board_icon = "hoverboard_red"
+
+/obj/vehicle/ridden/scooter/skateboard/hoverboard/screwdriver_act(mob/living/user, obj/item/I)
+ return FALSE
+
+/obj/vehicle/ridden/scooter/skateboard/hoverboard/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/stack/rods))
+ return
else
- R.vehicle_move_delay = 1
- to_chat(user, "You adjust the wheels on [src] to make it go slower. ")
- adjusted_speed = FALSE
- return TRUE
+ return ..()
+
+/obj/vehicle/ridden/scooter/skateboard/hoverboard/admin
+ name = "\improper Board Of Directors"
+ desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too."
+ board_item_type = /obj/item/melee/skateboard/hoverboard/admin
+ instability = 0
+ icon_state = "hoverboard_nt"
+ board_icon = "hoverboard_nt"
//CONSTRUCTION
/obj/item/scooter_frame
diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm
index c780ce6fd3..5de2c8961f 100644
--- a/code/modules/vehicles/vehicle_actions.dm
+++ b/code/modules/vehicles/vehicle_actions.dm
@@ -164,3 +164,41 @@
if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar))
var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target
C.RollTheDice(owner)
+
+
+/datum/action/vehicle/ridden/scooter/skateboard/ollie
+ name = "Ollie"
+ desc = "Get some air! Land on a table to do a gnarly grind."
+ button_icon_state = "skateboard_ollie"
+ ///Cooldown to next jump
+ var/next_ollie
+
+/datum/action/vehicle/ridden/scooter/skateboard/ollie/Trigger()
+ if(world.time > next_ollie)
+ var/obj/vehicle/ridden/scooter/skateboard/V = vehicle_target
+ if (V.grinding)
+ return
+ var/mob/living/L = owner
+ var/turf/landing_turf = get_step(V.loc, V.dir)
+ L.adjustStaminaLoss(V.instability*2)
+ if (L.getStaminaLoss() >= 100)
+ playsound(src, 'sound/effects/bang.ogg', 20, TRUE)
+ V.unbuckle_mob(L)
+ L.throw_at(landing_turf, 2, 2)
+ L.Knockdown(40)
+ V.visible_message("[L] misses the landing and falls on [L.p_their()] face! ")
+ else
+ L.spin(4, 1)
+ animate(L, pixel_y = -6, time = 4)
+ animate(V, pixel_y = -6, time = 3)
+ playsound(V, 'sound/vehicles/skateboard_ollie.ogg', 50, TRUE)
+ passtable_on(L, VEHICLE_TRAIT)
+ V.pass_flags |= PASSTABLE
+ L.Move(landing_turf, vehicle_target.dir)
+ passtable_off(L, VEHICLE_TRAIT)
+ V.pass_flags &= ~PASSTABLE
+ if(locate(/obj/structure/table) in V.loc.contents)
+ V.grinding = TRUE
+ V.icon_state = "[V.board_icon]-grind"
+ addtimer(CALLBACK(V, /obj/vehicle/ridden/scooter/skateboard/.proc/grind), 2)
+ next_ollie = world.time + 5
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 8a62c19e16..4f7502bb02 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -16,12 +16,26 @@
IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY CANISTER CHARGES in vending_items.dm
*/
+#define MAX_VENDING_INPUT_AMOUNT 30
+/**
+ * # vending record datum
+ *
+ * A datum that represents a product that is vendable
+ */
/datum/data/vending_product
name = "generic"
+ ///Typepath of the product that is created when this record "sells"
var/product_path = null
+ ///How many of this product we currently have
var/amount = 0
+ ///How many we can store at maximum
var/max_amount = 0
+/**
+ * # vending machines
+ *
+ * Captalism in the year 2525, everything in a vending machine, even love
+ */
/obj/machinery/vending
name = "\improper Vendomat"
desc = "A generic vending machine."
@@ -36,43 +50,117 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
integrity_failure = 0.33
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
circuit = /obj/item/circuitboard/machine/vendor
- var/active = 1 //No sales pitches if off!
- var/vend_ready = 1 //Are we ready to vend?? Is it time??
+ light_power = 0.5
+ light_range = MINIMUM_USEFUL_LIGHT_RANGE
+ /// Is the machine active (No sales pitches if off)!
+ var/active = TRUE
+ ///Are we ready to vend?? Is it time??
+ var/vend_ready = TRUE
+ ///Next world time to send a purchase message
+ var/purchase_message_cooldown
+ ///Last mob to shop with us
- // To be filled out at compile time
- var/list/products = list() //For each, use the following pattern:
- var/list/contraband = list() //list(/type/path = amount, /type/path2 = amount2)
- var/list/premium = list() //No specified amount = only one in stock
+ /**
+ * List of products this machine sells
+ *
+ * form should be list(/type/path = amount, /type/path2 = amount2)
+ */
+ var/list/products = list()
+
+ /**
+ * List of products this machine sells when you hack it
+ *
+ * form should be list(/type/path = amount, /type/path2 = amount2)
+ */
+ var/list/contraband = list()
+
+ /**
+ * List of premium products this machine sells
+ *
+ * form should be list(/type/path, /type/path2) as there is only ever one in stock
+ */
+ var/list/premium = list()
+
+ ///String of slogans separated by semicolons, optional
+ var/product_slogans = ""
+ ///String of small ad messages in the vending screen - random chance
+ var/product_ads = ""
- var/product_slogans = "" //String of slogans separated by semicolons, optional
- var/product_ads = "" //String of small ad messages in the vending screen - random chance
var/list/product_records = list()
var/list/hidden_records = list()
var/list/coin_records = list()
var/list/slogan_list = list()
- var/list/small_ads = list() //Small ad messages in the vending screen - random chance of popping up whenever you open it
- var/vend_reply //Thank you for shopping!
- var/last_reply = 0
- var/last_slogan = 0 //When did we last pitch?
- var/slogan_delay = 6000 //How long until we can pitch again?
- var/icon_vend //Icon_state when vending!
- var/icon_deny //Icon_state when vending!
- var/seconds_electrified = 0 //Shock customers like an airlock.
- var/shoot_inventory = 0 //Fire items at customers! We're broken!
- var/shoot_inventory_chance = 2
- var/shut_up = 0 //Stop spouting those godawful pitches!
- var/extended_inventory = 0 //can we access the hidden inventory?
- var/scan_id = 1
- var/obj/item/coin/coin
- var/obj/item/stack/spacecash/bill
-
- var/static/vending_cache = list() //used for storing the icons of items being vended
-
+ ///Small ad messages in the vending screen - random chance of popping up whenever you open it
+ var/list/small_ads = list()
var/dish_quants = list() //used by the snack machine's custom compartment to count dishes.
+ ///Message sent post vend (Thank you for shopping!)
+ var/vend_reply
+ ///Last world tick we sent a vent reply
+ var/last_reply
+ ///Last world tick we sent a slogan message out
+ var/last_slogan
+ var/last_shopper
+ ///How many ticks until we can send another
+ var/slogan_delay = 6000
+ ///Icon when vending an item to the user
+ var/icon_vend
+ ///Icon to flash when user is denied a vend
+ var/icon_deny
+ ///World ticks the machine is electified for
+ var/seconds_electrified = MACHINE_NOT_ELECTRIFIED
+ ///When this is TRUE, we fire items at customers! We're broken!
+ var/shoot_inventory
+ ///How likely this is to happen (prob 100)
+ var/shoot_inventory_chance = 2
+ //Stop spouting those godawful pitches!
+ var/shut_up
+ ///can we access the hidden inventory?
+ var/extended_inventory
+ ///Are we checking the users ID
+ var/scan_id = TRUE
+ ///Coins that we accept?
+ var/obj/item/coin/coin
+ ///Default price of items if not overridden
+ /**
+ * Is this item on station or not
+ *
+ * if it doesn't originate from off-station during mapload, everything is free
+ */
+ var/onstation = TRUE //if it doesn't originate from off-station during mapload, everything is free
+ ///A variable to change on a per instance basis on the map that allows the instance to force cost and ID requirements
+ var/onstation_override = FALSE //change this on the object on the map to override the onstation check. DO NOT APPLY THIS GLOBALLY.
- var/obj/item/vending_refill/refill_canister = null //The type of refill canisters used by this machine.
+ ///ID's that can load this vending machine wtih refills
+ var/list/canload_access_list
-/obj/machinery/vending/Initialize()
+
+ var/list/vending_machine_input = list()
+ ///Display header on the input view
+ var/input_display_header = "Custom Vendor"
+
+ //The type of refill canisters used by this machine.
+ var/obj/item/vending_refill/refill_canister = null
+
+ /// how many items have been inserted in a vendor
+ var/loaded_items
+
+ ///Name of lighting mask for the vending machine
+ var/light_mask
+
+/obj/item/circuitboard
+ ///determines if the circuit board originated from a vendor off station or not.
+ var/onstation = TRUE
+
+/**
+ * Initialize the vending machine
+ *
+ * Builds the vending machine inventory, sets up slogans and other such misc work
+ *
+ * This also sets the onstation var to:
+ * * FALSE - if the machine was maploaded on a zlevel that doesn't pass the is_station_level check
+ * * TRUE - all other cases
+ */
+/obj/machinery/vending/Initialize(mapload)
var/build_inv = FALSE
if(!refill_canister)
circuit = null
@@ -94,9 +182,11 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/machinery/vending/Destroy()
QDEL_NULL(wires)
QDEL_NULL(coin)
- QDEL_NULL(bill)
return ..()
+/obj/machinery/vending/can_speak()
+ return !shut_up
+
/obj/machinery/vending/RefreshParts() //Better would be to make constructable child
if(!component_parts)
return
@@ -118,34 +208,65 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
else
..()
-/obj/machinery/vending/obj_break(damage_flag)
- if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
- stat |= BROKEN
+/obj/machinery/vending/update_icon_state()
+ if(stat & BROKEN)
icon_state = "[initial(icon_state)]-broken"
+ set_light(0)
+ else if(powered())
+ icon_state = initial(icon_state)
+ set_light(1.4)
+ else
+ icon_state = "[initial(icon_state)]-off"
+ set_light(0)
- var/dump_amount = 0
- var/found_anything = TRUE
- while (found_anything)
- found_anything = FALSE
- for(var/record in shuffle(product_records))
- var/datum/data/vending_product/R = record
- if(R.amount <= 0) //Try to use a record that actually has something to dump.
- continue
- var/dump_path = R.product_path
- if(!dump_path)
- continue
- R.amount--
- // busting open a vendor will destroy some of the contents
- if(found_anything && prob(80))
- continue
- var/obj/O = new dump_path(loc)
- step(O, pick(GLOB.alldirs))
- found_anything = TRUE
- dump_amount++
- if (dump_amount >= 16)
- return
+/obj/machinery/vending/update_overlays()
+ . = ..()
+ if(!light_mask)
+ return
+ SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
+ if(!(stat & BROKEN) && powered())
+ SSvis_overlays.add_vis_overlay(src, icon, light_mask, EMISSIVE_LAYER, EMISSIVE_PLANE)
+
+/obj/machinery/vending/obj_break(damage_flag)
+ . = ..()
+ if(!.)
+ return
+
+ var/dump_amount = 0
+ var/found_anything = TRUE
+ while (found_anything)
+ found_anything = FALSE
+ for(var/record in shuffle(product_records))
+ var/datum/data/vending_product/R = record
+ if(R.amount <= 0) //Try to use a record that actually has something to dump.
+ continue
+ var/dump_path = R.product_path
+ if(!dump_path)
+ continue
+ R.amount--
+ // busting open a vendor will destroy some of the contents
+ if(found_anything && prob(80))
+ continue
+
+ var/obj/O = new dump_path(loc)
+ step(O, pick(GLOB.alldirs))
+ found_anything = TRUE
+ dump_amount++
+ if (dump_amount >= 16)
+ return
+
+GLOBAL_LIST_EMPTY(vending_products)
+/**
+ * Build the inventory of the vending machine from it's product and record lists
+ *
+ * This builds up a full set of /datum/data/vending_products from the product list of the vending machine type
+ * Arguments:
+ * * productlist - the list of products that need to be converted
+ * * recordlist - the list containing /datum/data/vending_product datums
+ * * startempty - should we set vending_product record amount from the product list (so it's prefilled at roundstart)
+ */
/obj/machinery/vending/proc/build_inventory(list/productlist, list/recordlist, start_empty = FALSE)
for(var/typepath in productlist)
var/amount = productlist[typepath]
@@ -154,13 +275,21 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
var/atom/temp = typepath
var/datum/data/vending_product/R = new /datum/data/vending_product()
+ GLOB.vending_products[typepath] = 1
R.name = initial(temp.name)
R.product_path = typepath
if(!start_empty)
R.amount = amount
R.max_amount = amount
recordlist += R
-
+/**
+ * Refill a vending machine from a refill canister
+ *
+ * This takes the products from the refill canister and then fills the products,contraband and premium product categories
+ *
+ * Arguments:
+ * * canister - the vending canister we are refilling from
+ */
/obj/machinery/vending/proc/restock(obj/item/vending_refill/canister)
if (!canister.products)
canister.products = products.Copy()
@@ -172,7 +301,13 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
. += refill_inventory(canister.products, product_records)
. += refill_inventory(canister.contraband, hidden_records)
. += refill_inventory(canister.premium, coin_records)
-
+/**
+ * Refill our inventory from the passed in product list into the record list
+ *
+ * Arguments:
+ * * productlist - list of types -> amount
+ * * recordlist - existing record datums
+ */
/obj/machinery/vending/proc/refill_inventory(list/productlist, list/recordlist)
. = 0
for(var/R in recordlist)
@@ -182,7 +317,11 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
productlist[record.product_path] -= diff
record.amount += diff
. += diff
-
+/**
+ * Set up a refill canister that matches this machines products
+ *
+ * This is used when the machine is deconstructed, so the items aren't "lost"
+ */
/obj/machinery/vending/proc/update_canister()
if (!component_parts)
return
@@ -190,12 +329,14 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
var/obj/item/vending_refill/R = locate() in component_parts
if (!R)
CRASH("Constructible vending machine did not have a refill canister")
- return
R.products = unbuild_inventory(product_records)
R.contraband = unbuild_inventory(hidden_records)
R.premium = unbuild_inventory(coin_records)
+/**
+ * Given a record list, go through and and return a list of type -> amount
+ */
/obj/machinery/vending/proc/unbuild_inventory(list/recordlist)
. = list()
for(var/R in recordlist)
@@ -209,11 +350,14 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
return TRUE
/obj/machinery/vending/wrench_act(mob/living/user, obj/item/I)
+ ..()
if(panel_open)
default_unfasten_wrench(user, I, time = 60)
return TRUE
/obj/machinery/vending/screwdriver_act(mob/living/user, obj/item/I)
+ if(..())
+ return TRUE
if(anchored)
default_deconstruction_screwdriver(user, icon_state, icon_state, I)
cut_overlays()
@@ -232,9 +376,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
if(coin)
to_chat(user, "[src] already has [coin] inserted ")
return
- if(bill)
- to_chat(user, "[src] already has [bill] inserted ")
- return
if(!premium.len)
to_chat(user, "[src] doesn't have a coin slot. ")
return
@@ -243,41 +384,87 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
coin = I
to_chat(user, "You insert [I] into [src]. ")
return
- else if(istype(I, /obj/item/stack/spacecash))
- if(coin)
- to_chat(user, "[src] already has [coin] inserted ")
- return
- if(bill)
- to_chat(user, "[src] already has [bill] inserted ")
- return
- var/obj/item/stack/S = I
- if(!premium.len)
- to_chat(user, "[src] doesn't have a bill slot. ")
- return
- S.use(1)
- bill = new S.type(src, 1)
- to_chat(user, "You insert [I] into [src]. ")
- return
else if(refill_canister && istype(I, refill_canister))
if (!panel_open)
- to_chat(user, "You should probably unscrew the service panel first. ")
+ to_chat(user, "You should probably unscrew the service panel first! ")
else if (stat & (BROKEN|NOPOWER))
to_chat(user, "[src] does not respond. ")
else
//if the panel is open we attempt to refill the machine
var/obj/item/vending_refill/canister = I
if(canister.get_part_rating() == 0)
- to_chat(user, "[canister] is empty! ")
+ to_chat(user, "[canister] is empty! ")
else
// instantiate canister if needed
var/transferred = restock(canister)
if(transferred)
to_chat(user, "You loaded [transferred] items in [src]. ")
else
- to_chat(user, "There's nothing to restock! ")
+ to_chat(user, "There's nothing to restock! ")
return
+
+ if(compartmentLoadAccessCheck(user) && user.a_intent != INTENT_HARM)
+ if(canLoadItem(I))
+ loadingAttempt(I,user)
+ updateUsrDialog() //can't put this on the proc above because we spam it below
+
+ if(istype(I, /obj/item/storage/bag)) //trays USUALLY
+ var/obj/item/storage/T = I
+ var/loaded = 0
+ var/denied_items = 0
+ for(var/obj/item/the_item in T.contents)
+ if(contents.len >= MAX_VENDING_INPUT_AMOUNT) // no more than 30 item can fit inside, legacy from snack vending although not sure why it exists
+ to_chat(user, "[src]'s compartment is full. ")
+ break
+ if(canLoadItem(the_item) && loadingAttempt(the_item,user))
+ SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, the_item, src, TRUE)
+ loaded++
+ else
+ denied_items++
+ if(denied_items)
+ to_chat(user, "[src] refuses some items! ")
+ if(loaded)
+ to_chat(user, "You insert [loaded] dishes into [src]'s compartment. ")
+ updateUsrDialog()
else
- return ..()
+ . = ..()
+
+/obj/machinery/vending/proc/loadingAttempt(obj/item/I, mob/user)
+ . = TRUE
+ if(!user.transferItemToLoc(I, src))
+ return FALSE
+ if(vending_machine_input[format_text(I.name)])
+ vending_machine_input[format_text(I.name)]++
+ else
+ vending_machine_input[format_text(I.name)] = 1
+ to_chat(user, "You insert [I] into [src]'s input compartment. ")
+ loaded_items++
+
+/**
+ * Is the passed in user allowed to load this vending machines compartments
+ *
+ * Arguments:
+ * * user - mob that is doing the loading of the vending machine
+ */
+/obj/machinery/vending/proc/compartmentLoadAccessCheck(mob/user)
+ if(!canload_access_list)
+ return TRUE
+ else
+ var/do_you_have_access = FALSE
+ var/req_access_txt_holder = req_access_txt
+ for(var/i in canload_access_list)
+ req_access_txt = i
+ if(!allowed(user) && !(obj_flags & EMAGGED) && scan_id)
+ continue
+ else
+ do_you_have_access = TRUE
+ break //you passed don't bother looping anymore
+ req_access_txt = req_access_txt_holder // revert to normal (before the proc ran)
+ if(do_you_have_access)
+ return TRUE
+ else
+ to_chat(user, "[src]'s input compartment blinks red: Access denied. ")
+ return FALSE
/obj/machinery/vending/exchange_parts(mob/user, obj/item/storage/part_replacer/W)
if(!istype(W))
@@ -297,7 +484,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
else
display_parts(user)
if(moved)
- to_chat(user, "[moved] items restocked.")
+ to_chat(user, "[moved] items restocked. ")
W.play_rped_sound()
return TRUE
@@ -319,188 +506,145 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
return
return ..()
-/obj/machinery/vending/ui_interact(mob/user)
- var/dat = ""
+/obj/machinery/vending/ui_base_html(html)
+ var/datum/asset/spritesheet/assets = get_asset_datum(/datum/asset/spritesheet/vending)
+ . = replacetext(html, "", assets.css_tag())
- dat += "Select an item "
- dat += ""
- if(!product_records.len)
- dat += "
No product loaded! "
- else
- var/list/display_records = product_records
- if(extended_inventory)
- display_records = product_records + hidden_records
- if(coin || bill)
- display_records = product_records + coin_records
- if((coin || bill) && extended_inventory)
- display_records = product_records + hidden_records + coin_records
- dat += "
"
- for (var/datum/data/vending_product/R in display_records)
- dat += " "
- dat += "[sanitize(R.name)] "
- if(R.amount > 0)
- dat += "[R.amount] Vend "
- else
- dat += "0 Vend "
- dat += " "
- dat += "
"
- dat += "
"
- if(premium.len > 0)
- dat += "Change Return: "
- if (coin || bill)
- dat += "[(coin ? coin : "")][(bill ? bill : "")] Remove "
- else
- dat += "No money Remove "
- if(istype(src, /obj/machinery/vending/snack))
- dat += "Chef's Food Selection "
- dat += ""
- for (var/O in dish_quants)
- if(dish_quants[O] > 0)
- var/N = dish_quants[O]
- dat += "
Dispense "
- dat += "
[capitalize(O)]: [N] "
- dat += "
"
+/obj/machinery/vending/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ var/datum/asset/assets = get_asset_datum(/datum/asset/spritesheet/vending)
+ assets.send(user)
+ ui = new(user, src, ui_key, "vending", name, 450, 600, master_ui, state)
+ ui.open()
- var/datum/browser/popup = new(user, "vending", (name))
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
- popup.open()
+/obj/machinery/vending/ui_static_data(mob/user)
+ . = list()
+ .["product_records"] = list()
+ for (var/datum/data/vending_product/R in product_records)
+ var/list/data = list(
+ path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"),
+ name = R.name,
+ max_amount = R.max_amount,
+ ref = REF(R)
+ )
+ .["product_records"] += list(data)
+ .["coin_records"] = list()
+ for (var/datum/data/vending_product/R in coin_records)
+ var/list/data = list(
+ path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"),
+ name = R.name,
+ max_amount = R.max_amount,
+ ref = REF(R),
+ premium = TRUE
+ )
+ .["coin_records"] += list(data)
+ .["hidden_records"] = list()
+ for (var/datum/data/vending_product/R in hidden_records)
+ var/list/data = list(
+ path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"),
+ name = R.name,
+ max_amount = R.max_amount,
+ ref = REF(R),
+ premium = TRUE
+ )
+ .["hidden_records"] += list(data)
-/obj/machinery/vending/proc/GetIconForProduct(datum/data/vending_product/P)
- if(vending_cache[P.product_path])
- return vending_cache[P.product_path]
- var/product = new P.product_path()
- vending_cache[P.product_path] = icon2base64(getFlatIcon(product, no_anim = TRUE))
- qdel(product)
- return vending_cache[P.product_path]
+/obj/machinery/vending/ui_data(mob/user)
+ . = list()
+ .["stock"] = list()
+ for(var/datum/data/vending_product/R in product_records + coin_records + hidden_records)
+ .["stock"][R.name] = R.amount
+ .["extended_inventory"] = extended_inventory
+ .["coin"] = coin
-/obj/machinery/vending/Topic(href, href_list)
- if(..())
+/obj/machinery/vending/ui_act(action, params)
+ . = ..()
+ if(.)
return
-
- if(href_list["remove_coin"])
- if(!(coin || bill))
- to_chat(usr, "There is no money in this machine. ")
- return
- if(coin)
- usr.put_in_hands(coin)
- to_chat(usr, "You remove [coin] from [src]. ")
- coin = null
- if(bill)
- usr.put_in_hands(bill)
- to_chat(usr, "You remove [bill] from [src]. ")
- bill = null
-
-
- usr.set_machine(src)
-
- if((href_list["dispense"]) && (vend_ready))
- var/N = href_list["dispense"]
- if(dish_quants[N] <= 0) // Sanity check, there are probably ways to press the button when it shouldn't be possible.
- return
- vend_ready = 0
- use_power(5)
-
- dish_quants[N] = max(dish_quants[N] - 1, 0)
- for(var/obj/O in contents)
- if(O.name == N)
- O.forceMove(drop_location())
- break
- vend_ready = 1
- updateUsrDialog()
- return
-
- if((href_list["vend"]) && (vend_ready))
- if(panel_open)
- to_chat(usr, "The vending machine cannot dispense products while its service panel is open! ")
- return
-
- if((!allowed(usr)) && !(obj_flags & EMAGGED) && scan_id) //For SECURE VENDING MACHINES YEAH
- to_chat(usr, "Access denied. " )
- flick(icon_deny,src)
- return
-
- vend_ready = 0 //One thing at a time!!
-
- var/datum/data/vending_product/R = locate(href_list["vend"])
- if(!R || !istype(R) || !R.product_path)
- vend_ready = 1
- return
-
- if(R in hidden_records)
- if(!extended_inventory)
- vend_ready = 1
+ switch(action)
+ if("vend")
+ . = TRUE
+ if(!vend_ready)
return
- else if(R in coin_records)
- if(!(coin || bill))
- to_chat(usr, "You need to insert money to get this item! ")
- vend_ready = 1
+ if(panel_open)
+ to_chat(usr, "The vending machine cannot dispense products while its service panel is open! ")
return
- if(coin && coin.string_attached)
- if(prob(50))
- if(usr.CanReach(src))
- if(usr.put_in_hands(coin))
- to_chat(usr, "You successfully pull [coin] out before [src] could swallow it. ")
- coin = null
- else
- to_chat(usr, "You couldn't pull [coin] out because your hands are full! ")
- QDEL_NULL(coin)
- else
+ if((!allowed(usr)) && !(obj_flags & EMAGGED) && scan_id) //For SECURE VENDING MACHINES YEAH
+ to_chat(usr, "Access denied. " )
+ flick(icon_deny,src)
+ return
+ vend_ready = FALSE //One thing at a time!!
+ var/datum/data/vending_product/R = locate(params["ref"])
+ if(!R || !istype(R) || !R.product_path)
+ vend_ready = TRUE
+ return
+ if(R in hidden_records)
+ if(!extended_inventory)
+ vend_ready = TRUE
+ return
+ else if(R in coin_records)
+ if(!(coin))
+ to_chat(usr, "You need to a coin to get this item! ")
+ vend_ready = TRUE
+ return
+ if(coin && coin.string_attached)
+ if(!prob(50))
+ to_chat(usr, "You weren't able to pull [coin] out fast enough, the machine ate it, string and all! ")
+ QDEL_NULL(coin)
+ return
+ if(!usr.CanReach(src))
to_chat(usr, "You successfully pull [coin] out of [src] to the floor. ")
coin = null
- else
- to_chat(usr, "You weren't able to pull [coin] out fast enough, the machine ate it, string and all! ")
- QDEL_NULL(coin)
- else
+ if(!usr.put_in_hands(coin))
+ to_chat(usr, "You couldn't pull [coin] out because your hands are full! ")
+ QDEL_NULL(coin)
+ to_chat(usr, "You successfully pull [coin] out before [src] could swallow it. ")
+ coin = null
QDEL_NULL(coin)
- QDEL_NULL(bill)
-
- else if (!(R in product_records))
- vend_ready = 1
- message_admins("Vending machine exploit attempted by [ADMIN_LOOKUPFLW(usr)]!")
- return
-
- if (R.amount <= 0)
- to_chat(usr, "Sold out. ")
- vend_ready = 1
- return
- else
- R.amount--
-
- if(((last_reply + 200) <= world.time) && vend_reply)
- speak(vend_reply)
- last_reply = world.time
-
- use_power(5)
- if(icon_vend) //Show the vending animation if needed
- flick(icon_vend,src)
- var/vended = new R.product_path(get_turf(src))
- if(usr.CanReach(src))
- if(usr.put_in_hands(vended))
+ else if(!(R in product_records))
+ vend_ready = TRUE
+ message_admins("Vending machine exploit attempted by [ADMIN_LOOKUPFLW(usr)]!")
+ return
+ if(R.amount <= 0)
+ to_chat(usr, "Sold out. ")
+ vend_ready = TRUE
+ return
+ else
+ R.amount--
+ if(((last_reply + 200) <= world.time) && vend_reply)
+ speak(vend_reply)
+ last_reply = world.time
+ use_power(5)
+ if(icon_vend) //Show the vending animation if needed
+ flick(icon_vend,src)
+ var/vended = new R.product_path(get_turf(src))
+ if(usr.CanReach(src) && usr.put_in_hands(vended))
to_chat(usr, "You take [R.name] out of the slot. ")
else
to_chat(usr, "[capitalize(R.name)] falls onto the floor! ")
- else
- to_chat(usr, "[capitalize(R.name)] falls onto the floor! ")
- SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]"))
- vend_ready = 1
-
- updateUsrDialog()
- return
-
- else if(href_list["togglevoice"] && panel_open)
- shut_up = !shut_up
-
- updateUsrDialog()
-
+
+ SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]"))
+ vend_ready = TRUE
+ return
+ if("takeoutcoin")
+ usr.put_in_hands(coin)
+ to_chat(usr, "You remove [coin] from [src]. ")
+ coin = null
+ return
+
+ if("togglevoice")
+ if(panel_open)
+ shut_up = !shut_up
+
/obj/machinery/vending/process()
if(stat & (BROKEN|NOPOWER))
- return
+ return PROCESS_KILL
if(!active)
return
- if(seconds_electrified > 0)
+ if(seconds_electrified > MACHINE_NOT_ELECTRIFIED)
seconds_electrified--
//Pitch to the people! Really sell it!
@@ -511,7 +655,14 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
if(shoot_inventory && prob(shoot_inventory_chance))
throw_item()
-
+/**
+ * Speak the given message verbally
+ *
+ * Checks if the machine is powered and the message exists
+ *
+ * Arguments:
+ * * message - the message to speak
+ */
/obj/machinery/vending/proc/speak(message)
if(stat & (BROKEN|NOPOWER))
return
@@ -521,47 +672,61 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
say(message)
/obj/machinery/vending/power_change()
- if(stat & BROKEN)
- icon_state = "[initial(icon_state)]-broken"
- else
- if(powered())
- icon_state = initial(icon_state)
- stat &= ~NOPOWER
- else
- icon_state = "[initial(icon_state)]-off"
- stat |= NOPOWER
+ . = ..()
+ if(powered())
+ START_PROCESSING(SSmachines, src)
//Somebody cut an important wire and now we're following a new definition of "pitch."
+/**
+ * Throw an item from our internal inventory out in front of us
+ *
+ * This is called when we are hacked, it selects a random product from the records that has an amount > 0
+ * This item is then created and tossed out in front of us with a visible message
+ */
/obj/machinery/vending/proc/throw_item()
var/obj/throw_item = null
- var/mob/living/target = locate() in view(7,src)
+ var/mob/living/target = locate() in view(7, src)
if(!target)
- return 0
-
+ return FALSE
for(var/datum/data/vending_product/R in shuffle(product_records))
if(R.amount <= 0) //Try to use a record that actually has something to dump.
continue
var/dump_path = R.product_path
if(!dump_path)
continue
-
R.amount--
throw_item = new dump_path(loc)
break
if(!throw_item)
- return 0
+ return FALSE
pre_throw(throw_item)
throw_item.throw_at(target, 16, 3)
visible_message("[src] launches [throw_item] at [target]! ")
- return 1
-
+ return TRUE
+/**
+ * A callback called before an item is tossed out
+ *
+ * Override this if you need to do any special case handling
+ *
+ * Arguments:
+ * * I - obj/item being thrown
+ */
/obj/machinery/vending/proc/pre_throw(obj/item/I)
return
-
-/obj/machinery/vending/proc/shock(mob/user, prb)
- if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
+/**
+ * Shock the passed in user
+ *
+ * This checks we have power and that the passed in prob is passed, then generates some sparks
+ * and calls electrocute_mob on the user
+ *
+ * Arguments:
+ * * user - the user to shock
+ * * prb - probability the shock happens
+ */
+/obj/machinery/vending/proc/shock(mob/living/user, prb)
+ if(!istype(user) || stat & (BROKEN|NOPOWER)) // unpowered, no shock
return FALSE
if(!prob(prb))
return FALSE
@@ -571,6 +736,15 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
return TRUE
else
return FALSE
+/**
+ * Are we able to load the item passed in
+ *
+ * Arguments:
+ * * I - the item being loaded
+ * * user - the user doing the loading
+ */
+/obj/machinery/vending/proc/canLoadItem(obj/item/I, mob/user)
+ return FALSE
/obj/machinery/vending/onTransitZ()
return
diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm
index 14ce7a83b7..e663dca7ce 100644
--- a/code/modules/vending/games.dm
+++ b/code/modules/vending/games.dm
@@ -8,6 +8,8 @@
/obj/item/toy/cards/deck/cas = 3,
/obj/item/toy/cards/deck/cas/black = 3)
contraband = list(/obj/item/dice/fudge = 9)
+ premium = list(/obj/item/melee/skateboard/pro = 3,
+ /obj/item/melee/skateboard/hoverboard = 1)
refill_canister = /obj/item/vending_refill/games
/obj/item/vending_refill/games
diff --git a/code/modules/vore/eating/belly_obj.dm b/code/modules/vore/eating/belly_obj.dm
index 4917bd3dba..ca774ed1f6 100644
--- a/code/modules/vore/eating/belly_obj.dm
+++ b/code/modules/vore/eating/belly_obj.dm
@@ -558,7 +558,6 @@
to_chat(R,"Your attempt to escape [lowertext(name)] has failed! ")
to_chat(owner,"The attempt to escape from your [lowertext(name)] has failed! ")
return
- return
var/struggle_outer_message = pick(struggle_messages_outside)
var/struggle_user_message = pick(struggle_messages_inside)
diff --git a/code/modules/vore/eating/bellymodes.dm b/code/modules/vore/eating/bellymodes.dm
index ea15892a30..965648eb5a 100644
--- a/code/modules/vore/eating/bellymodes.dm
+++ b/code/modules/vore/eating/bellymodes.dm
@@ -60,187 +60,181 @@
var/sound/pred_digest = sound(get_sfx("digest_pred"))
var/sound/pred_death = sound(get_sfx("death_pred"))
-///////////////////////////// DM_HOLD /////////////////////////////
- if(digest_mode == DM_HOLD)
- return SSBELLIES_PROCESSED
+ switch(digest_mode)
+ if(DM_HOLD)
+ return SSBELLIES_PROCESSED
-//////////////////////////// DM_DIGEST ////////////////////////////
- else if(digest_mode == DM_DIGEST)
- if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //obvious.
- digest_mode = DM_NOISY
- return
+ if(DM_DIGEST)
+ if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //obvious.
+ digest_mode = DM_NOISY
+ return
- for (var/mob/living/M in contents)
- if(prob(25))
- if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
- SEND_SOUND(M,prey_digest)
- play_sound = pick(pred_digest)
+ for (var/mob/living/M in contents)
+ if(prob(25))
+ if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
- //Pref protection!
- if (!M.digestable || M.absorbed)
- continue
+ //Pref protection!
+ if (!M.digestable || M.absorbed)
+ continue
+
+ //Person just died in guts!
+ if(M.stat == DEAD)
+ var/digest_alert_owner = pick(digest_messages_owner)
+ var/digest_alert_prey = pick(digest_messages_prey)
+
+ //Replace placeholder vars
+ digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner)
+ digest_alert_owner = replacetext(digest_alert_owner,"%prey",M)
+ digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name))
+
+ digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
+ digest_alert_prey = replacetext(digest_alert_prey,"%prey",M)
+ digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name))
+
+ //Send messages
+ to_chat(owner, "[digest_alert_owner] ")
+ to_chat(M, "[digest_alert_prey] ")
+ M.visible_message("You watch as [owner]'s form loses its additions. ")
+
+ owner.nutrition += 400 // so eating dead mobs gives you *something*.
+ play_sound = pick(pred_death)
+ if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
+ SEND_SOUND(M,prey_death)
+ M.stop_sound_channel(CHANNEL_PREYLOOP)
+ digestion_death(M)
+ owner.update_icons()
+ to_update = TRUE
+ continue
+
+
+ // Deal digestion damage (and feed the pred)
+ if(!(M.status_flags & GODMODE))
+ M.adjustFireLoss(digest_burn)
+ owner.nutrition += 1
+
+ //Contaminate or gurgle items
+ var/obj/item/T = pick(touchable_items)
+ if(istype(T))
+ if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ))
+ digest_item(T)
+
+ if(DM_HEAL)
+ for (var/mob/living/M in contents)
+ if(prob(25))
+ if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
+ if(M.stat != DEAD)
+ if(owner.nutrition >= NUTRITION_LEVEL_STARVING && (M.health < M.maxHealth))
+ M.adjustBruteLoss(-3)
+ M.adjustFireLoss(-3)
+ owner.nutrition -= 5
+
+ //for when you just want people to squelch around
+ if(DM_NOISY)
+ if(prob(35))
+ for(var/mob/M in contents)
+ if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
+
+
+ if(DM_ABSORB)
+
+ for (var/mob/living/M in contents)
+
+ if(prob(10))//Less often than gurgles. People might leave this on forever.
+ if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
+
+ if(M.absorbed)
+ continue
+
+ if(M.nutrition >= 100) //Drain them until there's no nutrients left. Slowly "absorb" them.
+ var/oldnutrition = (M.nutrition * 0.05)
+ M.nutrition = (M.nutrition * 0.95)
+ owner.nutrition += oldnutrition
+ else if(M.nutrition < 100) //When they're finally drained.
+ absorb_living(M)
+ to_update = TRUE
+
+ if(DM_UNABSORB)
+
+ for (var/mob/living/M in contents)
+ if(M.absorbed && owner.nutrition >= 100)
+ M.absorbed = FALSE
+ to_chat(M,"You suddenly feel solid again ")
+ to_chat(owner,"You feel like a part of you is missing. ")
+ owner.nutrition -= 100
+ to_update = TRUE
+
+ //because dragons need snowflake guts
+ if(DM_DRAGON)
+ if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //imagine var editing this when you're a pacifist. smh
+ digest_mode = DM_NOISY
+ return
+
+ for (var/mob/living/M in contents)
+ if(prob(55)) //if you're hearing this, you're a vore ho anyway.
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
+ LAZYCLEARLIST(hearing_mobs)
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
+ if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
+ continue
+ LAZYADD(hearing_mobs, H)
+ last_hearcheck = world.time
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_digest)
+ else if(H?.client && (H in contents))
+ SEND_SOUND(H,prey_digest)
+
+ //No digestion protection for megafauna.
//Person just died in guts!
- if(M.stat == DEAD)
- var/digest_alert_owner = pick(digest_messages_owner)
- var/digest_alert_prey = pick(digest_messages_prey)
+ if(M.stat == DEAD)
+ var/digest_alert_owner = pick(digest_messages_owner)
+ var/digest_alert_prey = pick(digest_messages_prey)
- //Replace placeholder vars
- digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner)
- digest_alert_owner = replacetext(digest_alert_owner,"%prey",M)
- digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name))
+ //Replace placeholder vars
+ digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner)
+ digest_alert_owner = replacetext(digest_alert_owner,"%prey",M)
+ digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name))
- digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
- digest_alert_prey = replacetext(digest_alert_prey,"%prey",M)
- digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name))
+ digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
+ digest_alert_prey = replacetext(digest_alert_prey,"%prey",M)
+ digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name))
- //Send messages
- to_chat(owner, "[digest_alert_owner] ")
- to_chat(M, "[digest_alert_prey] ")
- M.visible_message("You watch as [owner]'s form loses its additions. ")
-
- owner.nutrition += 400 // so eating dead mobs gives you *something*.
- play_sound = pick(pred_death)
- if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
- SEND_SOUND(M,prey_death)
- M.stop_sound_channel(CHANNEL_PREYLOOP)
- digestion_death(M)
- owner.update_icons()
- to_update = TRUE
- continue
+ //Send messages
+ to_chat(owner, "[digest_alert_owner] ")
+ to_chat(M, "[digest_alert_prey] ")
+ M.visible_message("You watch as [owner]'s guts loudly rumble as it finishes off a meal. ")
+ play_sound = pick(pred_death)
+ if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
+ SEND_SOUND(M,prey_death)
+ M.spill_organs(FALSE,TRUE,TRUE)
+ M.stop_sound_channel(CHANNEL_PREYLOOP)
+ digestion_death(M)
+ owner.update_icons()
+ to_update = TRUE
+ continue
- // Deal digestion damage (and feed the pred)
- if(!(M.status_flags & GODMODE))
- M.adjustFireLoss(digest_burn)
- owner.nutrition += 1
+ // Deal digestion damage (and feed the pred)
+ if(!(M.status_flags & GODMODE))
+ M.adjustFireLoss(digest_burn)
+ M.adjustToxLoss(2) // something something plasma based acids
+ M.adjustCloneLoss(1) // eventually this'll kill you if you're healing everything else, you nerds.
+ //Contaminate or gurgle items
+ var/obj/item/T = pick(touchable_items)
+ if(istype(T))
+ if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ))
+ digest_item(T)
- //Contaminate or gurgle items
- var/obj/item/T = pick(touchable_items)
- if(istype(T))
- if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ))
- digest_item(T)
-
-///////////////////////////// DM_HEAL /////////////////////////////
- if(digest_mode == DM_HEAL)
- for (var/mob/living/M in contents)
- if(prob(25))
- if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
- SEND_SOUND(M,prey_digest)
- play_sound = pick(pred_digest)
- if(M.stat != DEAD)
- if(owner.nutrition >= NUTRITION_LEVEL_STARVING && (M.health < M.maxHealth))
- M.adjustBruteLoss(-3)
- M.adjustFireLoss(-3)
- owner.nutrition -= 5
-
-////////////////////////// DM_NOISY /////////////////////////////////
-//for when you just want people to squelch around
- if(digest_mode == DM_NOISY)
- if(prob(35))
- for(var/mob/M in contents)
- if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
- SEND_SOUND(M,prey_digest)
- play_sound = pick(pred_digest)
-
-
-//////////////////////////// DM_ABSORB ////////////////////////////
- else if(digest_mode == DM_ABSORB)
-
- for (var/mob/living/M in contents)
-
- if(prob(10))//Less often than gurgles. People might leave this on forever.
- if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
- SEND_SOUND(M,prey_digest)
- play_sound = pick(pred_digest)
-
- if(M.absorbed)
- continue
-
- if(M.nutrition >= 100) //Drain them until there's no nutrients left. Slowly "absorb" them.
- var/oldnutrition = (M.nutrition * 0.05)
- M.nutrition = (M.nutrition * 0.95)
- owner.nutrition += oldnutrition
- else if(M.nutrition < 100) //When they're finally drained.
- absorb_living(M)
- to_update = TRUE
-
-//////////////////////////// DM_UNABSORB ////////////////////////////
- else if(digest_mode == DM_UNABSORB)
-
- for (var/mob/living/M in contents)
- if(M.absorbed && owner.nutrition >= 100)
- M.absorbed = FALSE
- to_chat(M,"You suddenly feel solid again ")
- to_chat(owner,"You feel like a part of you is missing. ")
- owner.nutrition -= 100
- to_update = TRUE
-
-//////////////////////////DM_DRAGON /////////////////////////////////////
-//because dragons need snowflake guts
- if(digest_mode == DM_DRAGON)
- if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //imagine var editing this when you're a pacifist. smh
- digest_mode = DM_NOISY
- return
-
- for (var/mob/living/M in contents)
- if(prob(55)) //if you're hearing this, you're a vore ho anyway.
- if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, owner))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(var/mob/living/H in hearing_mobs)
- if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
- SEND_SOUND(H,pred_digest)
- else if(H?.client && (H in contents))
- SEND_SOUND(H,prey_digest)
-
- //No digestion protection for megafauna.
-
- //Person just died in guts!
- if(M.stat == DEAD)
- var/digest_alert_owner = pick(digest_messages_owner)
- var/digest_alert_prey = pick(digest_messages_prey)
-
- //Replace placeholder vars
- digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner)
- digest_alert_owner = replacetext(digest_alert_owner,"%prey",M)
- digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name))
-
- digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
- digest_alert_prey = replacetext(digest_alert_prey,"%prey",M)
- digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name))
-
- //Send messages
- to_chat(owner, "[digest_alert_owner] ")
- to_chat(M, "[digest_alert_prey] ")
- M.visible_message("You watch as [owner]'s guts loudly rumble as it finishes off a meal. ")
- play_sound = pick(pred_death)
- if(M && M.client && M.client.prefs.cit_toggles & DIGESTION_NOISES)
- SEND_SOUND(M,prey_death)
- M.spill_organs(FALSE,TRUE,TRUE)
- M.stop_sound_channel(CHANNEL_PREYLOOP)
- digestion_death(M)
- owner.update_icons()
- to_update = TRUE
- continue
-
-
- // Deal digestion damage (and feed the pred)
- if(!(M.status_flags & GODMODE))
- M.adjustFireLoss(digest_burn)
- M.adjustToxLoss(2) // something something plasma based acids
- M.adjustCloneLoss(1) // eventually this'll kill you if you're healing everything else, you nerds.
- //Contaminate or gurgle items
- var/obj/item/T = pick(touchable_items)
- if(istype(T))
- if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ))
- digest_item(T)
-
-/////////////////////////// Make any noise ///////////////////////////
+ /////////////////////////// Make any noise ///////////////////////////
if(play_sound)
if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
@@ -252,7 +246,7 @@
for(var/mob/M in hearing_mobs) //so we don't fill the whole room with the sound effect
if(M && M.client && (isturf(M.loc) || (M.loc != src.contents))) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check
M.playsound_local(owner.loc, play_sound, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF)
- //these are all external sound triggers now, so it's ok.
+ //these are all external sound triggers now, so it's ok.
if(to_update)
for(var/mob/living/M in contents)
if(M.client)
@@ -260,4 +254,4 @@
if(owner.client)
owner.updateVRPanel()
- return SSBELLIES_PROCESSED
\ No newline at end of file
+ return SSBELLIES_PROCESSED
diff --git a/code/modules/vore/trycatch.dm b/code/modules/vore/trycatch.dm
index 2adf6e0cf6..d4b1ac2c05 100644
--- a/code/modules/vore/trycatch.dm
+++ b/code/modules/vore/trycatch.dm
@@ -16,15 +16,14 @@ The proc you're attemping should return nonzero values on success.
try
if(!callon || !procname)
CRASH("attempt_vr: Invalid obj/proc: [callon]/[procname]")
- return 0
var/result = call(callon,procname)(arglist(args))
return result
catch(var/exception/e)
- CRASH("attempt_vr runtimed when calling [procname] on [callon].")
- CRASH("attempt_vr catch: [e] on [e.file]:[e.line]")
+ stack_trace("attempt_vr runtimed when calling [procname] on [callon].")
+ stack_trace("attempt_vr catch: [e] on [e.file]:[e.line]")
return 0
/*
@@ -46,17 +45,16 @@ The hooks you're calling should return nonzero values on success.
var/hook_path = text2path("/hook/[hook]")
if(!hook_path)
CRASH("hook_vr: Invalid hook '/hook/[hook]' called.")
- return 0
var/caller = new hook_path
var/status = 1
for(var/P in typesof("[hook_path]/proc"))
if(!call(caller, P)(arglist(args)))
- CRASH("hook_vr: Hook '[P]' failed or runtimed.")
+ stack_trace("hook_vr: Hook '[P]' failed or runtimed.")
status = 0
return status
catch(var/exception/e)
- CRASH("hook_vr itself failed or runtimed. Exception below.")
- CRASH("hook_vr catch: [e] on [e.file]:[e.line]")
\ No newline at end of file
+ stack_trace("hook_vr itself failed or runtimed. Exception below.")
+ stack_trace("hook_vr catch: [e] on [e.file]:[e.line]")
diff --git a/config/config.txt b/config/config.txt
index fd5dc968fb..35af0e848b 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -510,13 +510,16 @@ DEFAULT_VIEW 21x15
### FAIL2TOPIC:
### Automated IP bans for world/Topic() spammers
+### NOTE FOR WINDOWS HOSTS: This requires you to be running dreamdaemon as an administrator for it to work at all. TGS3 handles this automatically, and honestly there's no reason not to be using TGS3 if you're hosting on Windows.
+### NOTE FOR LINUX HOSTS: This requires manual setup of iptables. Beware that improper configuration of this can and will irreversibly fuck up a server, so please don't tinker with it if you don't know what you're doing.
## Enabled
-FAIL2TOPIC_ENABLED
+#FAIL2TOPIC_ENABLED
## Minimum wait time in deciseconds between valid requests
FAIL2TOPIC_RATE_LIMIT 10
## Number of requests after breaching rate limit that triggers a ban
FAIL2TOPIC_MAX_FAILS 5
## Firewall rule name used on physical server
+## FOR LINUX HOSTS: This is used as the chain name. The iptables chain doesn't get created or hooked up to INPUT automatically, so you'll have to get that set up yourself. Recommended name: BYOND
FAIL2TOPIC_RULE_NAME _dd_fail2topic
## Enable automatic profiling - Byond 513.1506 and newer only.
diff --git a/dependencies.sh b/dependencies.sh
index 4a950af314..83254509b9 100644
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -11,7 +11,7 @@ export BYOND_MINOR=${LIST[1]}
unset LIST
#rust_g git tag
-export RUST_G_VERSION=0.4.2
+export RUST_G_VERSION=0.4.3
#bsql git tag
export BSQL_VERSION=v1.4.0.0
@@ -23,4 +23,4 @@ export NODE_VERSION=12
export PHP_VERSION=5.6
# SpacemanDMM git tag
-export SPACEMAN_DMM_VERSION=suite-1.3
+export SPACEMAN_DMM_VERSION=suite-1.4
diff --git a/html/changelogs/AutoChangeLog-pr-10732.yml b/html/changelogs/AutoChangeLog-pr-10732.yml
new file mode 100644
index 0000000000..8d6746bbd4
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10732.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - rscadd: "Traitor chaplains can now become neutered versions of cults."
diff --git a/html/changelogs/AutoChangeLog-pr-10891.yml b/html/changelogs/AutoChangeLog-pr-10891.yml
new file mode 100644
index 0000000000..cac5c5312d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10891.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - rscadd: "Most crate types can now be made, some costing more do to function over fashion"
diff --git a/html/changelogs/AutoChangeLog-pr-10986.yml b/html/changelogs/AutoChangeLog-pr-10986.yml
new file mode 100644
index 0000000000..bac7b9692a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10986.yml
@@ -0,0 +1,4 @@
+author: "Seris02"
+delete-after: True
+changes:
+ - rscadd: "wall walking boots"
diff --git a/html/changelogs/AutoChangeLog-pr-11275.yml b/html/changelogs/AutoChangeLog-pr-11275.yml
new file mode 100644
index 0000000000..5a3ce31631
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11275.yml
@@ -0,0 +1,5 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - rscadd: "Reenabled the swarmers event. Also blacklisted another dozen other machineries and structures that may be critical to the shift or station integrity from swarmers' HUNGER for materials."
+ - bugfix: "Fixed find_safe_turfs() searching for turfs with concentration of oxygen lower than 16 rather higher."
diff --git a/html/changelogs/AutoChangeLog-pr-11379.yml b/html/changelogs/AutoChangeLog-pr-11379.yml
new file mode 100644
index 0000000000..319d4b2140
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11379.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - refactor: "refactored polychromic clothing into an element."
diff --git a/html/changelogs/AutoChangeLog-pr-11604.yml b/html/changelogs/AutoChangeLog-pr-11604.yml
new file mode 100644
index 0000000000..571876cbba
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11604.yml
@@ -0,0 +1,6 @@
+author: "dapnee"
+delete-after: True
+changes:
+ - rscadd: "plant disk sorter in botany, bounty console for the rest of cargo, a missing air alarm in the incinerator"
+ - tweak: "fixed a decal in front of security, moved an AIR alarm so it doesn't look awful to ghosts/AI, asteroids don't delete air anymore, fixed more active turfs, the buttons in the bridge \"should\" work now, HoP and cargo desks should be secure now"
+ - rscdel: "quarters that found their way out of the quartermaster's back room"
diff --git a/html/changelogs/AutoChangeLog-pr-11669.yml b/html/changelogs/AutoChangeLog-pr-11669.yml
new file mode 100644
index 0000000000..8d33b22a71
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11669.yml
@@ -0,0 +1,5 @@
+author: "BuffEngineering"
+delete-after: True
+changes:
+ - bugfix: "You may no longer summon plasteel from the door dimension."
+ - tweak: "High security airlocks are now 33% more materially efficient!"
diff --git a/html/changelogs/AutoChangeLog-pr-11676.yml b/html/changelogs/AutoChangeLog-pr-11676.yml
new file mode 100644
index 0000000000..c4f44ab965
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11676.yml
@@ -0,0 +1,7 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - rscadd: "A new, much more barebones holding facility for contractors."
+ - rscdel: "Energy nets are gone."
+ - tweak: "Various ghost roles are now easier to ghost as."
+ - tweak: "The candles in the dojo no longer make the place hotter and hotter over time."
diff --git a/html/changelogs/AutoChangeLog-pr-11681.yml b/html/changelogs/AutoChangeLog-pr-11681.yml
new file mode 100644
index 0000000000..4ef6b60aeb
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11681.yml
@@ -0,0 +1,5 @@
+author: "PersianXerxes"
+delete-after: True
+changes:
+ - rscadd: "TGUI Next UIs for: chem heaters, chem masters, chem dispensers, and sleepers"
+ - code_imp: "Reworked Chem Master code"
diff --git a/html/changelogs/AutoChangeLog-pr-11682.yml b/html/changelogs/AutoChangeLog-pr-11682.yml
new file mode 100644
index 0000000000..1d8d3c618c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11682.yml
@@ -0,0 +1,5 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - rscdel: "No more station integrity goal"
+ - tweak: "Upload-hacked-law goal only picksif there's an AI to upload to"
diff --git a/html/changelogs/AutoChangeLog-pr-11683.yml b/html/changelogs/AutoChangeLog-pr-11683.yml
new file mode 100644
index 0000000000..eefd810536
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11683.yml
@@ -0,0 +1,5 @@
+author: "timothyteakettle"
+delete-after: True
+changes:
+ - rscadd: "add new holodeck wrestling belt which lets you use moves only on those also wearing it"
+ - rscadd: "add new holodeck map featuring the holodeck wrestling belt"
diff --git a/html/changelogs/AutoChangeLog-pr-11692.yml b/html/changelogs/AutoChangeLog-pr-11692.yml
new file mode 100644
index 0000000000..9b88e96350
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11692.yml
@@ -0,0 +1,4 @@
+author: "Seris02"
+delete-after: True
+changes:
+ - bugfix: "made color picking for character appearance show the colors when you pick them"
diff --git a/html/changelogs/AutoChangeLog-pr-11693.yml b/html/changelogs/AutoChangeLog-pr-11693.yml
new file mode 100644
index 0000000000..8ece04fb49
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11693.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - spellcheck: "Spec Ops crate no longer talks about a \"Null Crate\" what ever that is"
diff --git a/html/changelogs/AutoChangeLog-pr-11697.yml b/html/changelogs/AutoChangeLog-pr-11697.yml
new file mode 100644
index 0000000000..d8026366cb
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11697.yml
@@ -0,0 +1,6 @@
+author: "actioninja"
+delete-after: True
+changes:
+ - rscadd: "Washing machines now support arbitrary dye color"
+ - rscadd: "Washing machines now dye nearly every item."
+ - refactor: "lots of backend changes to clothing overlays, report any issues"
diff --git a/html/changelogs/AutoChangeLog-pr-11698.yml b/html/changelogs/AutoChangeLog-pr-11698.yml
new file mode 100644
index 0000000000..1538c3a532
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11698.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "After years of visual agony, the Curse of The Floating Disembodied Phallus has come to an end."
diff --git a/html/changelogs/AutoChangeLog-pr-11700.yml b/html/changelogs/AutoChangeLog-pr-11700.yml
new file mode 100644
index 0000000000..132e722229
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11700.yml
@@ -0,0 +1,4 @@
+author: "kiwedespars"
+delete-after: True
+changes:
+ - rscadd: "Added paper masks."
diff --git a/html/changelogs/AutoChangeLog-pr-11701.yml b/html/changelogs/AutoChangeLog-pr-11701.yml
new file mode 100644
index 0000000000..f993c912d3
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11701.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - tweak: "The megafauna's hitbox doesn't include 0 alpha sections anymore."
diff --git a/html/changelogs/AutoChangeLog-pr-11708.yml b/html/changelogs/AutoChangeLog-pr-11708.yml
new file mode 100644
index 0000000000..7ead7721bf
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11708.yml
@@ -0,0 +1,4 @@
+author: "Seris02"
+delete-after: True
+changes:
+ - tweak: "the sergal markings"
diff --git a/html/changelogs/AutoChangeLog-pr-11719.yml b/html/changelogs/AutoChangeLog-pr-11719.yml
new file mode 100644
index 0000000000..60a30ba092
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11719.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Intellectual property infringment is not cool."
diff --git a/html/changelogs/AutoChangeLog-pr-11807.yml b/html/changelogs/AutoChangeLog-pr-11807.yml
new file mode 100644
index 0000000000..be368dc57a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11807.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - code_imp: "datum/pipeline return_air stack trace now gives a reference so it's actually marginally useful if caught in round."
diff --git a/html/changelogs/AutoChangeLog-pr-11811.yml b/html/changelogs/AutoChangeLog-pr-11811.yml
new file mode 100644
index 0000000000..010a0caa86
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11811.yml
@@ -0,0 +1,6 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Liver failure is back!"
+ - tweak: "standarized a few (prefs off) side effects from enlargment chems on livers to do organ damage instead without the blood volume whackiness."
+ - tweak: "High liver damage now slows mobs down."
diff --git a/html/changelogs/AutoChangeLog-pr-11812.yml b/html/changelogs/AutoChangeLog-pr-11812.yml
new file mode 100644
index 0000000000..ca452b1d23
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11812.yml
@@ -0,0 +1,4 @@
+author: "Auris456852"
+delete-after: True
+changes:
+ - rscadd: "Added printer sound for admins that plays when someone messages Centcomm or the Syndicate. Just like RP!"
diff --git a/html/changelogs/AutoChangeLog-pr-11814.yml b/html/changelogs/AutoChangeLog-pr-11814.yml
new file mode 100644
index 0000000000..3cb85d8668
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11814.yml
@@ -0,0 +1,5 @@
+author: "kappa-sama"
+delete-after: True
+changes:
+ - balance: "doubles the Stam damage of nonlethal krav stompers"
+ - bugfix: "no longer Krav Maga stomp people that are standing"
diff --git a/html/changelogs/AutoChangeLog-pr-11816.yml b/html/changelogs/AutoChangeLog-pr-11816.yml
new file mode 100644
index 0000000000..8ca4da37de
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11816.yml
@@ -0,0 +1,4 @@
+author: "necromanceranne"
+delete-after: True
+changes:
+ - bugfix: "Sleeping Carp and Rising Bass now dodge. Again."
diff --git a/html/changelogs/AutoChangeLog-pr-11817.yml b/html/changelogs/AutoChangeLog-pr-11817.yml
new file mode 100644
index 0000000000..9d9e0a779b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11817.yml
@@ -0,0 +1,5 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - rscadd: "Latejoin changelings for dynamic"
+ - bugfix: "Average threat calculation works now"
diff --git a/html/changelogs/AutoChangeLog-pr-11819.yml b/html/changelogs/AutoChangeLog-pr-11819.yml
new file mode 100644
index 0000000000..6619f26aba
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11819.yml
@@ -0,0 +1,5 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Wizard robes & co work again now."
+ - bugfix: "Fixed some spell casting message spam."
diff --git a/html/changelogs/AutoChangeLog-pr-11823.yml b/html/changelogs/AutoChangeLog-pr-11823.yml
new file mode 100644
index 0000000000..b4ba01d44b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11823.yml
@@ -0,0 +1,4 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - bugfix: "Contamination is back."
diff --git a/html/changelogs/AutoChangeLog-pr-11824.yml b/html/changelogs/AutoChangeLog-pr-11824.yml
new file mode 100644
index 0000000000..2b91fc5564
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11824.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "fixed yet another few airless issues with the space hermit ruin."
diff --git a/html/changelogs/AutoChangeLog-pr-11834.yml b/html/changelogs/AutoChangeLog-pr-11834.yml
new file mode 100644
index 0000000000..05d1b245b1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11834.yml
@@ -0,0 +1,5 @@
+author: "Bhijn"
+delete-after: True
+changes:
+ - server: "Fail2Topic now supports Linux. Do beware that this requires some sysop experience to properly set up!"
+ - config: "Fail2Topic is now disabled by default, and the out-of-the-box config files have been updated to be a little more detailed."
diff --git a/icons/mob/accessories.dmi b/icons/mob/accessories.dmi
deleted file mode 100644
index cda7cca404..0000000000
Binary files a/icons/mob/accessories.dmi and /dev/null differ
diff --git a/icons/mob/actions/actions_vehicle.dmi b/icons/mob/actions/actions_vehicle.dmi
index cee683c60d..0d8d322653 100644
Binary files a/icons/mob/actions/actions_vehicle.dmi and b/icons/mob/actions/actions_vehicle.dmi differ
diff --git a/icons/mob/actions/backgrounds.dmi b/icons/mob/actions/backgrounds.dmi
index 3697fe4ff5..07839588ce 100644
Binary files a/icons/mob/actions/backgrounds.dmi and b/icons/mob/actions/backgrounds.dmi differ
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
deleted file mode 100644
index 947ccb7924..0000000000
Binary files a/icons/mob/back.dmi and /dev/null differ
diff --git a/icons/mob/clothing/accessories.dmi b/icons/mob/clothing/accessories.dmi
new file mode 100644
index 0000000000..c13b6a50bc
Binary files /dev/null and b/icons/mob/clothing/accessories.dmi differ
diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi
new file mode 100644
index 0000000000..66a47d21f2
Binary files /dev/null and b/icons/mob/clothing/back.dmi differ
diff --git a/icons/mob/belt.dmi b/icons/mob/clothing/belt.dmi
similarity index 100%
rename from icons/mob/belt.dmi
rename to icons/mob/clothing/belt.dmi
diff --git a/icons/mob/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi
similarity index 100%
rename from icons/mob/belt_mirror.dmi
rename to icons/mob/clothing/belt_mirror.dmi
diff --git a/icons/mob/custom_w.dmi b/icons/mob/clothing/custom_w.dmi
similarity index 100%
rename from icons/mob/custom_w.dmi
rename to icons/mob/clothing/custom_w.dmi
diff --git a/icons/mob/eyes.dmi b/icons/mob/clothing/eyes.dmi
similarity index 100%
rename from icons/mob/eyes.dmi
rename to icons/mob/clothing/eyes.dmi
diff --git a/icons/mob/feet.dmi b/icons/mob/clothing/feet.dmi
similarity index 79%
rename from icons/mob/feet.dmi
rename to icons/mob/clothing/feet.dmi
index 578970a21c..1e09dce605 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/clothing/feet.dmi differ
diff --git a/icons/mob/feet_digi.dmi b/icons/mob/clothing/feet_digi.dmi
similarity index 57%
rename from icons/mob/feet_digi.dmi
rename to icons/mob/clothing/feet_digi.dmi
index fbc105b634..626c67a71c 100644
Binary files a/icons/mob/feet_digi.dmi and b/icons/mob/clothing/feet_digi.dmi differ
diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi
new file mode 100644
index 0000000000..74aabf6021
Binary files /dev/null and b/icons/mob/clothing/hands.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/clothing/head.dmi
similarity index 95%
rename from icons/mob/head.dmi
rename to icons/mob/clothing/head.dmi
index c499c236e3..f2ea9fa55d 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/clothing/head.dmi differ
diff --git a/icons/mob/head_muzzled.dmi b/icons/mob/clothing/head_muzzled.dmi
similarity index 100%
rename from icons/mob/head_muzzled.dmi
rename to icons/mob/clothing/head_muzzled.dmi
diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi
new file mode 100644
index 0000000000..ee36c59209
Binary files /dev/null and b/icons/mob/clothing/mask.dmi differ
diff --git a/icons/mob/mask_muzzled.dmi b/icons/mob/clothing/mask_muzzled.dmi
similarity index 100%
rename from icons/mob/mask_muzzled.dmi
rename to icons/mob/clothing/mask_muzzled.dmi
diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi
new file mode 100644
index 0000000000..68fde7bff9
Binary files /dev/null and b/icons/mob/clothing/neck.dmi differ
diff --git a/icons/mob/restraints.dmi b/icons/mob/clothing/restraints.dmi
similarity index 100%
rename from icons/mob/restraints.dmi
rename to icons/mob/clothing/restraints.dmi
diff --git a/icons/mob/suit.dmi b/icons/mob/clothing/suit.dmi
similarity index 99%
rename from icons/mob/suit.dmi
rename to icons/mob/clothing/suit.dmi
index 195e4ecd67..a2ea222a68 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/clothing/suit.dmi differ
diff --git a/icons/mob/suit_digi.dmi b/icons/mob/clothing/suit_digi.dmi
similarity index 99%
rename from icons/mob/suit_digi.dmi
rename to icons/mob/clothing/suit_digi.dmi
index 67ad9f7e1a..5287bac43c 100644
Binary files a/icons/mob/suit_digi.dmi and b/icons/mob/clothing/suit_digi.dmi differ
diff --git a/icons/mob/taur_canine.dmi b/icons/mob/clothing/taur_canine.dmi
similarity index 100%
rename from icons/mob/taur_canine.dmi
rename to icons/mob/clothing/taur_canine.dmi
diff --git a/icons/mob/taur_hooved.dmi b/icons/mob/clothing/taur_hooved.dmi
similarity index 100%
rename from icons/mob/taur_hooved.dmi
rename to icons/mob/clothing/taur_hooved.dmi
diff --git a/icons/mob/taur_naga.dmi b/icons/mob/clothing/taur_naga.dmi
similarity index 100%
rename from icons/mob/taur_naga.dmi
rename to icons/mob/clothing/taur_naga.dmi
diff --git a/icons/mob/underwear.dmi b/icons/mob/clothing/underwear.dmi
similarity index 100%
rename from icons/mob/underwear.dmi
rename to icons/mob/clothing/underwear.dmi
diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi
new file mode 100644
index 0000000000..4485a9a5f8
Binary files /dev/null and b/icons/mob/clothing/uniform.dmi differ
diff --git a/icons/mob/uniform_digi.dmi b/icons/mob/clothing/uniform_digi.dmi
similarity index 99%
rename from icons/mob/uniform_digi.dmi
rename to icons/mob/clothing/uniform_digi.dmi
index 80e8f80b94..6827581b85 100644
Binary files a/icons/mob/uniform_digi.dmi and b/icons/mob/clothing/uniform_digi.dmi differ
diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi
deleted file mode 100644
index e7068a1854..0000000000
Binary files a/icons/mob/hands.dmi and /dev/null differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 4ca4a351c6..1cd090a3e9 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 8546a78a73..24c9a2d777 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/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi
index 2fdb9b88d2..528fd42d23 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 dc8d8a4c3f..5bf347fabf 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/mask.dmi b/icons/mob/mask.dmi
deleted file mode 100644
index da61ca93be..0000000000
Binary files a/icons/mob/mask.dmi and /dev/null differ
diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi
deleted file mode 100644
index d899950b79..0000000000
Binary files a/icons/mob/neck.dmi and /dev/null differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
deleted file mode 100644
index 1845e75d26..0000000000
Binary files a/icons/mob/uniform.dmi and /dev/null differ
diff --git a/icons/obj/bodybag.dmi b/icons/obj/bodybag.dmi
index 7fcc193ad6..c3267d3fc9 100644
Binary files a/icons/obj/bodybag.dmi and b/icons/obj/bodybag.dmi differ
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index 76094938e8..aea15e2e39 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/clothing/cloaks.dmi b/icons/obj/clothing/cloaks.dmi
index dd1ae7d727..6f4de62cc0 100644
Binary files a/icons/obj/clothing/cloaks.dmi and b/icons/obj/clothing/cloaks.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index e937842275..d53f53c029 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 07d9c8cee6..2e0906ea20 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index 64e165213d..13f678f53a 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi
index ea44ae0a7c..622f43ea56 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 bd8d52a1e6..c4e000b700 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 530cd61e6f..607c26bb62 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index edcd2ff9b6..dfebe38155 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi
index 3d382d25b3..7ed9244ea4 100644
Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ
diff --git a/icons/obj/glass_ware.dmi b/icons/obj/glass_ware.dmi
new file mode 100644
index 0000000000..7b720836cc
Binary files /dev/null and b/icons/obj/glass_ware.dmi differ
diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi
index ba8111bb00..e54f55ed46 100644
Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index acf6bb4021..6ee7873469 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ
diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi
index ace24db5ff..a647bebd57 100644
Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ
diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi
index 2de24e2499..09568ebea1 100644
Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ
diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi
index 67079de3e2..8d5d9208ab 100644
Binary files a/icons/obj/vehicles.dmi and b/icons/obj/vehicles.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 87d5e88cc9..c8675209c4 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/icons/turf/mining.dmi b/icons/turf/mining.dmi
index 6561438228..335cff453e 100644
Binary files a/icons/turf/mining.dmi and b/icons/turf/mining.dmi differ
diff --git a/icons/turf/smoothrocks.dmi b/icons/turf/smoothrocks.dmi
index 20314cff5b..ba2bbce955 100644
Binary files a/icons/turf/smoothrocks.dmi and b/icons/turf/smoothrocks.dmi differ
diff --git a/icons/turf/vgstation_decals.dmi b/icons/turf/vgstation_decals.dmi
new file mode 100644
index 0000000000..4f9d52c0cd
Binary files /dev/null and b/icons/turf/vgstation_decals.dmi differ
diff --git a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm
index 44b8067876..6c9f12a852 100644
--- a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm
+++ b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm
@@ -2,7 +2,7 @@
name = "shock collar"
desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.."
icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi'
- alternate_worn_icon = 'modular_citadel/icons/mob/citadel/neck.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/citadel/neck.dmi'
icon_state = "shockcollar"
item_state = "shockcollar"
body_parts_covered = NECK
diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm
index 7705dcafd1..8fda73b199 100644
--- a/modular_citadel/code/modules/arousal/genitals.dm
+++ b/modular_citadel/code/modules/arousal/genitals.dm
@@ -302,10 +302,21 @@
if(!S || S.icon_state == "none")
continue
var/aroused_state = G.aroused_state && S.alt_aroused
+ var/accessory_icon = S.icon
+ var/do_center = S.center
+ var/dim_x = S.dimension_x
+ var/dim_y = S.dimension_y
+ if(G.genital_flags & GENITAL_CAN_TAUR && S.taur_icon && (!S.feat_taur || dna.features[S.feat_taur]) && dna.species.mutant_bodyparts["taur"])
+ var/datum/sprite_accessory/taur/T = GLOB.taur_list[dna.features["taur"]]
+ if(T?.taur_mode & S.accepted_taurs)
+ accessory_icon = S.taur_icon
+ do_center = TRUE
+ dim_x = S.taur_dimension_x
+ dim_y = S.taur_dimension_y
- var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer)
- if(S.center)
- genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y)
+ var/mutable_appearance/genital_overlay = mutable_appearance(accessory_icon, layer = -layer)
+ if(do_center)
+ genital_overlay = center_image(genital_overlay, dim_x, dim_y)
if(dna.species.use_skintones && dna.features["genitals_use_skintone"])
genital_overlay.color = "#[skintone2hex(skin_tone)]"
@@ -353,11 +364,10 @@
if(ishuman(src) && dna.species.id == "human")
dna.features["genitals_use_skintone"] = TRUE
dna.species.use_skintones = TRUE
- if(MUTCOLORS)
- if(src.dna.species.fixed_mut_color)
- dna.features["cock_color"] = "[dna.species.fixed_mut_color]"
- dna.features["breasts_color"] = "[dna.species.fixed_mut_color]"
- return
+ if(src.dna.species.fixed_mut_color)
+ dna.features["cock_color"] = "[dna.species.fixed_mut_color]"
+ dna.features["breasts_color"] = "[dna.species.fixed_mut_color]"
+ return
//So people who haven't set stuff up don't get rainbow surprises.
dna.features["cock_color"] = "[dna.features["mcolor"]]"
dna.features["breasts_color"] = "[dna.features["mcolor"]]"
diff --git a/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm b/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm
index 92c643c4bd..6bbe947f54 100644
--- a/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm
+++ b/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm
@@ -1,5 +1,10 @@
/datum/sprite_accessory
var/alt_aroused = FALSE //CIT CODE if this is TRUE, then the genitals will use an alternate icon_state when aroused.
+ var/taur_icon //leave null if the genital doesn't have a taur counterpart.
+ var/accepted_taurs = STYLE_HOOF_TAURIC|STYLE_PAW_TAURIC //Types that match with the accessory.
+ var/feat_taur //the text string of the dna feature to check for those who want to opt out.
+ var/taur_dimension_y = 32
+ var/taur_dimension_x = 32
//DICKS,COCKS,PENISES,WHATEVER YOU WANT TO CALL THEM
@@ -8,6 +13,7 @@
name = "penis" //the preview name of the accessory
color_src = "cock_color"
alt_aroused = TRUE
+ feat_taur = "cock_taur"
/datum/sprite_accessory/penis/human
icon_state = "human"
@@ -16,10 +22,14 @@
/datum/sprite_accessory/penis/knotted
icon_state = "knotted"
name = "Knotted"
+ taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi'
+ taur_dimension_y = 64
/datum/sprite_accessory/penis/flared
icon_state = "flared"
name = "Flared"
+ taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi'
+ taur_dimension_y = 64
/datum/sprite_accessory/penis/barbknot
icon_state = "barbknot"
@@ -28,6 +38,8 @@
/datum/sprite_accessory/penis/tapered
icon_state = "tapered"
name = "Tapered"
+ taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi'
+ taur_dimension_y = 64
/datum/sprite_accessory/penis/tentacle
icon_state = "tentacle"
@@ -41,33 +53,7 @@
icon_state = "hemiknot"
name = "Knotted Hemi"
-
-////////////////////////
-// Taur cocks go here //
-////////////////////////
-/datum/sprite_accessory/penis/taur_flared
- icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' //Needed larger width
- icon_state = "flared"
- name = "Taur, Flared"
- center = TRUE //Center the image 'cause 2-tile wide.
- dimension_x = 64
-
-/datum/sprite_accessory/penis/taur_knotted
- icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' //Needed larger width
- icon_state = "knotted"
- name = "Taur, Knotted"
- center = TRUE //Center the image 'cause 2-tile wide.
- dimension_x = 64
-
-/datum/sprite_accessory/penis/taur_tapered
- icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' //Needed larger width
- icon_state = "tapered"
- name = "Taur, Tapered"
- center = TRUE //Center the image 'cause 2-tile wide.
- dimension_x = 64
-
//Testicles
-//These ones aren't inert
/datum/sprite_accessory/testicles
icon = 'modular_citadel/icons/obj/genitals/testicles_onmob.dmi'
icon_state = "testicle"
diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm
index ded05134a9..b3ca0062f8 100644
--- a/modular_citadel/code/modules/arousal/organs/penis.dm
+++ b/modular_citadel/code/modules/arousal/organs/penis.dm
@@ -8,7 +8,7 @@
masturbation_verb = "stroke"
arousal_verb = "You pop a boner"
unarousal_verb = "Your boner goes down"
- genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_CAN_AROUSE|UPDATE_OWNER_APPEARANCE|GENITAL_UNDIES_HIDDEN
+ genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_CAN_AROUSE|UPDATE_OWNER_APPEARANCE|GENITAL_UNDIES_HIDDEN|GENITAL_CAN_TAUR
linked_organ_slot = ORGAN_SLOT_TESTICLES
fluid_transfer_factor = 0.5
shape = DEF_COCK_SHAPE
@@ -79,7 +79,6 @@
var/icon_shape = S ? S.icon_state : "human"
icon_state = "penis_[icon_shape]_[size]"
var/lowershape = lowertext(shape)
- desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(diameter, 0.25)] inch[round(diameter, 0.25) != 1 ? "es" : ""] in diameter."
if(owner)
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
@@ -89,6 +88,12 @@
icon_state += "_s"
else
color = "#[owner.dna.features["cock_color"]]"
+ if(genital_flags & GENITAL_CAN_TAUR && S?.taur_icon && (!S.feat_taur || owner.dna.features[S.feat_taur]) && owner.dna.species.mutant_bodyparts["taur"])
+ var/datum/sprite_accessory/taur/T = GLOB.taur_list[owner.dna.features["taur"]]
+ if(T.taur_mode & S.accepted_taurs) //looks out of place on those.
+ lowershape = "taur, [lowershape]"
+
+ desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(diameter, 0.25)] inch[round(diameter, 0.25) != 1 ? "es" : ""] in diameter."
/obj/item/organ/genital/penis/get_features(mob/living/carbon/human/H)
var/datum/dna/D = H.dna
diff --git a/modular_citadel/code/modules/clothing/neck.dm b/modular_citadel/code/modules/clothing/neck.dm
index 20324516f6..f57e2ae530 100644
--- a/modular_citadel/code/modules/clothing/neck.dm
+++ b/modular_citadel/code/modules/clothing/neck.dm
@@ -7,7 +7,7 @@
icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi'
item_state = "undertale"
icon_state = "undertale"
- alternate_worn_icon = 'modular_citadel/icons/mob/clothing/necks.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/clothing/necks.dmi'
resistance_flags = FIRE_PROOF
actions_types = list(/datum/action/item_action/zanderlocket)
var/toggled = FALSE
diff --git a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm b/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm
deleted file mode 100644
index ade6cee3ba..0000000000
--- a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm
+++ /dev/null
@@ -1,40 +0,0 @@
-/obj/item/clothing/neck/cloak/polychromic //enables all three overlays to reduce copypasta and defines basic stuff
- name = "polychromic cloak"
- desc = "For when you want to show off your horrible colour coordination skills."
- icon = 'modular_citadel/icons/polyclothes/item/neck.dmi'
- alternate_worn_icon = 'modular_citadel/icons/polyclothes/mob/neck.dmi'
- icon_state = "polyce"
- item_color = "polyce"
- item_state = "qmcloak"
- hasprimary = TRUE
- hassecondary = TRUE
- hastertiary = TRUE
- primary_color = "#FFFFFF" //RGB in hexcode
- secondary_color = "#FFFFFF"
- tertiary_color = "#808080"
-
-/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon
- . = ..()
- if(hasprimary | hassecondary | hastertiary)
- if(!isinhands) //prevents the worn sprites from showing up if you're just holding them
- if(hasprimary) //checks if overlays are enabled
- var/mutable_appearance/primary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-primary") //automagical sprite selection
- primary_worn.color = primary_color //colors the overlay
- . += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite.
- if(hassecondary)
- var/mutable_appearance/secondary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-secondary")
- secondary_worn.color = secondary_color
- . += secondary_worn
- if(hastertiary)
- var/mutable_appearance/tertiary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-tertiary")
- tertiary_worn.color = tertiary_color
- . += tertiary_worn
-
-/obj/item/clothing/neck/cloak/polychromic/polyce //DONATOR ITEM
- name = "polychromic embroidered cloak"
- desc = "A fancy cloak embroidered with polychromatic thread in a pattern that reminds one of the wielders of unlimited power."
- icon_state = "polyce"
- item_color = "polyce"
- primary_color = "#808080" //RGB in hexcode
- secondary_color = "#8CC6FF"
- tertiary_color = "#FF3535"
\ No newline at end of file
diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm
index 4b9dd131ca..25b0c120e5 100644
--- a/modular_citadel/code/modules/clothing/suits/suits.dm
+++ b/modular_citadel/code/modules/clothing/suits/suits.dm
@@ -8,7 +8,7 @@
/obj/item/clothing/suit/armor/hos/trenchcoat/cloak
name = "armored trenchcloak"
desc = "A trenchcoat enchanced with a special lightweight kevlar. This one appears to be designed to be draped over one's shoulders rather than worn normally.."
- alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
icon_state = "hostrench"
item_state = "hostrench"
mutantrace_variation = NONE
diff --git a/modular_citadel/code/modules/clothing/trek.dm b/modular_citadel/code/modules/clothing/trek.dm
index c6b0b80f22..b4ec9fbd61 100644
--- a/modular_citadel/code/modules/clothing/trek.dm
+++ b/modular_citadel/code/modules/clothing/trek.dm
@@ -15,7 +15,7 @@
desc = "The overcoat worn by all officers of the 2380s."
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
icon_state = "trek_ds9_coat"
- alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = "trek_ds9_coat"
body_parts_covered = CHEST|GROIN|ARMS
mutantrace_variation = NONE
@@ -44,7 +44,7 @@
name = "Federation Uniform Jacket"
desc = "A uniform jacket from the United Federation. Set phasers to awesome."
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
- alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
icon_state = "fedcoat"
item_state = "fedcoat"
mutantrace_variation = NONE
@@ -110,7 +110,7 @@
name = "Modern Federation Uniform Jacket"
desc = "A modern uniform jacket from the United Federation."
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
- alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
icon_state = "fedmodern"
item_state = "fedmodern"
body_parts_covered = CHEST|GROIN|ARMS
@@ -142,7 +142,7 @@
desc = "An officer's cap that demands discipline from the one who wears it."
icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi'
icon_state = "fedcapofficer"
- alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = "fedcapofficer"
//Variants
diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm
index 62145616ad..bd377d6081 100644
--- a/modular_citadel/code/modules/custom_loadout/custom_items.dm
+++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm
@@ -26,7 +26,7 @@
desc = "The design on this seems a little too familiar."
icon = 'icons/obj/custom.dmi'
icon_state = "infcloak"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "infcloak"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -36,9 +36,8 @@
desc = "A soft black collar that seems to stretch to fit whoever wears it."
icon = 'icons/obj/custom.dmi'
icon_state = "infcollar"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "infcollar"
- item_color = null
tagname = null
/obj/item/clothing/accessory/medal/steele
@@ -46,14 +45,13 @@
desc = "An intricate pendant given to those who help a key member of the Steele Corporation."
icon = 'icons/obj/custom.dmi'
icon_state = "steele"
- item_color = "steele"
medaltype = "medal-silver"
/obj/item/toy/darksabre
name = "Kiara's Sabre"
desc = "This blade looks as dangerous as its owner."
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "darksabre"
item_state = "darksabre"
lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi'
@@ -70,7 +68,7 @@
name = "Ornate Sheathe"
desc = "An ornate and rather sinister looking sabre sheathe."
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "darksheath"
item_state = "darksheath"
fitting_swords = list(/obj/item/toy/darksabre)
@@ -80,7 +78,7 @@
name = "Dark Armor"
desc = "A dark, non-functional piece of armor sporting a red and black finish."
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "darkcarapace"
item_state = "darkcarapace"
blood_overlay_type = "armor"
@@ -107,8 +105,7 @@
icon = 'icons/obj/custom.dmi'
icon_state = "zombscarf"
desc = "A fashionable collar"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
- item_color = "zombscarf"
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
dog_fashion = /datum/dog_fashion/head
/obj/item/clothing/suit/toggle/labcoat/mad/red
@@ -116,7 +113,7 @@
desc = "An oddly special looking coat."
icon = 'icons/obj/custom.dmi'
icon_state = "labred"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "labred"
mutantrace_variation = NONE
@@ -125,7 +122,7 @@
desc = "An oddly special looking coat."
icon = 'icons/obj/custom.dmi'
icon_state = "labredblack"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "labredblack"
mutantrace_variation = NONE
@@ -144,7 +141,7 @@
name = "carrot cloak"
desc = "A cloak in the shape and color of a carrot!"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "carrotcloak"
item_state = "carrotcloak"
w_class = WEIGHT_CLASS_SMALL
@@ -156,7 +153,7 @@
icon = 'icons/obj/custom.dmi'
icon_state = "satchel_carrot"
item_state = "satchel_carrot"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
/obj/item/storage/backpack/satchel/carrot/Initialize()
. = ..()
@@ -179,7 +176,7 @@
icon = 'icons/obj/custom.dmi'
icon_state = "festive"
item_state = "festive"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -187,7 +184,7 @@
name = "Alboroto Rosa mask"
icon = 'icons/obj/custom.dmi'
icon_state = "lucharzigfie"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "lucharzigfie"
/obj/item/clothing/head/hardhat/reindeer/fluff
@@ -195,7 +192,7 @@
desc = "Some fake antlers and a very fake red nose - Sponsored by PWR Game(tm)"
icon_state = "hardhat0_reindeer"
item_state = "hardhat0_reindeer"
- item_color = "reindeer"
+ hat_type = "reindeer"
flags_inv = 0
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
brightness_on = 0 //luminosity when on
@@ -220,7 +217,7 @@
name = "The Hollow heart"
desc = "Sometimes things are too much to hide."
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "hheart"
item_state = "hheart"
flags_inv = HIDEFACE|HIDEFACIALHAIR
@@ -230,7 +227,7 @@
desc = "You would swear this was in your nightmares after eating too many veggies."
icon = 'icons/obj/custom.dmi'
icon_state = "hos-g"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "hos-g"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
mutantrace_variation = NONE
@@ -247,7 +244,7 @@
desc = "Smells like reactor four."
icon = 'icons/obj/custom.dmi'
item_state = "stalker"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "stalker"
/obj/item/reagent_containers/food/drinks/flask/steel
@@ -262,7 +259,7 @@
desc = "It's a collar..."
icon = 'icons/obj/custom.dmi'
icon_state = "petcollar-stripe"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "petcollar-stripe"
tagname = null
@@ -271,9 +268,8 @@
desc = "Just looking at this makes you want to sing."
icon = 'icons/obj/custom.dmi'
icon_state = "singer"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "singer"
- item_color = "singer"
fitted = NO_FEMALE_UNIFORM
alternate_worn_layer = ABOVE_SHOES_LAYER
can_adjust = 0
@@ -282,7 +278,7 @@
/obj/item/clothing/shoes/sneakers/pink
icon = 'icons/obj/custom.dmi'
icon_state = "pink"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "pink"
mutantrace_variation = NONE
@@ -291,13 +287,13 @@
desc = "A neosilk clip-on tie. This one has a black S on the tipping and looks rather unique."
icon = 'icons/obj/custom.dmi'
icon_state = "bloodredtie"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
/obj/item/clothing/suit/puffydress
name = "Puffy Dress"
desc = "A formal puffy black and red Victorian dress."
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "puffydress"
item_state = "puffydress"
body_parts_covered = CHEST|GROIN|LEGS
@@ -310,7 +306,7 @@
item_state = "vermillion"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/clothing/under/sweater/black/naomi
@@ -327,7 +323,7 @@
desc = "This cloak doesn't seem too special."
icon = 'icons/obj/custom.dmi'
icon_state = "wintergreencloak"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "wintergreencloak"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -343,7 +339,7 @@
desc = "An oddly special looking coat."
icon = 'icons/obj/custom.dmi'
icon_state = "rdcoat"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "rdcoat"
mutantrace_variation = NONE
@@ -359,7 +355,7 @@
desc = "These strange wings look like they once attached to something... or someone...? Whatever the case, their presence makes you feel uneasy.."
icon = 'icons/obj/custom.dmi'
icon_state = "devilwings"
- alternate_worn_icon = 'modular_citadel/icons/mob/clothing/devilwings64x64.dmi'
+ mob_overlay_icon = 'modular_citadel/icons/mob/clothing/devilwings64x64.dmi'
item_state = "devilwings"
worn_x_dimension = 64
worn_y_dimension = 34
@@ -369,14 +365,14 @@
desc = "A truly patriotic form of heroic attire."
icon = 'icons/obj/custom.dmi'
resistance_flags = FLAMMABLE
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "flagcape"
item_state = "flagcape"
/obj/item/clothing/shoes/lucky
name = "Lucky Jackboots"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
desc = "Comfy Lucky Jackboots with the word Luck on them."
item_state = "luckyjack"
icon_state = "luckyjack"
@@ -385,7 +381,7 @@
/obj/item/clothing/under/custom/lunasune
name = "Divine Robes"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
desc = "Heavenly robes of the kitsune Luna Pumpkin,you can feel radiance coming from them."
item_state = "Divine_robes"
icon_state = "Divine_robes"
@@ -394,7 +390,7 @@
/obj/item/clothing/under/custom/leoskimpy
name = "Leon's Skimpy Outfit"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
desc = "A rather skimpy outfit."
item_state = "shark_cloth"
icon_state = "shark_cloth"
@@ -403,7 +399,7 @@
/obj/item/clothing/under/custom/mimeoveralls
name = "Mime's Overalls"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
desc = "A less-than-traditional mime's attire, completed by a set of dorky-looking overalls."
item_state = "moveralls"
icon_state = "moveralls"
@@ -415,7 +411,7 @@
icon_state = "zuliecloak"
item_state = "zuliecloak"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
hoodtype = /obj/item/clothing/head/hooded/cloakhood/zuliecloak
body_parts_covered = CHEST|GROIN|ARMS
slot_flags = SLOT_WEAR_SUIT | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong?
@@ -427,7 +423,7 @@
icon_state = "zuliecap"
item_state = "zuliecap"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
flags_inv = HIDEEARS|HIDEHAIR
mutantrace_variation = NONE
@@ -435,7 +431,7 @@
name = "Multicolor Coat"
desc = "An oddly special looking coat with black, red, and gold"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
icon_state = "redgoldjacket"
item_state = "redgoldjacket"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -447,7 +443,7 @@
icon_state = "kimono"
item_state = "kimono"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
body_parts_covered = CHEST|GROIN|LEGS|ARMS
mutantrace_variation = NONE
@@ -457,7 +453,7 @@
icon_state = "commjacket"
item_state = "commjacket"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
body_parts_covered = CHEST|GROIN|LEGS|ARMS
mutantrace_variation = NONE
@@ -467,7 +463,7 @@
icon_state = "mw2_russian_para"
item_state = "mw2_russian_para"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/clothing/gloves/longblackgloves
@@ -476,7 +472,7 @@
icon_state = "longblackgloves"
item_state = "longblackgloves"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
/obj/item/clothing/under/custom/trendy_fit
name = "Trendy Fitting Clothing"
@@ -484,7 +480,7 @@
icon_state = "trendy_fit"
item_state = "trendy_fit"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/clothing/head/blueberet
@@ -493,7 +489,7 @@
icon_state = "blueberet"
item_state = "blueberet"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
dynamic_hair_suffix = ""
/obj/item/clothing/head/flight
@@ -502,7 +498,7 @@
icon_state = "flight-g"
item_state = "flight-g"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
/obj/item/clothing/neck/necklace/onion
name = "Onion Necklace"
@@ -510,7 +506,7 @@
icon = 'icons/obj/custom.dmi'
icon_state = "onion"
item_state = "onion"
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
/obj/item/clothing/under/custom/mikubikini
name = "starlight singer bikini"
@@ -518,7 +514,7 @@
icon_state = "mikubikini"
item_state = "mikubikini"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/clothing/suit/mikujacket
@@ -527,7 +523,7 @@
icon_state = "mikujacket"
item_state = "mikujacket"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/clothing/head/mikuhair
@@ -536,7 +532,7 @@
icon_state = "mikuhair"
item_state = "mikuhair"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
flags_inv = HIDEHAIR
@@ -546,7 +542,7 @@
icon_state = "mikugloves"
item_state = "mikugloves"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/clothing/shoes/sneakers/mikuleggings
@@ -555,7 +551,7 @@
icon_state = "mikuleggings"
item_state = "mikuleggings"
icon = 'icons/obj/custom.dmi'
- alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/toy/plush/mammal/dog/fritz
@@ -567,3 +563,8 @@
unique_reskin = list("Goodboye" = "fritz", "Badboye" = "fritz_bad")
mutantrace_variation = NONE
+/obj/item/clothing/neck/cloak/polychromic/polyce
+ name = "polychromic embroidered cloak"
+ desc = "A fancy cloak embroidered with polychromatic thread in a pattern that reminds one of the wielders of unlimited power."
+ icon_state = "polyce"
+ poly_colors = list("#808080", "#8CC6FF", "#FF3535")
diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
index 6d080ee898..0a3bdb727d 100644
--- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
+++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
@@ -424,15 +424,15 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
if(hit_atom)
if(isliving(hit_atom))
var/mob/living/L = hit_atom
- if(!L.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK))
+ if(L.run_block(0, "the [name]", src, ATTACK_TYPE_TACKLE, 0, src) & BLOCK_SUCCESS)
+ DefaultCombatKnockdown(15, 1, 1)
+ else
L.visible_message("[src] pounces on [L]! ", "[src] pounces on you! ")
L.DefaultCombatKnockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice.
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1)
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
step_towards(src,L)
log_combat(src, L, "borg pounced")
- else
- DefaultCombatKnockdown(15, 1, 1)
pounce_cooldown = !pounce_cooldown
spawn(pounce_cooldown_time) //3s by default
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm
index 98d2efc4ea..20917c4ba5 100644
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/handguns.dm
@@ -1,34 +1,3 @@
-////////////Anti Tank Pistol////////////
-
-/obj/item/gun/ballistic/automatic/pistol/antitank
- name = "Anti Tank Pistol"
- desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate your wrist."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "atp"
- item_state = "pistol"
- recoil = 4
- mag_type = /obj/item/ammo_box/magazine/sniper_rounds
- fire_delay = 50
- burst_size = 1
- can_suppress = 0
- w_class = WEIGHT_CLASS_NORMAL
- actions_types = list()
- fire_sound = 'sound/weapons/blastcannon.ogg'
- spread = 20 //damn thing has no rifling.
-
-/obj/item/gun/ballistic/automatic/pistol/antitank/update_icon()
- ..()
- if(magazine)
- cut_overlays()
- add_overlay("atp-mag")
- else
- cut_overlays()
- icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
-
-/obj/item/gun/ballistic/automatic/pistol/antitank/syndicate
- name = "Syndicate Anti Tank Pistol"
- desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate a variety of joints without proper bracing."
- pin = /obj/item/firing_pin/implant/pindicate
///foam stealth pistol///
@@ -56,75 +25,6 @@
cut_overlays()
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
-//////10mm soporific bullets//////
-
-obj/item/projectile/bullet/c10mm/soporific
- name ="10mm soporific bullet"
- armour_penetration = 0
- nodamage = TRUE
- dismemberment = 0
- knockdown = 0
-
-/obj/item/projectile/bullet/c10mm/soporific/on_hit(atom/target, blocked = FALSE)
- . = ..()
- if((blocked != 100) && isliving(target))
- var/mob/living/L = target
- L.blur_eyes(6)
- if(L.getStaminaLoss() >= 60)
- L.Sleeping(300)
- else
- L.adjustStaminaLoss(25)
-
-/obj/item/ammo_casing/c10mm/soporific
- name = ".10mm soporific bullet casing"
- desc = "A 10mm soporific bullet casing."
- projectile_type = /obj/item/projectile/bullet/c10mm/soporific
-
-/obj/item/ammo_box/magazine/m10mm/soporific
- name = "pistol magazine (10mm soporific)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "9x19pS"
- desc = "A gun magazine. Loaded with rounds which inject the target with a variety of illegal substances to induce sleep in the target."
- ammo_type = /obj/item/ammo_casing/c10mm/soporific
-
-/obj/item/ammo_box/c10mm/soporific
- name = "ammo box (10mm soporific)"
- ammo_type = /obj/item/ammo_casing/c10mm/soporific
- max_ammo = 24
-
-//////modular pistol////// (reskinnable stetchkins)
-
-/obj/item/gun/ballistic/automatic/pistol/modular
- name = "modular pistol"
- desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "cde"
- can_unsuppress = TRUE
- obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "cde",
- "NT-99" = "n99",
- "Stealth" = "stealthpistol",
- "HKVP-78" = "vp78",
- "Luger" = "p08b",
- "Mk.58" = "secguncomp",
- "PX4 Storm" = "px4"
- )
-
-/obj/item/gun/ballistic/automatic/pistol/modular/update_icon()
- ..()
- if(current_skin)
- icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
- else
- icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
- if(magazine && suppressed)
- cut_overlays()
- add_overlay("[unique_reskin[current_skin]]-magazine-sup") //Yes, this means the default iconstate can't have a magazine overlay
- else if (magazine)
- cut_overlays()
- add_overlay("[unique_reskin[current_skin]]-magazine")
- else
- cut_overlays()
-
/////////RAYGUN MEMES/////////
/obj/item/projectile/beam/lasertag/ray //the projectile, compatible with regular laser tag armor
@@ -144,4 +44,4 @@ obj/item/projectile/bullet/c10mm/soporific
icon_state = "raygun"
desc = "A toy laser with a classic, retro feel and look. Compatible with existing laser tag systems."
ammo_type = list(/obj/item/ammo_casing/energy/laser/raytag)
- selfcharge = EGUN_SELFCHARGE
\ No newline at end of file
+ selfcharge = EGUN_SELFCHARGE
diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
index 49a8a26f35..49d48e0000 100644
--- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -39,7 +39,7 @@ obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
update_icon()
-obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, style_flags = NONE)
+obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(isinhands)
var/mutable_appearance/body_inhand = mutable_appearance(icon_file, "cxe_body")
diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
index 05b5c195c2..a4b6429bea 100644
--- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
+++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
@@ -87,7 +87,7 @@
. = ..()
. += "Alt-click to change firing modes. "
-/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file, style_flags = NONE) //ammo counter for inhands
+/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE) //ammo counter for inhands
. = ..()
var/ratio = CEILING((cell.charge / cell.maxcharge) * charge_sections, 1)
var/obj/item/ammo_casing/energy/shot = ammo_type[current_firemode_index]
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
index 28a776082f..198e6c5c24 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
@@ -54,15 +54,15 @@
return..()
var/mob/living/carbon/human/H = M
- var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
//If they've opted out, then route processing though liver.
if(!(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT))
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
if(L)
- L.swelling += 0.05
+ L.applyOrganDamage(0.25)
else
H.adjustToxLoss(1)
return..()
+ var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
//otherwise proceed as normal
if(!B) //If they don't have breasts, give them breasts.
@@ -95,7 +95,8 @@
/datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders.
if(!(M.client?.prefs.cit_toggles & FORCED_FEM))
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
- L.swelling+= 0.05
+ if(L)
+ L.applyOrganDamage(0.25)
return ..()
var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS)
@@ -130,7 +131,8 @@
var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
if(!(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) || !B)
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
- L.swelling-= 0.05
+ if(L)
+ L.applyOrganDamage(-0.25)
return ..()
B.modify_size(-0.05)
return ..()
@@ -208,14 +210,14 @@
if(!ishuman(M))
return ..()
var/mob/living/carbon/human/H = M
- var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS)
if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT))
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
if(L)
- L.swelling += 0.05
+ L.applyOrganDamage(0.25)
else
H.adjustToxLoss(1)
return ..()
+ var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS)
//otherwise proceed as normal
if(!P)//They do have a preponderance for escapism, or so I've heard.
@@ -241,7 +243,8 @@
return ..()
if(!(M.client?.prefs.cit_toggles & FORCED_MASC))
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
- L.swelling+= 0.05
+ if(L)
+ L.applyOrganDamage(0.25)
return..()
var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
@@ -278,7 +281,8 @@
var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS)
if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) || !P)
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
- L.swelling-= 0.05
+ if(L)
+ L.applyOrganDamage(-0.25)
return..()
P.modify_size(-0.1)
diff --git a/modular_citadel/code/modules/reagents/objects/items.dm b/modular_citadel/code/modules/reagents/objects/items.dm
index 5d207f4c73..1924e7ee00 100644
--- a/modular_citadel/code/modules/reagents/objects/items.dm
+++ b/modular_citadel/code/modules/reagents/objects/items.dm
@@ -54,7 +54,6 @@
to_chat(user, "[src] is empty! ")
add_fingerprint(user)
return
- ..()
/obj/item/fermichem/pHpaper
name = "pH indicator strip"
diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
index 41eccb7054..d2a063fd4e 100644
--- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
+++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
@@ -95,6 +95,7 @@
taste_description = "strawberry roofies"
taste_mult = 2 //Hide the roofies in stronger flavors
color = "#FFADFF"//PINK, rgb(255, 173, 255)
+ can_synth = FALSE
/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M)
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
@@ -120,6 +121,7 @@
color = "#FF2BFF"//dark pink
addiction_threshold = 20
overdose_threshold = 20
+ can_synth = FALSE
/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M)
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
@@ -174,6 +176,7 @@
taste_mult = 2
color = "#D9D9D9"//rgb(217, 217, 217)
reagent_state = SOLID
+ can_synth = FALSE
/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M)
if(M && M.client?.prefs.arousable && prob(16))
@@ -191,6 +194,7 @@
color = "#D9D9D9"//rgb(217, 217, 217)
reagent_state = SOLID
overdose_threshold = 20
+ can_synth = FALSE
/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M)
if(M && M.client?.prefs.arousable)
diff --git a/modular_citadel/icons/mob/mam_markings.dmi b/modular_citadel/icons/mob/mam_markings.dmi
index 946f17abb8..3fe7f0060e 100644
Binary files a/modular_citadel/icons/mob/mam_markings.dmi and b/modular_citadel/icons/mob/mam_markings.dmi differ
diff --git a/modular_citadel/icons/mob/mam_snouts.dmi b/modular_citadel/icons/mob/mam_snouts.dmi
index 80371ce83f..ab1a4654b4 100644
Binary files a/modular_citadel/icons/mob/mam_snouts.dmi and b/modular_citadel/icons/mob/mam_snouts.dmi differ
diff --git a/modular_citadel/icons/polyclothes/item/neck.dmi b/modular_citadel/icons/polyclothes/item/neck.dmi
deleted file mode 100644
index e2792cf9d0..0000000000
Binary files a/modular_citadel/icons/polyclothes/item/neck.dmi and /dev/null differ
diff --git a/modular_citadel/icons/polyclothes/mob/neck.dmi b/modular_citadel/icons/polyclothes/mob/neck.dmi
deleted file mode 100644
index 529c64caa2..0000000000
Binary files a/modular_citadel/icons/polyclothes/mob/neck.dmi and /dev/null differ
diff --git a/sound/effects/printer.ogg b/sound/effects/printer.ogg
new file mode 100644
index 0000000000..c9546490f1
Binary files /dev/null and b/sound/effects/printer.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c2.ogg b/sound/instruments/synthesis_samples/brass/crisis_brass/c2.ogg
new file mode 100644
index 0000000000..9808431b25
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_brass/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c3.ogg b/sound/instruments/synthesis_samples/brass/crisis_brass/c3.ogg
new file mode 100644
index 0000000000..4118cff81c
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_brass/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c4.ogg b/sound/instruments/synthesis_samples/brass/crisis_brass/c4.ogg
new file mode 100644
index 0000000000..ae9e1361d2
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_brass/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c5.ogg b/sound/instruments/synthesis_samples/brass/crisis_brass/c5.ogg
new file mode 100644
index 0000000000..f19ddd9300
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_brass/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg b/sound/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg
new file mode 100644
index 0000000000..d2c872d5a3
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg b/sound/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg
new file mode 100644
index 0000000000..e1e3fc8635
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg b/sound/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg
new file mode 100644
index 0000000000..42c4aa755d
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg b/sound/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg
new file mode 100644
index 0000000000..762d2868d0
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg b/sound/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg
new file mode 100644
index 0000000000..baf71063af
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg differ
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg b/sound/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg
new file mode 100644
index 0000000000..92b4a11018
Binary files /dev/null and b/sound/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg
new file mode 100644
index 0000000000..5a50a5091c
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg
new file mode 100644
index 0000000000..f086938260
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg
new file mode 100644
index 0000000000..1246bd5341
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg
new file mode 100644
index 0000000000..73680ce627
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg
new file mode 100644
index 0000000000..72841fb189
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg
new file mode 100644
index 0000000000..47797e4c00
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg
new file mode 100644
index 0000000000..ea34703160
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg b/sound/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg
new file mode 100644
index 0000000000..4b96dd3dd3
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg b/sound/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg
new file mode 100644
index 0000000000..25daf5372e
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg b/sound/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg
new file mode 100644
index 0000000000..9b989404e7
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg b/sound/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg
new file mode 100644
index 0000000000..7fa99d9278
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg
new file mode 100644
index 0000000000..64578a8fe1
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg
new file mode 100644
index 0000000000..d97230ce1f
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg
new file mode 100644
index 0000000000..eb6f80654a
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg
new file mode 100644
index 0000000000..8f25ee2747
Binary files /dev/null and b/sound/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg b/sound/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg
new file mode 100644
index 0000000000..17bea8122c
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg b/sound/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg
new file mode 100644
index 0000000000..6dc0d8ad38
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg b/sound/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg
new file mode 100644
index 0000000000..fbbcacb372
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg b/sound/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg
new file mode 100644
index 0000000000..f9bb3f6e92
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg b/sound/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg
new file mode 100644
index 0000000000..777a38664f
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg b/sound/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg
new file mode 100644
index 0000000000..c14aa5ec93
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg b/sound/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg
new file mode 100644
index 0000000000..b2a457b496
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg b/sound/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg
new file mode 100644
index 0000000000..c4f5aac8bf
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg
new file mode 100644
index 0000000000..6a8115f004
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg
new file mode 100644
index 0000000000..15ec741bb6
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg
new file mode 100644
index 0000000000..df4ef3fb79
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg
new file mode 100644
index 0000000000..961f4a6b90
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg b/sound/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg
new file mode 100644
index 0000000000..06ccf6ae51
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg b/sound/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg
new file mode 100644
index 0000000000..14756fb249
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg b/sound/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg
new file mode 100644
index 0000000000..544b324786
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg b/sound/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg
new file mode 100644
index 0000000000..df2dc8def5
Binary files /dev/null and b/sound/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg b/sound/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg
new file mode 100644
index 0000000000..ba20e3f4b6
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg b/sound/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg
new file mode 100644
index 0000000000..fcc8715e04
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_accordian/c4.ogg b/sound/instruments/synthesis_samples/organ/crisis_accordian/c4.ogg
new file mode 100644
index 0000000000..aa21d7e230
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_accordian/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_accordian/c5.ogg b/sound/instruments/synthesis_samples/organ/crisis_accordian/c5.ogg
new file mode 100644
index 0000000000..ac45bc6be4
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_accordian/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_church/c2.ogg b/sound/instruments/synthesis_samples/organ/crisis_church/c2.ogg
new file mode 100644
index 0000000000..71b9280e86
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_church/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_church/c3.ogg b/sound/instruments/synthesis_samples/organ/crisis_church/c3.ogg
new file mode 100644
index 0000000000..676a24669f
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_church/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_church/c4.ogg b/sound/instruments/synthesis_samples/organ/crisis_church/c4.ogg
new file mode 100644
index 0000000000..24e3732d7e
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_church/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_church/c5.ogg b/sound/instruments/synthesis_samples/organ/crisis_church/c5.ogg
new file mode 100644
index 0000000000..72dc2ce764
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_church/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_hammond/c2.ogg b/sound/instruments/synthesis_samples/organ/crisis_hammond/c2.ogg
new file mode 100644
index 0000000000..853b7591b4
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_hammond/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_hammond/c3.ogg b/sound/instruments/synthesis_samples/organ/crisis_hammond/c3.ogg
new file mode 100644
index 0000000000..205e190379
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_hammond/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg b/sound/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg
new file mode 100644
index 0000000000..e90c28f14c
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg b/sound/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg
new file mode 100644
index 0000000000..a56d3cc3f6
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_harmonica/c3.ogg b/sound/instruments/synthesis_samples/organ/crisis_harmonica/c3.ogg
new file mode 100644
index 0000000000..14c5f35eef
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_harmonica/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg b/sound/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg
new file mode 100644
index 0000000000..e06e733eb2
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg b/sound/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg
new file mode 100644
index 0000000000..3d21e92d53
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg
new file mode 100644
index 0000000000..be51b6dcd4
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg
new file mode 100644
index 0000000000..7426d246a0
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c4.ogg b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c4.ogg
new file mode 100644
index 0000000000..af7b66cf19
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c5.ogg b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c5.ogg
new file mode 100644
index 0000000000..58ff4ff216
Binary files /dev/null and b/sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c2.ogg b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c2.ogg
new file mode 100644
index 0000000000..4b7feb77a4
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c3.ogg b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c3.ogg
new file mode 100644
index 0000000000..5e7eefa79a
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c4.ogg b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c4.ogg
new file mode 100644
index 0000000000..13e49d4f3a
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c5.ogg b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c5.ogg
new file mode 100644
index 0000000000..6ef00f0700
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c6.ogg b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c6.ogg
new file mode 100644
index 0000000000..a868249ca8
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c6.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c7.ogg b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c7.ogg
new file mode 100644
index 0000000000..2d08d98dd9
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c7.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c8.ogg b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c8.ogg
new file mode 100644
index 0000000000..50e3cb76a7
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_bright_piano/c8.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c2.ogg b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c2.ogg
new file mode 100644
index 0000000000..0b87714166
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c3.ogg b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c3.ogg
new file mode 100644
index 0000000000..31fd625098
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c4.ogg b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c4.ogg
new file mode 100644
index 0000000000..0ed309dbb7
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c5.ogg b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c5.ogg
new file mode 100644
index 0000000000..7fd820d373
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c6.ogg b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c6.ogg
new file mode 100644
index 0000000000..b4ed66e27c
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c6.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c7.ogg b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c7.ogg
new file mode 100644
index 0000000000..13a5f7d873
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c7.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c8.ogg b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c8.ogg
new file mode 100644
index 0000000000..0169d52c21
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_grand_piano/c8.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c2.ogg b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c2.ogg
new file mode 100644
index 0000000000..16d49cb15e
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c3.ogg b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c3.ogg
new file mode 100644
index 0000000000..83e906cd1a
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c4.ogg b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c4.ogg
new file mode 100644
index 0000000000..33f766e4aa
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c5.ogg b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c5.ogg
new file mode 100644
index 0000000000..6ce06dda56
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/crisis_harpsichord/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_harpsi/C2.ogg b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C2.ogg
new file mode 100644
index 0000000000..3941e7af03
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C2.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_harpsi/C3.ogg b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C3.ogg
new file mode 100644
index 0000000000..4f79ee9987
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C3.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_harpsi/C4.ogg b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C4.ogg
new file mode 100644
index 0000000000..1d773c62e7
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C4.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_harpsi/C5.ogg b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C5.ogg
new file mode 100644
index 0000000000..938a557e04
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C5.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_harpsi/C6.ogg b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C6.ogg
new file mode 100644
index 0000000000..c65f06ce3e
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C6.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_harpsi/C7.ogg b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C7.ogg
new file mode 100644
index 0000000000..87d4943509
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C7.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_harpsi/C8.ogg b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C8.ogg
new file mode 100644
index 0000000000..5800b2d0ff
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_harpsi/C8.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_piano/c2.ogg b/sound/instruments/synthesis_samples/piano/fluid_piano/c2.ogg
new file mode 100644
index 0000000000..9ce5eee76e
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_piano/c2.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_piano/c3.ogg b/sound/instruments/synthesis_samples/piano/fluid_piano/c3.ogg
new file mode 100644
index 0000000000..4644327476
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_piano/c3.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_piano/c4.ogg b/sound/instruments/synthesis_samples/piano/fluid_piano/c4.ogg
new file mode 100644
index 0000000000..ab6d8a2a92
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_piano/c4.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_piano/c5.ogg b/sound/instruments/synthesis_samples/piano/fluid_piano/c5.ogg
new file mode 100644
index 0000000000..0041ea2e13
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_piano/c5.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_piano/c6.ogg b/sound/instruments/synthesis_samples/piano/fluid_piano/c6.ogg
new file mode 100644
index 0000000000..5d836b9f7c
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_piano/c6.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_piano/c7.ogg b/sound/instruments/synthesis_samples/piano/fluid_piano/c7.ogg
new file mode 100644
index 0000000000..1981572cf2
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_piano/c7.ogg differ
diff --git a/sound/instruments/synthesis_samples/piano/fluid_piano/c8.ogg b/sound/instruments/synthesis_samples/piano/fluid_piano/c8.ogg
new file mode 100644
index 0000000000..35e5b147bc
Binary files /dev/null and b/sound/instruments/synthesis_samples/piano/fluid_piano/c8.ogg differ
diff --git a/sound/instruments/synthesis_samples/tones/Sawtooth.ogg b/sound/instruments/synthesis_samples/tones/Sawtooth.ogg
new file mode 100644
index 0000000000..e46f5eaced
Binary files /dev/null and b/sound/instruments/synthesis_samples/tones/Sawtooth.ogg differ
diff --git a/sound/instruments/synthesis_samples/tones/Sine.ogg b/sound/instruments/synthesis_samples/tones/Sine.ogg
new file mode 100644
index 0000000000..e0b14869e9
Binary files /dev/null and b/sound/instruments/synthesis_samples/tones/Sine.ogg differ
diff --git a/sound/instruments/synthesis_samples/tones/Square.ogg b/sound/instruments/synthesis_samples/tones/Square.ogg
new file mode 100644
index 0000000000..817531bcca
Binary files /dev/null and b/sound/instruments/synthesis_samples/tones/Square.ogg differ
diff --git a/sound/machines/machine_vend.ogg b/sound/machines/machine_vend.ogg
new file mode 100644
index 0000000000..92867a1f3d
Binary files /dev/null and b/sound/machines/machine_vend.ogg differ
diff --git a/sound/vehicles/skateboard_ollie.ogg b/sound/vehicles/skateboard_ollie.ogg
new file mode 100644
index 0000000000..5f0f2fc30b
Binary files /dev/null and b/sound/vehicles/skateboard_ollie.ogg differ
diff --git a/sound/vehicles/skateboard_roll.ogg b/sound/vehicles/skateboard_roll.ogg
new file mode 100644
index 0000000000..326c175d77
Binary files /dev/null and b/sound/vehicles/skateboard_roll.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
old mode 100644
new mode 100755
index a766d99d5a..d7fa983a7c
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -43,6 +43,7 @@
#include "code\__DEFINES\diseases.dm"
#include "code\__DEFINES\DNA.dm"
#include "code\__DEFINES\donator_groupings.dm"
+#include "code\__DEFINES\dye_keys.dm"
#include "code\__DEFINES\dynamic.dm"
#include "code\__DEFINES\events.dm"
#include "code\__DEFINES\exports.dm"
@@ -51,6 +52,7 @@
#include "code\__DEFINES\food.dm"
#include "code\__DEFINES\footsteps.dm"
#include "code\__DEFINES\hud.dm"
+#include "code\__DEFINES\instruments.dm"
#include "code\__DEFINES\integrated_electronics.dm"
#include "code\__DEFINES\interaction_flags.dm"
#include "code\__DEFINES\inventory.dm"
@@ -156,6 +158,7 @@
#include "code\__HELPERS\text_vr.dm"
#include "code\__HELPERS\time.dm"
#include "code\__HELPERS\type2type.dm"
+#include "code\__HELPERS\type_processing.dm"
#include "code\__HELPERS\typelists.dm"
#include "code\__HELPERS\unsorted.dm"
#include "code\__HELPERS\vector.dm"
@@ -289,6 +292,7 @@
#include "code\controllers\subsystem\research.dm"
#include "code\controllers\subsystem\server_maint.dm"
#include "code\controllers\subsystem\shuttle.dm"
+#include "code\controllers\subsystem\sounds.dm"
#include "code\controllers\subsystem\spacedrift.dm"
#include "code\controllers\subsystem\stickyban.dm"
#include "code\controllers\subsystem\sun.dm"
@@ -306,6 +310,7 @@
#include "code\controllers\subsystem\processing\circuit.dm"
#include "code\controllers\subsystem\processing\fastprocess.dm"
#include "code\controllers\subsystem\processing\fields.dm"
+#include "code\controllers\subsystem\processing\instruments.dm"
#include "code\controllers\subsystem\processing\nanites.dm"
#include "code\controllers\subsystem\processing\networks.dm"
#include "code\controllers\subsystem\processing\obj.dm"
@@ -418,9 +423,10 @@
#include "code\datums\components\wearertargeting.dm"
#include "code\datums\components\wet_floor.dm"
#include "code\datums\components\crafting\craft.dm"
-#include "code\datums\components\crafting\glassware.dm"
#include "code\datums\components\crafting\guncrafting.dm"
#include "code\datums\components\crafting\recipes.dm"
+#include "code\datums\components\crafting\glassware\glassware.dm"
+#include "code\datums\components\crafting\glassware\lens_crafting.dm"
#include "code\datums\components\crafting\recipes\recipes_clothing.dm"
#include "code\datums\components\crafting\recipes\recipes_misc.dm"
#include "code\datums\components\crafting\recipes\recipes_primal.dm"
@@ -504,6 +510,8 @@
#include "code\datums\elements\flavor_text.dm"
#include "code\datums\elements\ghost_role_eligibility.dm"
#include "code\datums\elements\mob_holder.dm"
+#include "code\datums\elements\polychromic.dm"
+#include "code\datums\elements\spellcasting.dm"
#include "code\datums\elements\swimming.dm"
#include "code\datums\elements\sword_point.dm"
#include "code\datums\elements\update_icon_blocker.dm"
@@ -845,6 +853,7 @@
#include "code\game\objects\effects\decals\decal.dm"
#include "code\game\objects\effects\decals\misc.dm"
#include "code\game\objects\effects\decals\remains.dm"
+#include "code\game\objects\effects\decals\vgdecals.dm"
#include "code\game\objects\effects\decals\cleanable\aliens.dm"
#include "code\game\objects\effects\decals\cleanable\gibs.dm"
#include "code\game\objects\effects\decals\cleanable\humans.dm"
@@ -966,7 +975,6 @@
#include "code\game\objects\items\devices\geiger_counter.dm"
#include "code\game\objects\items\devices\glue.dm"
#include "code\game\objects\items\devices\gps.dm"
-#include "code\game\objects\items\devices\instruments.dm"
#include "code\game\objects\items\devices\laserpointer.dm"
#include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\megaphone.dm"
@@ -1112,7 +1120,6 @@
#include "code\game\objects\structures\mirror.dm"
#include "code\game\objects\structures\mop_bucket.dm"
#include "code\game\objects\structures\morgue.dm"
-#include "code\game\objects\structures\musician.dm"
#include "code\game\objects\structures\noticeboard.dm"
#include "code\game\objects\structures\petrified_statue.dm"
#include "code\game\objects\structures\plasticflaps.dm"
@@ -1230,6 +1237,7 @@
#include "code\modules\admin\stickyban.dm"
#include "code\modules\admin\topic.dm"
#include "code\modules\admin\whitelist.dm"
+#include "code\modules\admin\callproc\callproc.dm"
#include "code\modules\admin\DB_ban\functions.dm"
#include "code\modules\admin\verbs\adminhelp.dm"
#include "code\modules\admin\verbs\adminjump.dm"
@@ -1253,8 +1261,6 @@
#include "code\modules\admin\verbs\map_template_loadverb.dm"
#include "code\modules\admin\verbs\mapping.dm"
#include "code\modules\admin\verbs\maprotation.dm"
-#include "code\modules\admin\verbs\massmodvar.dm"
-#include "code\modules\admin\verbs\modifyvariables.dm"
#include "code\modules\admin\verbs\one_click_antag.dm"
#include "code\modules\admin\verbs\onlyone.dm"
#include "code\modules\admin\verbs\panicbunker.dm"
@@ -1268,6 +1274,16 @@
#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm"
#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm"
#include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm"
+#include "code\modules\admin\view_variables\admin_delete.dm"
+#include "code\modules\admin\view_variables\debug_variables.dm"
+#include "code\modules\admin\view_variables\get_variables.dm"
+#include "code\modules\admin\view_variables\mark_datum.dm"
+#include "code\modules\admin\view_variables\mass_edit_variables.dm"
+#include "code\modules\admin\view_variables\modify_variables.dm"
+#include "code\modules\admin\view_variables\topic.dm"
+#include "code\modules\admin\view_variables\topic_basic.dm"
+#include "code\modules\admin\view_variables\topic_list.dm"
+#include "code\modules\admin\view_variables\view_variables.dm"
#include "code\modules\antagonists\_common\antag_datum.dm"
#include "code\modules\antagonists\_common\antag_helpers.dm"
#include "code\modules\antagonists\_common\antag_hud.dm"
@@ -1976,6 +1992,22 @@
#include "code\modules\hydroponics\grown\tobacco.dm"
#include "code\modules\hydroponics\grown\tomato.dm"
#include "code\modules\hydroponics\grown\towercap.dm"
+#include "code\modules\instruments\instrument_data\_instrument_data.dm"
+#include "code\modules\instruments\instrument_data\_instrument_key.dm"
+#include "code\modules\instruments\instrument_data\brass.dm"
+#include "code\modules\instruments\instrument_data\chromatic_percussion.dm"
+#include "code\modules\instruments\instrument_data\fun.dm"
+#include "code\modules\instruments\instrument_data\guitar.dm"
+#include "code\modules\instruments\instrument_data\hardcoded.dm"
+#include "code\modules\instruments\instrument_data\organ.dm"
+#include "code\modules\instruments\instrument_data\piano.dm"
+#include "code\modules\instruments\instrument_data\synth_tones.dm"
+#include "code\modules\instruments\instruments\item.dm"
+#include "code\modules\instruments\instruments\stationary.dm"
+#include "code\modules\instruments\songs\_song.dm"
+#include "code\modules\instruments\songs\editor.dm"
+#include "code\modules\instruments\songs\play_legacy.dm"
+#include "code\modules\instruments\songs\play_synthesized.dm"
#include "code\modules\integrated_electronics\_defines.dm"
#include "code\modules\integrated_electronics\core\analyzer.dm"
#include "code\modules\integrated_electronics\core\assemblies.dm"
@@ -2206,6 +2238,7 @@
#include "code\modules\mob\living\emote.dm"
#include "code\modules\mob\living\life.dm"
#include "code\modules\mob\living\living.dm"
+#include "code\modules\mob\living\living_block.dm"
#include "code\modules\mob\living\living_combat.dm"
#include "code\modules\mob\living\living_defense.dm"
#include "code\modules\mob\living\living_defines.dm"
@@ -2283,6 +2316,7 @@
#include "code\modules\mob\living\carbon\human\emote.dm"
#include "code\modules\mob\living\carbon\human\examine.dm"
#include "code\modules\mob\living\carbon\human\human.dm"
+#include "code\modules\mob\living\carbon\human\human_block.dm"
#include "code\modules\mob\living\carbon\human\human_defense.dm"
#include "code\modules\mob\living\carbon\human\human_defines.dm"
#include "code\modules\mob\living\carbon\human\human_helpers.dm"
@@ -3258,7 +3292,6 @@
#include "modular_citadel\code\modules\client\verbs\who.dm"
#include "modular_citadel\code\modules\clothing\neck.dm"
#include "modular_citadel\code\modules\clothing\trek.dm"
-#include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm"
#include "modular_citadel\code\modules\clothing\suits\suits.dm"
#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
diff --git a/tgui-next/packages/tgui/interfaces/ChemDispenser.js b/tgui-next/packages/tgui/interfaces/ChemDispenser.js
new file mode 100644
index 0000000000..e479005396
--- /dev/null
+++ b/tgui-next/packages/tgui/interfaces/ChemDispenser.js
@@ -0,0 +1,180 @@
+import { toFixed } from 'common/math';
+import { toTitleCase } from 'common/string';
+import { Fragment } from 'inferno';
+import { useBackend } from '../backend';
+import { AnimatedNumber, Box, Button, Icon, LabeledList, ProgressBar, Section } from '../components';
+
+export const ChemDispenser = props => {
+ const { act, data } = useBackend(props);
+ const recording = !!data.recordingRecipe;
+ // TODO: Change how this piece of shit is built on server side
+ // It has to be a list, not a fucking OBJECT!
+ const recipes = Object.keys(data.recipes)
+ .map(name => ({
+ name,
+ contents: data.recipes[name],
+ }));
+ const beakerTransferAmounts = data.beakerTransferAmounts || [];
+ const beakerContents = recording
+ && Object.keys(data.recordingRecipe)
+ .map(id => ({
+ id,
+ name: toTitleCase(id.replace(/_/, ' ')),
+ volume: data.recordingRecipe[id],
+ }))
+ || data.beakerContents
+ || [];
+ return (
+
+
+
+ Recording
+
+ )}>
+
+
+
+
+
+
+
+ {!recording && (
+
+ act('clear_recipes')} />
+
+ )}
+ {!recording && (
+ act('record_recipe')} />
+ )}
+ {recording && (
+ act('cancel_recording')} />
+ )}
+ {recording && (
+ act('save_recording')} />
+ )}
+
+ )}>
+
+ {recipes.map(recipe => (
+ act('dispense_recipe', {
+ recipe: recipe.name,
+ })} />
+ ))}
+ {recipes.length === 0 && (
+
+ No recipes.
+
+ )}
+
+
+ (
+ act('amount', {
+ target: amount,
+ })} />
+ ))
+ )}>
+
+ {data.chemicals.map(chemical => (
+ act('dispense', {
+ reagent: chemical.id,
+ })} />
+ ))}
+
+
+ (
+ act('remove', { amount })} />
+ ))
+ )}>
+
+ act('eject')} />
+ )}>
+ {recording
+ && 'Virtual beaker'
+ || data.isBeakerLoaded
+ && (
+
+
+ /{data.beakerMaxVolume} units, {data.beakerCurrentpH} pH
+
+ )
+ || 'No beaker'}
+
+
+
+ {(!data.isBeakerLoaded && !recording) && 'N/A'
+ || beakerContents.length === 0 && 'Nothing'}
+
+ {beakerContents.map(chemical => (
+
+
+ {' '}
+ units of {chemical.name}
+
+ ))}
+
+
+
+
+ );
+};
diff --git a/tgui-next/packages/tgui/interfaces/ChemHeater.js b/tgui-next/packages/tgui/interfaces/ChemHeater.js
new file mode 100644
index 0000000000..3794d614be
--- /dev/null
+++ b/tgui-next/packages/tgui/interfaces/ChemHeater.js
@@ -0,0 +1,87 @@
+import { round, toFixed } from 'common/math';
+import { Fragment } from 'inferno';
+import { useBackend } from '../backend';
+import { AnimatedNumber, Box, Button, LabeledList, NumberInput, Section } from '../components';
+import { BeakerContents } from './common/BeakerContents';
+
+export const ChemHeater = props => {
+ const { act, data } = useBackend(props);
+ const {
+ targetTemp,
+ isActive,
+ isBeakerLoaded,
+ currentTemp,
+ currentpH,
+ beakerCurrentVolume,
+ beakerMaxVolume,
+ beakerContents = [],
+ } = data;
+ return (
+
+ act('power')} />
+ )}>
+
+
+ act('temperature', {
+ target: value,
+ })} />
+
+
+
+ {isBeakerLoaded && (
+ toFixed(value) + ' K'} />
+ ) || '—'}
+
+
+
+
+ {isBeakerLoaded && (
+ toFixed(value) + ' pH'} />
+ ) || '-'}
+
+
+
+
+
+
+ {beakerCurrentVolume} / {beakerMaxVolume} units
+
+ act('eject')} />
+
+ )}>
+
+
+
+ );
+};
diff --git a/tgui-next/packages/tgui/interfaces/ChemMaster.js b/tgui-next/packages/tgui/interfaces/ChemMaster.js
new file mode 100644
index 0000000000..1997b3b9b6
--- /dev/null
+++ b/tgui-next/packages/tgui/interfaces/ChemMaster.js
@@ -0,0 +1,448 @@
+import { Component, Fragment } from 'inferno';
+import { act } from '../byond';
+import { AnimatedNumber, Box, Button, ColorBox, LabeledList, NumberInput, Section, Table } from '../components';
+
+export const ChemMaster = props => {
+ const { state } = props;
+ const { config, data } = state;
+ const { ref } = config;
+ const {
+ screen,
+ beakerContents = [],
+ bufferContents = [],
+ beakerCurrentVolume,
+ beakerMaxVolume,
+ isBeakerLoaded,
+ isPillBottleLoaded,
+ pillBottleCurrentAmount,
+ pillBottleMaxAmount,
+ } = data;
+
+ return (
+
+
+
+
+ {` / ${beakerMaxVolume} units`}
+
+ act(ref, 'eject')} />
+
+ )}>
+ {!isBeakerLoaded && (
+
+ No beaker loaded.
+
+ )}
+ {!!isBeakerLoaded && beakerContents.length === 0 && (
+
+ Beaker is empty.
+
+ )}
+
+ {beakerContents.map(chemical => (
+
+ ))}
+
+
+
+
+ Mode:
+
+ act(ref, 'toggleMode')} />
+
+ )}>
+ {bufferContents.length === 0 && (
+
+ Buffer is empty.
+
+ )}
+
+ {bufferContents.map(chemical => (
+
+ ))}
+
+
+
+ {!!isPillBottleLoaded && (
+
+
+ {pillBottleCurrentAmount} / {pillBottleMaxAmount} pills
+
+ act(ref, 'ejectPillBottle')} />
+
+ )} />
+ )}
+
+ );
+};
+
+const ChemicalBuffer = Table;
+
+const ChemicalBufferEntry = props => {
+ const { state, chemical, transferTo } = props;
+ const { ref } = state.config;
+ return (
+
+
+
+ {` units of ${chemical.name}`}
+
+
+ act(ref, 'transfer', {
+ id: chemical.id,
+ amount: 1,
+ to: transferTo,
+ })} />
+ act(ref, 'transfer', {
+ id: chemical.id,
+ amount: 5,
+ to: transferTo,
+ })} />
+ act(ref, 'transfer', {
+ id: chemical.id,
+ amount: 10,
+ to: transferTo,
+ })} />
+ act(ref, 'transfer', {
+ id: chemical.id,
+ amount: 1000,
+ to: transferTo,
+ })} />
+ act(ref, 'transfer', {
+ id: chemical.id,
+ amount: -1,
+ to: transferTo,
+ })} />
+ act(ref, 'analyze', {
+ id: chemical.id,
+ })} />
+
+
+ );
+};
+
+const PackagingControlsItem = props => {
+ const {
+ label,
+ amountUnit,
+ amount,
+ onChangeAmount,
+ onCreate,
+ sideNote,
+ } = props;
+ return (
+
+
+
+
+
+ );
+};
+
+class PackagingControls extends Component {
+ constructor() {
+ super();
+ this.state = {
+ pillAmount: 1,
+ patchAmount: 1,
+ bottleAmount: 1,
+ packAmount: 1,
+ vialAmount: 1,
+ dartAmount: 1,
+ };
+ }
+
+ render() {
+ const { state, props } = this;
+ const { ref } = props.state.config;
+ const {
+ pillAmount,
+ patchAmount,
+ bottleAmount,
+ packAmount,
+ vialAmount,
+ dartAmount,
+ } = this.state;
+ const {
+ condi,
+ chosenPillStyle,
+ pillStyles = [],
+ } = props.state.data;
+ return (
+
+ {!condi && (
+
+ {pillStyles.map(pill => (
+ act(ref, 'pillStyle', { id: pill.id })}>
+
+
+ ))}
+
+ )}
+ {!condi && (
+ this.setState({
+ pillAmount: value,
+ })}
+ onCreate={() => act(ref, 'create', {
+ type: 'pill',
+ amount: pillAmount,
+ volume: 'auto',
+ })} />
+ )}
+ {!condi && (
+ this.setState({
+ patchAmount: value,
+ })}
+ onCreate={() => act(ref, 'create', {
+ type: 'patch',
+ amount: patchAmount,
+ volume: 'auto',
+ })} />
+ )}
+ {!condi && (
+ this.setState({
+ bottleAmount: value,
+ })}
+ onCreate={() => act(ref, 'create', {
+ type: 'bottle',
+ amount: bottleAmount,
+ volume: 'auto',
+ })} />
+ )}
+ {!condi && (
+ this.setState({
+ vialAmount: value,
+ })}
+ onCreate={() => act(ref, 'create', {
+ type: 'hypoVial',
+ amount: vialAmount,
+ volume: 'auto',
+ })} />
+ )}
+ {!condi && (
+ this.setState({
+ dartAmount: value,
+ })}
+ onCreate={() => act(ref, 'create', {
+ type: 'smartDart',
+ amount: dartAmount,
+ volume: 'auto',
+ })} />
+ )}
+ {!!condi && (
+ this.setState({
+ packAmount: value,
+ })}
+ onCreate={() => act(ref, 'create', {
+ type: 'condimentPack',
+ amount: packAmount,
+ volume: 'auto',
+ })} />
+ )}
+ {!!condi && (
+ this.setState({
+ bottleAmount: value,
+ })}
+ onCreate={() => act(ref, 'create', {
+ type: 'condimentBottle',
+ amount: bottleAmount,
+ volume: 'auto',
+ })} />
+ )}
+
+ );
+ }
+}
+
+const AnalysisResults = props => {
+ const { state, fermianalyze } = props;
+ const { ref } = state.config;
+ const { analyzeVars } = state.data;
+ return (
+ act(ref, 'goScreen', {
+ screen: 'home',
+ })} />
+ )}>
+ {!fermianalyze && (
+
+
+ {analyzeVars.name}
+
+
+ {analyzeVars.state}
+
+
+
+ {analyzeVars.color}
+
+
+ {analyzeVars.description}
+
+
+ {analyzeVars.metaRate} u/minute
+
+
+ {analyzeVars.overD}
+
+
+ {analyzeVars.addicD}
+
+
+ )}
+ {!!fermianalyze && (
+
+
+ {analyzeVars.name}
+
+
+ {analyzeVars.state}
+
+
+
+ {analyzeVars.color}
+
+
+ {analyzeVars.description}
+
+
+ {analyzeVars.metaRate} u/minute
+
+
+ {analyzeVars.overD}
+
+
+ {analyzeVars.addicD}
+
+
+ {analyzeVars.purityF}
+
+
+ {analyzeVars.inverseRatioF}
+
+
+ {analyzeVars.purityE}
+
+
+ {analyzeVars.minTemp}
+
+
+ {analyzeVars.maxTemp}
+
+
+ {analyzeVars.eTemp}
+
+
+ {analyzeVars.pHpeak}
+
+
+ )}
+
+ );
+};
diff --git a/tgui-next/packages/tgui/interfaces/Sleeper.js b/tgui-next/packages/tgui/interfaces/Sleeper.js
new file mode 100644
index 0000000000..dabf0f355d
--- /dev/null
+++ b/tgui-next/packages/tgui/interfaces/Sleeper.js
@@ -0,0 +1,181 @@
+import { useBackend } from '../backend';
+import { Box, Section, LabeledList, Button, ProgressBar, Flex, AnimatedNumber } from '../components';
+import { Fragment } from 'inferno';
+
+export const Sleeper = props => {
+ const { act, data } = useBackend(props);
+
+ const {
+ occupied,
+ open,
+ occupant = [],
+ } = data;
+
+ const preSortChems = data.chems || [];
+ const chems = preSortChems.sort((a, b) => {
+ const descA = a.name.toLowerCase();
+ const descB = b.name.toLowerCase();
+ if (descA < descB) {
+ return -1;
+ }
+ if (descA > descB) {
+ return 1;
+ }
+ return 0;
+ });
+ const preSortSynth = data.synthchems || [];
+ const synthchems = preSortSynth.sort((a, b) => {
+ const descA = a.name.toLowerCase();
+ const descB = b.name.toLowerCase();
+ if (descA < descB) {
+ return -1;
+ }
+ if (descA > descB) {
+ return 1;
+ }
+ return 0;
+ });
+
+ const damageTypes = [
+ {
+ label: 'Brute',
+ type: 'bruteLoss',
+ },
+ {
+ label: 'Burn',
+ type: 'fireLoss',
+ },
+ {
+ label: 'Toxin',
+ type: 'toxLoss',
+ },
+ {
+ label: 'Oxygen',
+ type: 'oxyLoss',
+ },
+ ];
+
+ return (
+
+
+ {occupant.stat}
+
+ )}>
+ {!!occupied && (
+
+
+
+
+ {damageTypes.map(type => (
+
+
+
+ ))}
+
+
+
+
+ {data.blood_status}
+
+
+ {occupant.cloneLoss ? 'Damaged' : 'Healthy'}
+
+
+ {occupant.brainLoss ? 'Abnormal' : 'Healthy'}
+
+
+
+ )}
+
+
+
+ {data.chemical_list.map(specificChem => (
+
+ {specificChem.volume} units of {specificChem.name}
+
+ ),
+ )}
+
+
+ act('door')} />
+ )}>
+ {chems.map(chem => (
+ act('inject', {
+ chem: chem.id,
+ })}
+ />
+ ))}
+
+
+ {synthchems.map(chem => (
+ act('synth', {
+ chem: chem.id,
+ })}
+ />
+ ))}
+
+
+ {chems.map(chem => (
+ act('purge', {
+ chem: chem.id,
+ })}
+ />
+ ))}
+
+
+ );
+};
diff --git a/tgui-next/packages/tgui/interfaces/Vending.js b/tgui-next/packages/tgui/interfaces/Vending.js
index e394c2d241..b6ffde015d 100644
--- a/tgui-next/packages/tgui/interfaces/Vending.js
+++ b/tgui-next/packages/tgui/interfaces/Vending.js
@@ -9,54 +9,40 @@ export const Vending = props => {
const { ref } = config;
let inventory;
let custom = false;
- if (data.vending_machine_input) {
- inventory = data.vending_machine_input;
- custom = true;
+ const onstation = true;
+ if (data.extended_inventory && data.coin) {
+ inventory = [
+ ...data.product_records,
+ ...data.hidden_records,
+ ...data.coin_records,
+ ];
} else if (data.extended_inventory) {
inventory = [
...data.product_records,
- ...data.coin_records,
...data.hidden_records,
];
+ } else if (data.coin) {
+ inventory = [
+ ...data.product_records,
+ ...data.coin_records,
+ ];
} else {
inventory = [
...data.product_records,
- ...data.coin_records,
];
}
return (
- {data.onstation && (
-
- {data.user && (
-
- Welcome, {data.user.name} ,
- {' '}
- {data.user.job || "Unemployed"} !
-
- Your balance is {data.user.cash} credits .
-
- ) || (
-
- No registered ID card!
- Please contact your local HoP!
-
- )}
+ {data.coin && (
+
+ act(ref, 'takeoutcoin')} />
)}
{inventory.map((product => {
- const free = (
- !data.onstation
- || product.price === 0
- || (
- !product.premium
- && data.department
- && data.user
- && data.department === data.user.department
- )
- );
return (
@@ -91,23 +77,13 @@ export const Vending = props => {
{custom && (
act(ref, 'dispense', {
'item': product.name,
})} />
) || (
data.user.cash
- )
- )
- )}
- content={free ? 'FREE' : product.price + ' cr'}
+ content={'Vend'}
onClick={() => act(ref, 'vend', {
'ref': product.ref,
})} />
diff --git a/tgui-next/packages/tgui/interfaces/common/BeakerContents.js b/tgui-next/packages/tgui/interfaces/common/BeakerContents.js
index 6517c84461..9e96967e8a 100644
--- a/tgui-next/packages/tgui/interfaces/common/BeakerContents.js
+++ b/tgui-next/packages/tgui/interfaces/common/BeakerContents.js
@@ -15,7 +15,7 @@ export const BeakerContents = props => {
)}
{beakerContents.map(chemical => (
- {chemical.volume} units of {chemical.name}
+ {chemical.volume} units of {chemical.name}, Purity: {chemical.purity}
))}
diff --git a/tgui-next/packages/tgui/public/tgui.bundle.js b/tgui-next/packages/tgui/public/tgui.bundle.js
index cbc23ebda0..97dfccc6f3 100644
--- a/tgui-next/packages/tgui/public/tgui.bundle.js
+++ b/tgui-next/packages/tgui/public/tgui.bundle.js
@@ -1,3 +1,3 @@
-!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=164)}([function(e,t,n){"use strict";var o=n(5),r=n(18).f,a=n(25),i=n(22),c=n(89),l=n(122),u=n(61);e.exports=function(e,t){var n,d,s,p,m,f=e.target,h=e.global,C=e.stat;if(n=h?o:C?o[f]||c(f,{}):(o[f]||{}).prototype)for(d in t){if(p=t[d],s=e.noTargetGet?(m=r(n,d))&&m.value:n[d],!u(h?d:f+(C?".":"#")+d,e.forced)&&s!==undefined){if(typeof p==typeof s)continue;l(p,s)}(e.sham||s&&s.sham)&&a(p,"sham",!0),i(n,d,p,e)}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(386);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=o[e])}))},function(e,t,n){"use strict";t.__esModule=!0,t.Chart=t.Tooltip=t.Toast=t.TitleBar=t.Tabs=t.Table=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.LabeledList=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.Dimmer=t.Collapsible=t.ColorBox=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var o=n(158);t.AnimatedNumber=o.AnimatedNumber;var r=n(391);t.BlockQuote=r.BlockQuote;var a=n(17);t.Box=a.Box;var i=n(114);t.Button=i.Button;var c=n(393);t.ColorBox=c.ColorBox;var l=n(394);t.Collapsible=l.Collapsible;var u=n(395);t.Dimmer=u.Dimmer;var d=n(396);t.Dropdown=d.Dropdown;var s=n(397);t.Flex=s.Flex;var p=n(161);t.Grid=p.Grid;var m=n(87);t.Icon=m.Icon;var f=n(160);t.Input=f.Input;var h=n(163);t.LabeledList=h.LabeledList;var C=n(398);t.NoticeBox=C.NoticeBox;var g=n(399);t.NumberInput=g.NumberInput;var b=n(400);t.ProgressBar=b.ProgressBar;var v=n(401);t.Section=v.Section;var N=n(162);t.Table=N.Table;var V=n(402);t.Tabs=V.Tabs;var y=n(403);t.TitleBar=y.TitleBar;var _=n(117);t.Toast=_.Toast;var x=n(159);t.Tooltip=x.Tooltip;var k=n(404);t.Chart=k.Chart},function(e,t,n){"use strict";t.__esModule=!0,t.useBackend=t.backendReducer=t.backendUpdate=void 0;var o=n(37),r=n(19);t.backendUpdate=function(e){return{type:"backendUpdate",payload:e}};t.backendReducer=function(e,t){var n=t.type,r=t.payload;if("backendUpdate"===n){var a=Object.assign({},e.config,{},r.config),i=Object.assign({},e.data,{},r.static_data,{},r.data),c=a.status!==o.UI_DISABLED,l=a.status===o.UI_INTERACTIVE;return Object.assign({},e,{config:a,data:i,visible:c,interactive:l})}return e};t.useBackend=function(e){var t=e.state,n=(e.dispatch,t.config.ref);return Object.assign({},t,{act:function(e,t){return void 0===t&&(t={}),(0,r.act)(n,e,t)}})}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(118))},function(e,t,n){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";var o,r=n(9),a=n(5),i=n(6),c=n(15),l=n(74),u=n(25),d=n(22),s=n(13).f,p=n(36),m=n(53),f=n(11),h=n(58),C=a.DataView,g=C&&C.prototype,b=a.Int8Array,v=b&&b.prototype,N=a.Uint8ClampedArray,V=N&&N.prototype,y=b&&p(b),_=v&&p(v),x=Object.prototype,k=x.isPrototypeOf,L=f("toStringTag"),w=h("TYPED_ARRAY_TAG"),B=!(!a.ArrayBuffer||!C),S=B&&!!m&&"Opera"!==l(a.opera),I=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},A=function(e){var t=l(e);return"DataView"===t||c(T,t)},E=function(e){return i(e)&&c(T,l(e))};for(o in T)a[o]||(S=!1);if((!S||"function"!=typeof y||y===Function.prototype)&&(y=function(){throw TypeError("Incorrect invocation")},S))for(o in T)a[o]&&m(a[o],y);if((!S||!_||_===x)&&(_=y.prototype,S))for(o in T)a[o]&&m(a[o].prototype,_);if(S&&p(V)!==_&&m(V,_),r&&!c(_,L))for(o in I=!0,s(_,L,{get:function(){return i(this)?this[w]:undefined}}),T)a[o]&&u(a[o],w,o);B&&m&&p(g)!==x&&m(g,x),e.exports={NATIVE_ARRAY_BUFFER:B,NATIVE_ARRAY_BUFFER_VIEWS:S,TYPED_ARRAY_TAG:I&&w,aTypedArray:function(e){if(E(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(m){if(k.call(y,e))return e}else for(var t in T)if(c(T,o)){var n=a[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(r){if(n)for(var o in T){var i=a[o];i&&c(i.prototype,e)&&delete i.prototype[e]}_[e]&&!n||d(_,e,n?t:S&&v[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var o,i;if(r){if(m){if(n)for(o in T)(i=a[o])&&c(i,e)&&delete i[e];if(y[e]&&!n)return;try{return d(y,e,n?t:S&&b[e]||t)}catch(l){}}for(o in T)!(i=a[o])||i[e]&&!n||d(i,e,t)}},isView:A,isTypedArray:E,TypedArray:y,TypedArrayPrototype:_}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var o=n(30),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},function(e,t,n){"use strict";var o=n(5),r=n(91),a=n(15),i=n(58),c=n(95),l=n(125),u=r("wks"),d=o.Symbol,s=l?d:i;e.exports=function(e){return a(u,e)||(c&&a(d,e)?u[e]=d[e]:u[e]=s("Symbol."+e)),u[e]}},function(e,t,n){"use strict";t.__esModule=!0,t.isFalsy=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;n_;_++)if((p||_ in N)&&(b=V(g=N[_],_,v),e))if(t)k[_]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return _;case 2:l.call(k,g)}else if(d)return!1;return s?-1:u||d?d:k}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},function(e,t,n){"use strict";t.__esModule=!0,t.Box=t.computeBoxProps=t.unit=void 0;var o=n(1),r=n(12),a=n(392),i=n(37);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){return"string"==typeof e?e:"number"==typeof e?6*e+"px":void 0};t.unit=l;var u=function(e){return"string"==typeof e&&i.CSS_COLORS.includes(e)},d=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=n)}},s=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=l(n))}},p=function(e,t){return function(n,o){(0,r.isFalsy)(o)||(n[e]=t)}},m=function(e,t){return function(n,o){if(!(0,r.isFalsy)(o))for(var a=0;a0&&(t.style=l),t};t.computeBoxProps=C;var g=function(e){var t=e.as,n=void 0===t?"div":t,i=e.className,l=e.content,d=e.children,s=c(e,["as","className","content","children"]),p=e.textColor||e.color,m=e.backgroundColor;if("function"==typeof d)return d(C(e));var f=C(s);return(0,o.createVNode)(a.VNodeFlags.HtmlElement,n,(0,r.classes)([i,u(p)&&"color-"+p,u(m)&&"color-bg-"+m]),l||d,a.ChildFlags.UnknownChildren,f)};t.Box=g,g.defaultHooks=r.pureComponentHooks;var b=function(e){var t=e.children,n=c(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,g,Object.assign({position:"relative"},n,{children:(0,o.createComponentVNode)(2,g,{fillPositionedParent:!0,children:t})})))};b.defaultHooks=r.pureComponentHooks,g.Forced=b},function(e,t,n){"use strict";var o=n(9),r=n(71),a=n(46),i=n(24),c=n(33),l=n(15),u=n(119),d=Object.getOwnPropertyDescriptor;t.f=o?d:function(e,t){if(e=i(e),t=c(t,!0),u)try{return d(e,t)}catch(n){}if(l(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";t.__esModule=!0,t.winset=t.winget=t.act=t.runCommand=t.callByondAsync=t.callByond=t.tridentVersion=void 0;var o,r=n(29),a=(o=navigator.userAgent.match(/Trident\/(\d+).+?;/i)[1])?parseInt(o,10):null;t.tridentVersion=a;var i=function(e,t){return void 0===t&&(t={}),"byond://"+e+"?"+(0,r.buildQueryString)(t)},c=function(e,t){void 0===t&&(t={}),window.location.href=i(e,t)};t.callByond=c;var l=function(e,t){void 0===t&&(t={}),window.__callbacks__=window.__callbacks__||[];var n=window.__callbacks__.length,o=new Promise((function(e){window.__callbacks__.push(e)}));return window.location.href=i(e,Object.assign({},t,{callback:"__callbacks__["+n+"]"})),o};t.callByondAsync=l;t.runCommand=function(e){return c("winset",{command:e})};t.act=function(e,t,n){return void 0===n&&(n={}),c("",Object.assign({src:e,action:t},n))};var u=function(e,t){var n;return regeneratorRuntime.async((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,regeneratorRuntime.awrap(l("winget",{id:e,property:t}));case 2:return n=o.sent,o.abrupt("return",n[t]);case 4:case"end":return o.stop()}}))};t.winget=u;t.winset=function(e,t,n){var o;return c("winset",((o={})[e+"."+t]=n,o))}},function(e,t,n){"use strict";t.__esModule=!0,t.toFixed=t.round=t.clamp=void 0;t.clamp=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),Math.max(t,Math.min(e,n))};t.round=function(e){return Math.round(e)};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(t)}},function(e,t,n){"use strict";e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var o=n(5),r=n(25),a=n(15),i=n(89),c=n(90),l=n(34),u=l.get,d=l.enforce,s=String(String).split("String");(e.exports=function(e,t,n,c){var l=!!c&&!!c.unsafe,u=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof t||a(n,"name")||r(n,"name",t),d(n).source=s.join("string"==typeof t?t:"")),e!==o?(l?!p&&e[t]&&(u=!0):delete e[t],u?e[t]=n:r(e,t,n)):u?e[t]=n:i(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.reduce=t.sortBy=t.map=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var o in e)t.call(e,o)&&n.push(e[o]);return n}return[]};var o=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],o=0;oc)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n"+i+""+t+">"}},function(e,t,n){"use strict";var o=n(4);e.exports=function(e){return o((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";t.__esModule=!0,t.buildQueryString=t.decodeHtmlEntities=t.toTitleCase=t.capitalize=t.testGlobPattern=t.multiline=void 0;t.multiline=function o(e){if(Array.isArray(e))return o(e.join(""));var t,n=e.split("\n"),r=n,a=Array.isArray(r),i=0;for(r=a?r:r[Symbol.iterator]();;){var c;if(a){if(i>=r.length)break;c=r[i++]}else{if((i=r.next()).done)break;c=i.value}for(var l=c,u=0;u",apos:"'"};return e.replace(/ /gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";var o=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:o)(e)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){"use strict";var o={}.toString;e.exports=function(e){return o.call(e).slice(8,-1)}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var o,r,a,i=n(121),c=n(5),l=n(6),u=n(25),d=n(15),s=n(72),p=n(59),m=c.WeakMap;if(i){var f=new m,h=f.get,C=f.has,g=f.set;o=function(e,t){return g.call(f,e,t),t},r=function(e){return h.call(f,e)||{}},a=function(e){return C.call(f,e)}}else{var b=s("state");p[b]=!0,o=function(e,t){return u(e,b,t),t},r=function(e){return d(e,b)?e[b]:{}},a=function(e){return d(e,b)}}e.exports={set:o,get:r,has:a,enforce:function(e){return a(e)?r(e):o(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var o=n(123),r=n(5),a=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?a(o[e])||a(r[e]):o[e]&&o[e][t]||r[e]&&r[e][t]}},function(e,t,n){"use strict";var o=n(15),r=n(14),a=n(72),i=n(102),c=a("IE_PROTO"),l=Object.prototype;e.exports=i?Object.getPrototypeOf:function(e){return e=r(e),o(e,c)?e[c]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var o=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),r=o.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return r&&r.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=o.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var o=n(4);e.exports=function(e,t){var n=[][e];return!n||!o((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(9),i=n(113),c=n(7),l=n(77),u=n(55),d=n(46),s=n(25),p=n(10),m=n(137),f=n(151),h=n(33),C=n(15),g=n(74),b=n(6),v=n(42),N=n(53),V=n(47).f,y=n(152),_=n(16).forEach,x=n(54),k=n(13),L=n(18),w=n(34),B=n(79),S=w.get,I=w.set,T=k.f,A=L.f,E=Math.round,P=r.RangeError,M=l.ArrayBuffer,O=l.DataView,R=c.NATIVE_ARRAY_BUFFER_VIEWS,F=c.TYPED_ARRAY_TAG,D=c.TypedArray,j=c.TypedArrayPrototype,z=c.aTypedArrayConstructor,H=c.isTypedArray,G=function(e,t){for(var n=0,o=t.length,r=new(z(e))(o);o>n;)r[n]=t[n++];return r},U=function(e,t){T(e,t,{get:function(){return S(this)[t]}})},K=function(e){var t;return e instanceof M||"ArrayBuffer"==(t=g(e))||"SharedArrayBuffer"==t},Y=function(e,t){return H(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},q=function(e,t){return Y(e,t=h(t,!0))?d(2,e[t]):A(e,t)},W=function(e,t,n){return!(Y(e,t=h(t,!0))&&b(n)&&C(n,"value"))||C(n,"get")||C(n,"set")||n.configurable||C(n,"writable")&&!n.writable||C(n,"enumerable")&&!n.enumerable?T(e,t,n):(e[t]=n.value,e)};a?(R||(L.f=q,k.f=W,U(j,"buffer"),U(j,"byteOffset"),U(j,"byteLength"),U(j,"length")),o({target:"Object",stat:!0,forced:!R},{getOwnPropertyDescriptor:q,defineProperty:W}),e.exports=function(e,t,n){var a=e.match(/\d+$/)[0]/8,c=e+(n?"Clamped":"")+"Array",l="get"+e,d="set"+e,h=r[c],C=h,g=C&&C.prototype,k={},L=function(e,t){var n=S(e);return n.view[l](t*a+n.byteOffset,!0)},w=function(e,t,o){var r=S(e);n&&(o=(o=E(o))<0?0:o>255?255:255&o),r.view[d](t*a+r.byteOffset,o,!0)},A=function(e,t){T(e,t,{get:function(){return L(this,t)},set:function(e){return w(this,t,e)},enumerable:!0})};R?i&&(C=t((function(e,t,n,o){return u(e,C,c),B(b(t)?K(t)?o!==undefined?new h(t,f(n,a),o):n!==undefined?new h(t,f(n,a)):new h(t):H(t)?G(C,t):y.call(C,t):new h(m(t)),e,C)})),N&&N(C,D),_(V(h),(function(e){e in C||s(C,e,h[e])})),C.prototype=g):(C=t((function(e,t,n,o){u(e,C,c);var r,i,l,d=0,s=0;if(b(t)){if(!K(t))return H(t)?G(C,t):y.call(C,t);r=t,s=f(n,a);var h=t.byteLength;if(o===undefined){if(h%a)throw P("Wrong length");if((i=h-s)<0)throw P("Wrong length")}else if((i=p(o)*a)+s>h)throw P("Wrong length");l=i/a}else l=m(t),r=new M(i=l*a);for(I(e,{buffer:r,byteOffset:s,byteLength:i,length:l,view:new O(r)});ddocument.F=Object<\/script>"),e.close(),p=e.F;n--;)delete p[d][a[n]];return p()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[d]=o(e),n=new s,s[d]=null,n[u]=e):n=p(),t===undefined?n:r(n,t)},i[u]=!0},function(e,t,n){"use strict";var o=n(13).f,r=n(15),a=n(11)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,a)&&o(e,a,{configurable:!0,value:t})}},function(e,t,n){"use strict";var o=n(11),r=n(42),a=n(25),i=o("unscopables"),c=Array.prototype;c[i]==undefined&&a(c,i,r(null)),e.exports=function(e){c[i][e]=!0}},function(e,t,n){"use strict";var o=n(8),r=n(31),a=n(11)("species");e.exports=function(e,t){var n,i=o(e).constructor;return i===undefined||(n=o(i)[a])==undefined?t:r(n)}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var o=n(124),r=n(93).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(31);e.exports=function(e,t,n){if(o(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var o=n(33),r=n(13),a=n(46);e.exports=function(e,t,n){var i=o(t);i in e?r.f(e,i,a(0,n)):e[i]=n}},function(e,t,n){"use strict";var o=n(59),r=n(6),a=n(15),i=n(13).f,c=n(58),l=n(67),u=c("meta"),d=0,s=Object.isExtensible||function(){return!0},p=function(e){i(e,u,{value:{objectID:"O"+ ++d,weakData:{}}})},m=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,u)){if(!s(e))return"F";if(!t)return"E";p(e)}return e[u].objectID},getWeakData:function(e,t){if(!a(e,u)){if(!s(e))return!0;if(!t)return!1;p(e)}return e[u].weakData},onFreeze:function(e){return l&&m.REQUIRED&&s(e)&&!a(e,u)&&p(e),e}};o[u]=!0},function(e,t,n){"use strict";t.__esModule=!0,t.createLogger=void 0;n(154);var o=n(19),r=0,a=1,i=2,c=3,l=4,u=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a=i){var c=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;(0,o.act)(window.__ref__,"tgui:log",{log:c})}};t.createLogger=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;od;)if((c=l[d++])!=c)return!0}else for(;u>d;d++)if((e||d in l)&&l[d]===n)return e||d||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},function(e,t,n){"use strict";var o=n(4),r=/#|\.prototype\./,a=function(e,t){var n=c[i(e)];return n==u||n!=l&&("function"==typeof t?o(t):!!t)},i=a.normalize=function(e){return String(e).replace(r,".").toLowerCase()},c=a.data={},l=a.NATIVE="N",u=a.POLYFILL="P";e.exports=a},function(e,t,n){"use strict";var o=n(124),r=n(93);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(6),r=n(52),a=n(11)("species");e.exports=function(e,t){var n;return r(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!r(n.prototype)?o(n)&&null===(n=n[a])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var o=n(4),r=n(11),a=n(96),i=r("species");e.exports=function(e){return a>=51||!o((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var o=n(22);e.exports=function(e,t,n){for(var r in t)o(e,r,t[r],n);return e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var o=n(8),r=n(98),a=n(10),i=n(48),c=n(99),l=n(132),u=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,d,s){var p,m,f,h,C,g,b,v=i(t,n,d?2:1);if(s)p=e;else{if("function"!=typeof(m=c(e)))throw TypeError("Target is not iterable");if(r(m)){for(f=0,h=a(e.length);h>f;f++)if((C=d?v(o(b=e[f])[0],b[1]):v(e[f]))&&C instanceof u)return C;return new u(!1)}p=m.call(e)}for(g=p.next;!(b=g.call(p)).done;)if("object"==typeof(C=l(p,v,b.value,d))&&C&&C instanceof u)return C;return new u(!1)}).stop=function(e){return new u(!0,e)}},function(e,t,n){"use strict";t.__esModule=!0,t.InterfaceLockNoticeBox=void 0;var o=n(1),r=n(2);t.InterfaceLockNoticeBox=function(e){var t=e.siliconUser,n=e.locked,a=e.onLockStatusChange,i=e.accessText;return t?(0,o.createComponentVNode)(2,r.NoticeBox,{children:(0,o.createComponentVNode)(2,r.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:"Interface lock status:"}),(0,o.createComponentVNode)(2,r.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Button,{m:0,color:"gray",icon:n?"lock":"unlock",content:n?"Locked":"Unlocked",onClick:function(){a&&a(!n)}})})]})}):(0,o.createComponentVNode)(2,r.NoticeBox,{children:["Swipe ",i||"an ID card"," ","to ",n?"unlock":"lock"," this interface."]})}},function(e,t,n){"use strict";t.__esModule=!0,t.compose=t.flow=void 0;t.flow=function o(){for(var e=arguments.length,t=new Array(e),n=0;n1?r-1:0),i=1;i=c.length)break;d=c[u++]}else{if((u=c.next()).done)break;d=u.value}var s=d;Array.isArray(s)?n=o.apply(void 0,s).apply(void 0,[n].concat(a)):s&&(n=s.apply(void 0,[n].concat(a)))}return n}};t.compose=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),a=1;a=0:s>p;p+=m)p in d&&(l=n(l,d[p],p,u));return l}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var o=n(5),r=n(9),a=n(7).NATIVE_ARRAY_BUFFER,i=n(25),c=n(66),l=n(4),u=n(55),d=n(30),s=n(10),p=n(137),m=n(217),f=n(47).f,h=n(13).f,C=n(97),g=n(43),b=n(34),v=b.get,N=b.set,V="ArrayBuffer",y="DataView",_="Wrong length",x=o[V],k=x,L=o[y],w=o.RangeError,B=m.pack,S=m.unpack,I=function(e){return[255&e]},T=function(e){return[255&e,e>>8&255]},A=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},E=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return B(e,23,4)},M=function(e){return B(e,52,8)},O=function(e,t){h(e.prototype,t,{get:function(){return v(this)[t]}})},R=function(e,t,n,o){var r=p(n),a=v(e);if(r+t>a.byteLength)throw w("Wrong index");var i=v(a.buffer).bytes,c=r+a.byteOffset,l=i.slice(c,c+t);return o?l:l.reverse()},F=function(e,t,n,o,r,a){var i=p(n),c=v(e);if(i+t>c.byteLength)throw w("Wrong index");for(var l=v(c.buffer).bytes,u=i+c.byteOffset,d=o(+r),s=0;sH;)(D=z[H++])in k||i(k,D,x[D]);j.constructor=k}var G=new L(new k(2)),U=L.prototype.setInt8;G.setInt8(0,2147483648),G.setInt8(1,2147483649),!G.getInt8(0)&&G.getInt8(1)||c(L.prototype,{setInt8:function(e,t){U.call(this,e,t<<24>>24)},setUint8:function(e,t){U.call(this,e,t<<24>>24)}},{unsafe:!0})}else k=function(e){u(this,k,V);var t=p(e);N(this,{bytes:C.call(new Array(t),0),byteLength:t}),r||(this.byteLength=t)},L=function(e,t,n){u(this,L,y),u(e,k,y);var o=v(e).byteLength,a=d(t);if(a<0||a>o)throw w("Wrong offset");if(a+(n=n===undefined?o-a:s(n))>o)throw w(_);N(this,{buffer:e,byteLength:n,byteOffset:a}),r||(this.buffer=e,this.byteLength=n,this.byteOffset=a)},r&&(O(k,"byteLength"),O(L,"buffer"),O(L,"byteLength"),O(L,"byteOffset")),c(L.prototype,{getInt8:function(e){return R(this,1,e)[0]<<24>>24},getUint8:function(e){return R(this,1,e)[0]},getInt16:function(e){var t=R(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=R(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return E(R(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return E(R(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return S(R(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return S(R(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){F(this,1,e,I,t)},setUint8:function(e,t){F(this,1,e,I,t)},setInt16:function(e,t){F(this,2,e,T,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){F(this,2,e,T,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){F(this,4,e,A,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){F(this,4,e,A,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){F(this,4,e,P,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){F(this,8,e,M,t,arguments.length>2?arguments[2]:undefined)}});g(k,V),g(L,y),e.exports={ArrayBuffer:k,DataView:L}},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(61),i=n(22),c=n(50),l=n(68),u=n(55),d=n(6),s=n(4),p=n(75),m=n(43),f=n(79);e.exports=function(e,t,n){var h=-1!==e.indexOf("Map"),C=-1!==e.indexOf("Weak"),g=h?"set":"add",b=r[e],v=b&&b.prototype,N=b,V={},y=function(e){var t=v[e];i(v,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return C&&!d(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(a(e,"function"!=typeof b||!(C||v.forEach&&!s((function(){(new b).entries().next()})))))N=n.getConstructor(t,e,h,g),c.REQUIRED=!0;else if(a(e,!0)){var _=new N,x=_[g](C?{}:-0,1)!=_,k=s((function(){_.has(1)})),L=p((function(e){new b(e)})),w=!C&&s((function(){for(var e=new b,t=5;t--;)e[g](t,t);return!e.has(-0)}));L||((N=t((function(t,n){u(t,N,e);var o=f(new b,t,N);return n!=undefined&&l(n,o[g],o,h),o}))).prototype=v,v.constructor=N),(k||w)&&(y("delete"),y("has"),h&&y("get")),(w||x)&&y(g),C&&v.clear&&delete v.clear}return V[e]=N,o({global:!0,forced:N!=b},V),m(N,e),C||n.setStrong(N,e,h),N}},function(e,t,n){"use strict";var o=n(6),r=n(53);e.exports=function(e,t,n){var a,i;return r&&"function"==typeof(a=t.constructor)&&a!==n&&o(i=a.prototype)&&i!==n.prototype&&r(e,i),e}},function(e,t,n){"use strict";var o=Math.expm1,r=Math.exp;e.exports=!o||o(10)>22025.465794806718||o(10)<22025.465794806718||-2e-17!=o(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:r(e)-1}:o},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var o=n(38),r=n(5),a=n(4);e.exports=o||!a((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete r[e]}))},function(e,t,n){"use strict";var o=n(8);e.exports=function(){var e=o(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";var o,r,a=n(83),i=RegExp.prototype.exec,c=String.prototype.replace,l=i,u=(o=/a/,r=/b*/g,i.call(o,"a"),i.call(r,"a"),0!==o.lastIndex||0!==r.lastIndex),d=/()??/.exec("")[1]!==undefined;(u||d)&&(l=function(e){var t,n,o,r,l=this;return d&&(n=new RegExp("^"+l.source+"$(?!\\s)",a.call(l))),u&&(t=l.lastIndex),o=i.call(l,e),u&&o&&(l.lastIndex=l.global?o.index+o[0].length:t),d&&o&&o.length>1&&c.call(o[0],n,(function(){for(r=1;r")})),d=!a((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,s){var p=i(e),m=!a((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),f=m&&!a((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return t=!0,null},n[p](""),!t}));if(!m||!f||"replace"===e&&!u||"split"===e&&!d){var h=/./[p],C=n(p,""[e],(function(e,t,n,o,r){return t.exec===c?m&&!r?{done:!0,value:h.call(t,n,o)}:{done:!0,value:e.call(n,t,o)}:{done:!1}})),g=C[0],b=C[1];r(String.prototype,e,g),r(RegExp.prototype,p,2==t?function(e,t){return b.call(e,this,t)}:function(e){return b.call(e,this)}),s&&o(RegExp.prototype[p],"sham",!0)}}},function(e,t,n){"use strict";var o=n(32),r=n(84);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var a=n.call(e,t);if("object"!=typeof a)throw TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==o(e))throw TypeError("RegExp#exec called on incompatible receiver");return r.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0,t.Icon=void 0;var o=n(1),r=n(12),a=n(17);var i=/-o$/,c=function(e){var t=e.name,n=e.size,c=e.spin,l=e.className,u=e.style,d=void 0===u?{}:u,s=e.rotation,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["name","size","spin","className","style","rotation"]);n&&(d["font-size"]=100*n+"%"),"number"==typeof s&&(d.transform="rotate("+s+"deg)");var m=i.test(t),f=t.replace(i,"");return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"i",className:(0,r.classes)([l,m?"far":"fas","fa-"+f,c&&"fa-spin"]),style:d},p)))};t.Icon=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var o=n(5),r=n(6),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},function(e,t,n){"use strict";var o=n(5),r=n(25);e.exports=function(e,t){try{r(o,e,t)}catch(n){o[e]=t}return t}},function(e,t,n){"use strict";var o=n(120),r=Function.toString;"function"!=typeof o.inspectSource&&(o.inspectSource=function(e){return r.call(e)}),e.exports=o.inspectSource},function(e,t,n){"use strict";var o=n(38),r=n(120);(e.exports=function(e,t){return r[e]||(r[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.4.8",mode:o?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var o=n(35),r=n(47),a=n(94),i=n(8);e.exports=o("Reflect","ownKeys")||function(e){var t=r.f(i(e)),n=a.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var o=n(4);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var o,r,a=n(5),i=n(73),c=a.process,l=c&&c.versions,u=l&&l.v8;u?r=(o=u.split("."))[0]+o[1]:i&&(!(o=i.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/))&&(r=o[1]),e.exports=r&&+r},function(e,t,n){"use strict";var o=n(14),r=n(41),a=n(10);e.exports=function(e){for(var t=o(this),n=a(t.length),i=arguments.length,c=r(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,u=l===undefined?n:r(l,n);u>c;)t[c++]=e;return t}},function(e,t,n){"use strict";var o=n(11),r=n(65),a=o("iterator"),i=Array.prototype;e.exports=function(e){return e!==undefined&&(r.Array===e||i[a]===e)}},function(e,t,n){"use strict";var o=n(74),r=n(65),a=n(11)("iterator");e.exports=function(e){if(e!=undefined)return e[a]||e["@@iterator"]||r[o(e)]}},function(e,t,n){"use strict";var o={};o[n(11)("toStringTag")]="z",e.exports="[object z]"===String(o)},function(e,t,n){"use strict";var o=n(0),r=n(202),a=n(36),i=n(53),c=n(43),l=n(25),u=n(22),d=n(11),s=n(38),p=n(65),m=n(134),f=m.IteratorPrototype,h=m.BUGGY_SAFARI_ITERATORS,C=d("iterator"),g=function(){return this};e.exports=function(e,t,n,d,m,b,v){r(n,t,d);var N,V,y,_=function(e){if(e===m&&B)return B;if(!h&&e in L)return L[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},x=t+" Iterator",k=!1,L=e.prototype,w=L[C]||L["@@iterator"]||m&&L[m],B=!h&&w||_(m),S="Array"==t&&L.entries||w;if(S&&(N=a(S.call(new e)),f!==Object.prototype&&N.next&&(s||a(N)===f||(i?i(N,f):"function"!=typeof N[C]&&l(N,C,g)),c(N,x,!0,!0),s&&(p[x]=g))),"values"==m&&w&&"values"!==w.name&&(k=!0,B=function(){return w.call(this)}),s&&!v||L[C]===B||l(L,C,B),p[t]=B,m)if(V={values:_("values"),keys:b?B:_("keys"),entries:_("entries")},v)for(y in V)!h&&!k&&y in L||u(L,y,V[y]);else o({target:t,proto:!0,forced:h||k},V);return V}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";var o=n(10),r=n(104),a=n(21),i=Math.ceil,c=function(e){return function(t,n,c){var l,u,d=String(a(t)),s=d.length,p=c===undefined?" ":String(c),m=o(n);return m<=s||""==p?d:(l=m-s,(u=r.call(p,i(l/p.length))).length>l&&(u=u.slice(0,l)),e?d+u:u+d)}};e.exports={start:c(!1),end:c(!0)}},function(e,t,n){"use strict";var o=n(30),r=n(21);e.exports="".repeat||function(e){var t=String(r(this)),n="",a=o(e);if(a<0||a==Infinity)throw RangeError("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))1&a&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var o,r,a,i=n(5),c=n(4),l=n(32),u=n(48),d=n(127),s=n(88),p=n(146),m=i.location,f=i.setImmediate,h=i.clearImmediate,C=i.process,g=i.MessageChannel,b=i.Dispatch,v=0,N={},V=function(e){if(N.hasOwnProperty(e)){var t=N[e];delete N[e],t()}},y=function(e){return function(){V(e)}},_=function(e){V(e.data)},x=function(e){i.postMessage(e+"",m.protocol+"//"+m.host)};f&&h||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return N[++v]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},o(v),v},h=function(e){delete N[e]},"process"==l(C)?o=function(e){C.nextTick(y(e))}:b&&b.now?o=function(e){b.now(y(e))}:g&&!p?(a=(r=new g).port2,r.port1.onmessage=_,o=u(a.postMessage,a,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||c(x)?o="onreadystatechange"in s("script")?function(e){d.appendChild(s("script")).onreadystatechange=function(){d.removeChild(this),V(e)}}:function(e){setTimeout(y(e),0)}:(o=x,i.addEventListener("message",_,!1))),e.exports={set:f,clear:h}},function(e,t,n){"use strict";var o=n(6),r=n(32),a=n(11)("match");e.exports=function(e){var t;return o(e)&&((t=e[a])!==undefined?!!t:"RegExp"==r(e))}},function(e,t,n){"use strict";var o=n(30),r=n(21),a=function(e){return function(t,n){var a,i,c=String(r(t)),l=o(n),u=c.length;return l<0||l>=u?e?"":undefined:(a=c.charCodeAt(l))<55296||a>56319||l+1===u||(i=c.charCodeAt(l+1))<56320||i>57343?e?c.charAt(l):a:e?c.slice(l,l+2):i-56320+(a-55296<<10)+65536}};e.exports={codeAt:a(!1),charAt:a(!0)}},function(e,t,n){"use strict";var o=n(107);e.exports=function(e){if(o(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var o=n(11)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[o]=!1,"/./"[e](t)}catch(r){}}return!1}},function(e,t,n){"use strict";var o=n(108).charAt;e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},function(e,t,n){"use strict";var o=n(4),r=n(81);e.exports=function(e){return o((function(){return!!r[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||r[e].name!==e}))}},function(e,t,n){"use strict";var o=n(5),r=n(4),a=n(75),i=n(7).NATIVE_ARRAY_BUFFER_VIEWS,c=o.ArrayBuffer,l=o.Int8Array;e.exports=!i||!r((function(){l(1)}))||!r((function(){new l(-1)}))||!a((function(e){new l,new l(null),new l(1.5),new l(e)}),!0)||r((function(){return 1!==new l(new c(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var o=n(1),r=n(12),a=n(19),i=n(115),c=n(51),l=n(116),u=n(17),d=n(87),s=n(159);n(160),n(161);function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function m(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var f=(0,c.createLogger)("Button"),h=function(e){var t=e.className,n=e.fluid,c=e.icon,p=e.color,h=e.disabled,C=e.selected,g=e.tooltip,b=e.tooltipPosition,v=e.ellipsis,N=e.content,V=e.iconRotation,y=e.iconSpin,_=e.children,x=e.onclick,k=e.onClick,L=m(e,["className","fluid","icon","color","disabled","selected","tooltip","tooltipPosition","ellipsis","content","iconRotation","iconSpin","children","onclick","onClick"]),w=!(!N&&!_);return x&&f.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Box,Object.assign({as:"span",className:(0,r.classes)(["Button",n&&"Button--fluid",h&&"Button--disabled",C&&"Button--selected",w&&"Button--hasContent",v&&"Button--ellipsis",p&&"string"==typeof p?"Button--color--"+p:"Button--color--default",t]),tabIndex:!h&&"0",unselectable:a.tridentVersion<=4,onclick:function(e){(0,l.refocusLayout)(),!h&&k&&k(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;return t===i.KEY_SPACE||t===i.KEY_ENTER?(e.preventDefault(),void(!h&&k&&k(e))):t===i.KEY_ESCAPE?(e.preventDefault(),void(0,l.refocusLayout)()):void 0}},L,{children:[c&&(0,o.createComponentVNode)(2,d.Icon,{name:c,rotation:V,spin:y}),N,_,g&&(0,o.createComponentVNode)(2,s.Tooltip,{content:g,position:b})]})))};t.Button=h,h.defaultHooks=r.pureComponentHooks;var C=function(e){var t=e.checked,n=m(e,["checked"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=C,h.Checkbox=C;var g=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}p(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmMessage,r=void 0===n?"Confirm?":n,a=t.confirmColor,i=void 0===a?"bad":a,c=t.color,l=t.content,u=t.onClick,d=m(t,["confirmMessage","confirmColor","color","content","onClick"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({content:this.state.clickedOnce?r:l,color:this.state.clickedOnce?i:c,onClick:function(){return e.state.clickedOnce?u():e.setClickedOnce(!0)}},d)))},t}(o.Component);t.ButtonConfirm=g,h.Confirm=g;var b=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={inInput:!1},t}p(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,c=t.color,l=void 0===c?"default":c,d=(t.placeholder,t.maxLength,m(t,["fluid","content","color","placeholder","maxLength"]));return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Box,Object.assign({className:(0,r.classes)(["Button",n&&"Button--fluid","Button--color--"+l])},d,{onClick:function(){return e.setInInput(!0)},children:[(0,o.createVNode)(1,"div",null,a,0),(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===i.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===i.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef)]})))},t}(o.Component);t.ButtonInput=b,h.Input=b},function(e,t,n){"use strict";t.__esModule=!0,t.hotKeyReducer=t.hotKeyMiddleware=t.releaseHeldKeys=t.KEY_MINUS=t.KEY_EQUAL=t.KEY_Z=t.KEY_Y=t.KEY_X=t.KEY_W=t.KEY_V=t.KEY_U=t.KEY_T=t.KEY_S=t.KEY_R=t.KEY_Q=t.KEY_P=t.KEY_O=t.KEY_N=t.KEY_M=t.KEY_L=t.KEY_K=t.KEY_J=t.KEY_I=t.KEY_H=t.KEY_G=t.KEY_F=t.KEY_E=t.KEY_D=t.KEY_C=t.KEY_B=t.KEY_A=t.KEY_9=t.KEY_8=t.KEY_7=t.KEY_6=t.KEY_5=t.KEY_4=t.KEY_3=t.KEY_2=t.KEY_1=t.KEY_0=t.KEY_SPACE=t.KEY_ESCAPE=t.KEY_ALT=t.KEY_CTRL=t.KEY_SHIFT=t.KEY_ENTER=t.KEY_TAB=t.KEY_BACKSPACE=void 0;var o=n(51),r=n(19),a=(0,o.createLogger)("hotkeys");t.KEY_BACKSPACE=8;t.KEY_TAB=9;t.KEY_ENTER=13;t.KEY_SHIFT=16;t.KEY_CTRL=17;t.KEY_ALT=18;t.KEY_ESCAPE=27;t.KEY_SPACE=32;t.KEY_0=48;t.KEY_1=49;t.KEY_2=50;t.KEY_3=51;t.KEY_4=52;t.KEY_5=53;t.KEY_6=54;t.KEY_7=55;t.KEY_8=56;t.KEY_9=57;t.KEY_A=65;t.KEY_B=66;t.KEY_C=67;t.KEY_D=68;t.KEY_E=69;t.KEY_F=70;t.KEY_G=71;t.KEY_H=72;t.KEY_I=73;t.KEY_J=74;t.KEY_K=75;t.KEY_L=76;t.KEY_M=77;t.KEY_N=78;t.KEY_O=79;t.KEY_P=80;t.KEY_Q=81;t.KEY_R=82;t.KEY_S=83;t.KEY_T=84;t.KEY_U=85;t.KEY_V=86;t.KEY_W=87;t.KEY_X=88;t.KEY_Y=89;t.KEY_Z=90;t.KEY_EQUAL=187;t.KEY_MINUS=189;var i=[17,18,16],c=[27,13,32,9,17,16],l={},u=function(e,t,n,o){var r="";return e&&(r+="Ctrl+"),t&&(r+="Alt+"),n&&(r+="Shift+"),r+=o>=48&&o<=90?String.fromCharCode(o):"["+o+"]"},d=function(e){var t=window.event?e.which:e.keyCode,n=e.ctrlKey,o=e.altKey,r=e.shiftKey;return{keyCode:t,ctrlKey:n,altKey:o,shiftKey:r,hasModifierKeys:n||o||r,keyString:u(n,o,r,t)}},s=function(){for(var e=0,t=Object.keys(l);e4&&function(e,t){if(!e.defaultPrevented){var n=e.target&&e.target.localName;if("input"!==n&&"textarea"!==n){var o=d(e),i=o.keyCode,u=o.ctrlKey,s=o.shiftKey;u||s||c.includes(i)||("keydown"!==t||l[i]?"keyup"===t&&l[i]&&(a.debug("passthrough",t,o),(0,r.callByond)("",{__keyup:i})):(a.debug("passthrough",t,o),(0,r.callByond)("",{__keydown:i})))}}}(e,t),function(e,t,n){if("keyup"===t){var o=d(e),r=o.ctrlKey,c=o.altKey,l=o.keyCode,u=o.hasModifierKeys,s=o.keyString;u&&!i.includes(l)&&(a.log(s),r&&c&&8===l&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")})),n({type:"hotKey",payload:o}))}}(e,t,n)},document.addEventListener("keydown",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keydown"),l[n]=!0})),document.addEventListener("keyup",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keyup"),l[n]=!1})),r.tridentVersion>4&&function(e){var t;document.addEventListener("focusout",(function(){t=setTimeout(e)})),document.addEventListener("focusin",(function(){clearTimeout(t)})),window.addEventListener("beforeunload",e)}((function(){s()})),function(e){return function(t){return e(t)}}};t.hotKeyReducer=function(e,t){var n=t.type,o=t.payload;if("hotKey"===n){var r=o.ctrlKey,a=o.altKey,i=o.keyCode;return r&&a&&187===i?Object.assign({},e,{showKitchenSink:!e.showKitchenSink}):e}return e}},function(e,t,n){"use strict";t.__esModule=!0,t.refocusLayout=void 0;var o=n(19);t.refocusLayout=function(){if(!(o.tridentVersion<=4)){var e=document.getElementById("Layout__content");e&&e.focus()}}},function(e,t,n){"use strict";t.__esModule=!0,t.toastReducer=t.showToast=t.Toast=void 0;var o,r=n(1),a=n(12),i=function(e){var t=e.content,n=e.children;return(0,r.createVNode)(1,"div","Layout__toast",[t,n],0)};t.Toast=i,i.defaultHooks=a.pureComponentHooks;t.showToast=function(e,t){o&&clearTimeout(o),o=setTimeout((function(){o=undefined,e({type:"hideToast"})}),5e3),e({type:"showToast",payload:{text:t}})};t.toastReducer=function(e,t){var n=t.type,o=t.payload;if("showToast"===n){var r=o.text;return Object.assign({},e,{toastText:r})}return"hideToast"===n?Object.assign({},e,{toastText:null}):e}},function(e,t,n){"use strict";var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(r){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,n){"use strict";var o=n(9),r=n(4),a=n(88);e.exports=!o&&!r((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var o=n(5),r=n(89),a=o["__core-js_shared__"]||r("__core-js_shared__",{});e.exports=a},function(e,t,n){"use strict";var o=n(5),r=n(90),a=o.WeakMap;e.exports="function"==typeof a&&/native code/.test(r(a))},function(e,t,n){"use strict";var o=n(15),r=n(92),a=n(18),i=n(13);e.exports=function(e,t){for(var n=r(t),c=i.f,l=a.f,u=0;ul;)o(c,n=t[l++])&&(~a(u,n)||u.push(n));return u}},function(e,t,n){"use strict";var o=n(95);e.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol()},function(e,t,n){"use strict";var o=n(9),r=n(13),a=n(8),i=n(62);e.exports=o?Object.defineProperties:function(e,t){a(e);for(var n,o=i(t),c=o.length,l=0;c>l;)r.f(e,n=o[l++],t[n]);return e}},function(e,t,n){"use strict";var o=n(35);e.exports=o("document","documentElement")},function(e,t,n){"use strict";var o=n(24),r=n(47).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(e){try{return r(e)}catch(t){return i.slice()}};e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?c(e):r(o(e))}},function(e,t,n){"use strict";var o=n(11);t.f=o},function(e,t,n){"use strict";var o=n(14),r=n(41),a=n(10),i=Math.min;e.exports=[].copyWithin||function(e,t){var n=o(this),c=a(n.length),l=r(e,c),u=r(t,c),d=arguments.length>2?arguments[2]:undefined,s=i((d===undefined?c:r(d,c))-u,c-l),p=1;for(u0;)u in n?n[l]=n[u]:delete n[l],l+=p,u+=p;return n}},function(e,t,n){"use strict";var o=n(52),r=n(10),a=n(48);e.exports=function i(e,t,n,c,l,u,d,s){for(var p,m=l,f=0,h=!!d&&a(d,s,3);f0&&o(p))m=i(e,t,p,r(p.length),m,u-1)-1;else{if(m>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[m]=p}m++}f++}return m}},function(e,t,n){"use strict";var o=n(8);e.exports=function(e,t,n,r){try{return r?t(o(n)[0],n[1]):t(n)}catch(i){var a=e["return"];throw a!==undefined&&o(a.call(e)),i}}},function(e,t,n){"use strict";var o=n(24),r=n(44),a=n(65),i=n(34),c=n(101),l=i.set,u=i.getterFor("Array Iterator");e.exports=c(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:o(e),index:0,kind:t})}),(function(){var e=u(this),t=e.target,n=e.kind,o=e.index++;return!t||o>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:o,done:!1}:"values"==n?{value:t[o],done:!1}:{value:[o,t[o]],done:!1}}),"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t,n){"use strict";var o,r,a,i=n(36),c=n(25),l=n(15),u=n(11),d=n(38),s=u("iterator"),p=!1;[].keys&&("next"in(a=[].keys())?(r=i(i(a)))!==Object.prototype&&(o=r):p=!0),o==undefined&&(o={}),d||l(o,s)||c(o,s,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:p}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var o=n(24),r=n(30),a=n(10),i=n(39),c=Math.min,l=[].lastIndexOf,u=!!l&&1/[1].lastIndexOf(1,-0)<0,d=i("lastIndexOf");e.exports=u||d?function(e){if(u)return l.apply(this,arguments)||0;var t=o(this),n=a(t.length),i=n-1;for(arguments.length>1&&(i=c(i,r(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:l},function(e,t,n){"use strict";var o=n(30),r=n(10);e.exports=function(e){if(e===undefined)return 0;var t=o(e),n=r(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var o=n(31),r=n(6),a=[].slice,i={},c=function(e,t,n){if(!(t in i)){for(var o=[],r=0;r1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(o(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!g(this,e)}}),a(d.prototype,n?{get:function(e){var t=g(this,e);return t&&t.value},set:function(e,t){return C(this,0===e?0:e,t)}}:{add:function(e){return C(this,e=0===e?0:e,e)}}),s&&o(d.prototype,"size",{get:function(){return m(this).size}}),d},setStrong:function(e,t,n){var o=t+" Iterator",r=h(t),a=h(o);u(e,t,(function(e,t){f(this,{type:o,target:e,state:r(e),kind:t,last:undefined})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),d(t)}}},function(e,t,n){"use strict";var o=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:o(1+e)}},function(e,t,n){"use strict";var o=n(6),r=Math.floor;e.exports=function(e){return!o(e)&&isFinite(e)&&r(e)===e}},function(e,t,n){"use strict";var o=n(5),r=n(56).trim,a=n(81),i=o.parseInt,c=/^[+-]?0[Xx]/,l=8!==i(a+"08")||22!==i(a+"0x16");e.exports=l?function(e,t){var n=r(String(e));return i(n,t>>>0||(c.test(n)?16:10))}:i},function(e,t,n){"use strict";var o=n(9),r=n(62),a=n(24),i=n(71).f,c=function(e){return function(t){for(var n,c=a(t),l=r(c),u=l.length,d=0,s=[];u>d;)n=l[d++],o&&!i.call(c,n)||s.push(e?[n,c[n]]:c[n]);return s}};e.exports={entries:c(!0),values:c(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var o=n(5);e.exports=o.Promise},function(e,t,n){"use strict";var o=n(73);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(o)},function(e,t,n){"use strict";var o,r,a,i,c,l,u,d,s=n(5),p=n(18).f,m=n(32),f=n(106).set,h=n(146),C=s.MutationObserver||s.WebKitMutationObserver,g=s.process,b=s.Promise,v="process"==m(g),N=p(s,"queueMicrotask"),V=N&&N.value;V||(o=function(){var e,t;for(v&&(e=g.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(n){throw r?i():a=undefined,n}}a=undefined,e&&e.enter()},v?i=function(){g.nextTick(o)}:C&&!h?(c=!0,l=document.createTextNode(""),new C(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c}):b&&b.resolve?(u=b.resolve(undefined),d=u.then,i=function(){d.call(u,o)}):i=function(){f.call(s,o)}),e.exports=V||function(e){var t={fn:e,next:undefined};a&&(a.next=t),r||(r=t,i()),a=t}},function(e,t,n){"use strict";var o=n(8),r=n(6),a=n(149);e.exports=function(e,t){if(o(e),r(t)&&t.constructor===e)return t;var n=a.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var o=n(31),r=function(e){var t,n;this.promise=new e((function(e,o){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)};e.exports.f=function(e){return new r(e)}},function(e,t,n){"use strict";var o=n(73);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o)},function(e,t,n){"use strict";var o=n(347);e.exports=function(e,t){var n=o(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var o=n(14),r=n(10),a=n(99),i=n(98),c=n(48),l=n(7).aTypedArrayConstructor;e.exports=function(e){var t,n,u,d,s,p,m=o(e),f=arguments.length,h=f>1?arguments[1]:undefined,C=h!==undefined,g=a(m);if(g!=undefined&&!i(g))for(p=(s=g.call(m)).next,m=[];!(d=p.call(s)).done;)m.push(d.value);for(C&&f>2&&(h=c(h,arguments[2],2)),n=r(m.length),u=new(l(this))(n),t=0;n>t;t++)u[t]=C?h(m[t],t):m[t];return u}},function(e,t,n){"use strict";var o=n(66),r=n(50).getWeakData,a=n(8),i=n(6),c=n(55),l=n(68),u=n(16),d=n(15),s=n(34),p=s.set,m=s.getterFor,f=u.find,h=u.findIndex,C=0,g=function(e){return e.frozen||(e.frozen=new b)},b=function(){this.entries=[]},v=function(e,t){return f(e.entries,(function(e){return e[0]===t}))};b.prototype={get:function(e){var t=v(this,e);if(t)return t[1]},has:function(e){return!!v(this,e)},set:function(e,t){var n=v(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=h(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,u){var s=e((function(e,o){c(e,s,t),p(e,{type:t,id:C++,frozen:undefined}),o!=undefined&&l(o,e[u],e,n)})),f=m(t),h=function(e,t,n){var o=f(e),i=r(a(t),!0);return!0===i?g(o).set(t,n):i[o.id]=n,e};return o(s.prototype,{"delete":function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?g(t)["delete"](e):n&&d(n,t.id)&&delete n[t.id]},has:function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?g(t).has(e):n&&d(n,t.id)}}),o(s.prototype,n?{get:function(e){var t=f(this);if(i(e)){var n=r(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return h(this,e,t)}}:{add:function(e){return h(this,e,!0)}}),s}}},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=void 0;t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";t.__esModule=!0,t.resizeStartHandler=t.dragStartHandler=t.setupDrag=void 0;var o,r,a,i,c,l=n(156),u=n(19),d=(0,n(51).createLogger)("drag"),s=!1,p=!1,m=[0,0],f=function(e){return(0,u.winget)(e,"pos").then((function(e){return[e.x,e.y]}))},h=function(e,t){return(0,u.winset)(e,"pos",t[0]+","+t[1])},C=function(e){var t,n,r,a;return regeneratorRuntime.async((function(i){for(;;)switch(i.prev=i.next){case 0:return d.log("setting up"),o=e.config.window,i.next=4,regeneratorRuntime.awrap(f(o));case 4:t=i.sent,m=[t[0]-window.screenLeft,t[1]-window.screenTop],n=g(t),r=n[0],a=n[1],r&&h(o,a),d.debug("current state",{ref:o,screenOffset:m});case 9:case"end":return i.stop()}}))};t.setupDrag=C;var g=function(e){var t=e[0],n=e[1],o=!1;return t<0?(t=0,o=!0):t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth,o=!0),n<0?(n=0,o=!0):n+window.innerHeight>window.screen.availHeight&&(n=window.screen.availHeight-window.innerHeight,o=!0),[o,[t,n]]};t.dragStartHandler=function(e){d.log("drag start"),s=!0,r=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",v),document.addEventListener("mouseup",b),v(e)};var b=function y(e){d.log("drag end"),v(e),document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",y),s=!1},v=function(e){s&&(e.preventDefault(),h(o,(0,l.vecAdd)([e.screenX,e.screenY],m,r)))};t.resizeStartHandler=function(e,t){return function(n){a=[e,t],d.log("resize start",a),p=!0,r=[window.screenLeft-n.screenX,window.screenTop-n.screenY],i=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",V),document.addEventListener("mouseup",N),V(n)}};var N=function _(e){d.log("resize end",c),V(e),document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",_),p=!1},V=function(e){p&&(e.preventDefault(),(c=(0,l.vecAdd)(i,(0,l.vecMultiply)(a,(0,l.vecAdd)([e.screenX,e.screenY],(0,l.vecInverse)([window.screenLeft,window.screenTop]),r,[1,1]))))[0]=Math.max(c[0],250),c[1]=Math.max(c[1],120),function(e,t){(0,u.winset)(e,"size",t[0]+","+t[1])}(o,c))}},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=t.vecCreate=void 0;var o=n(23);t.vecCreate=function(){for(var e=arguments.length,t=new Array(e),n=0;n35;return(0,o.createVNode)(1,"div",(0,r.classes)(["Tooltip",i&&"Tooltip--long",a&&"Tooltip--"+a]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(1),r=n(12),a=n(17);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){return(0,r.isFalsy)(e)?"":e},l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,o=t.props.onInput;n||t.setEditing(!0),o&&o(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,o=t.props.onChange;n&&(t.setEditing(!1),o&&o(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,o=n.onInput,r=n.onChange,a=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),a&&a(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=c(t.props.value),void e.target.blur()):void 0},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=c(e))},u.componentDidUpdate=function(e,t){var n=this.state.editing,o=e.value,r=this.props.value,a=this.inputRef.current;a&&!n&&o!==r&&(a.value=c(r))},u.setEditing=function(e){this.setState({editing:e})},u.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,c=i(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),l=c.className,u=c.fluid,d=i(c,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Input",u&&"Input--fluid",l])},d,{children:[(0,o.createVNode)(1,"div","Input__baseline",".",16),(0,o.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},l}(o.Component);t.Input=l},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var o=n(1),r=n(162),a=n(12);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=i(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table,Object.assign({},n,{children:(0,o.createComponentVNode)(2,r.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=a.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t,a=e.style,c=i(e,["size","style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},a)},c)))};t.GridColumn=l,c.defaultHooks=a.pureComponentHooks,c.Column=l},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var o=n(1),r=n(12),a=n(17);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.collapsing,n=e.className,c=e.content,l=e.children,u=i(e,["collapsing","className","content","children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"table",className:(0,r.classes)(["Table",t&&"Table--collapsing",n])},u,{children:(0,o.createVNode)(1,"tbody",null,[c,l],0)})))};t.Table=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.className,n=e.header,c=i(e,["className","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"tr",className:(0,r.classes)(["Table__row",n&&"Table__row--header",t])},c)))};t.TableRow=l,l.defaultHooks=r.pureComponentHooks;var u=function(e){var t=e.className,n=e.collapsing,c=e.header,l=i(e,["className","collapsing","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"td",className:(0,r.classes)(["Table__cell",n&&"Table__cell--collapsing",c&&"Table__cell--header",t])},l)))};t.TableCell=u,u.defaultHooks=r.pureComponentHooks,c.Row=l,c.Cell=u},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var o=n(1),r=n(12),a=n(17),i=function(e){var t=e.children;return(0,o.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=i,i.defaultHooks=r.pureComponentHooks;var c=function(e){var t=e.className,n=e.label,i=e.labelColor,c=void 0===i?"label":i,l=e.color,u=e.buttons,d=e.content,s=e.children;return(0,o.createVNode)(1,"tr",(0,r.classes)(["LabeledList__row",t]),[(0,o.createComponentVNode)(2,a.Box,{as:"td",color:c,className:(0,r.classes)(["LabeledList__cell","LabeledList__label"]),content:n+":"}),(0,o.createComponentVNode)(2,a.Box,{as:"td",color:l,className:(0,r.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:u?undefined:2,children:[d,s]}),u&&(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",u,0)],0)};t.LabeledListItem=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t;return(0,o.createVNode)(1,"tr","LabeledList__row",(0,o.createVNode)(1,"td",null,null,1,{style:{"padding-bottom":(0,a.unit)(n)}}),2)};t.LabeledListDivider=l,l.defaultHooks=r.pureComponentHooks,i.Item=c,i.Divider=l},function(e,t,n){n(165),n(166),n(167),n(168),n(169),n(170),e.exports=n(171)},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n(172),n(173),n(174),n(175),n(176),n(177),n(178),n(179),n(180),n(181),n(182),n(183),n(184),n(185),n(186),n(187),n(188),n(189),n(190),n(191),n(192),n(193),n(194),n(195),n(197),n(199),n(200),n(201),n(133),n(203),n(204),n(205),n(206),n(207),n(208),n(209),n(210),n(211),n(212),n(213),n(214),n(215),n(216),n(218),n(219),n(220),n(221),n(222),n(224),n(225),n(227),n(228),n(229),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(242),n(243),n(244),n(245),n(246),n(247),n(248),n(249),n(250),n(251),n(252),n(253),n(254),n(256),n(257),n(258),n(259),n(260),n(261),n(263),n(264),n(266),n(268),n(269),n(270),n(271),n(272),n(273),n(274),n(275),n(276),n(277),n(278),n(279),n(280),n(281),n(282),n(283),n(284),n(285),n(286),n(287),n(288),n(289),n(290),n(292),n(293),n(294),n(297),n(298),n(299),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(307),n(308),n(309),n(310),n(311),n(312),n(313),n(314),n(315),n(316),n(317),n(318),n(319),n(320),n(321),n(322),n(323),n(324),n(325),n(326),n(327),n(328),n(329),n(330),n(331),n(332),n(333),n(334),n(335),n(336),n(337),n(338),n(339),n(340),n(341),n(342),n(343),n(344),n(345),n(346),n(348),n(349),n(350),n(351),n(352),n(353),n(354),n(355),n(356),n(357),n(358),n(359),n(360),n(361),n(362),n(363),n(364),n(365),n(366),n(367),n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(384),n(385);var o=n(1);n(387),n(388);var r=n(389),a=(n(154),n(3)),i=n(19),c=n(155),l=n(51),u=n(157),d=n(502),s=(0,l.createLogger)(),p=(0,d.createStore)(),m=document.getElementById("react-root"),f=!0,h=!1,C=function(){for(p.subscribe((function(){!function(){if(!h){0;try{var e=p.getState();if(f){if(s.log("initial render",e),!(0,u.getRoute)(e)){if(s.info("loading old tgui"),h=!0,window.update=window.initialize=function(){},i.tridentVersion<=4)return void setTimeout((function(){location.href="tgui-fallback.html?ref="+window.__ref__}),10);document.getElementById("data").textContent=JSON.stringify(e),(0,r.loadCSS)("v4shim.css"),(0,r.loadCSS)("tgui.css");var t=document.getElementsByTagName("head")[0],a=document.createElement("script");return a.type="text/javascript",a.src="tgui.js",void t.appendChild(a)}(0,c.setupDrag)(e)}var l=n(504).Layout,d=(0,o.createComponentVNode)(2,l,{state:e,dispatch:p.dispatch});(0,o.render)(d,m)}catch(C){s.error("rendering error",C)}f&&(f=!1)}}()})),window.update=window.initialize=function(e){var t=function(e){var t=function(e,t){return"object"==typeof t&&null!==t&&t.__number__?parseFloat(t.__number__):t};i.tridentVersion<=4&&(t=undefined);try{return JSON.parse(e,t)}catch(o){s.log(o),s.log("What we got:",e);var n=o&&o.message;throw new Error("JSON parsing error: "+n)}}(e);p.dispatch((0,a.backendUpdate)(t))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}(0,r.loadCSS)("font-awesome.css")};i.tridentVersion<=4&&"loading"===document.readyState?document.addEventListener("DOMContentLoaded",C):C()},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(35),i=n(38),c=n(9),l=n(95),u=n(125),d=n(4),s=n(15),p=n(52),m=n(6),f=n(8),h=n(14),C=n(24),g=n(33),b=n(46),v=n(42),N=n(62),V=n(47),y=n(128),_=n(94),x=n(18),k=n(13),L=n(71),w=n(25),B=n(22),S=n(91),I=n(72),T=n(59),A=n(58),E=n(11),P=n(129),M=n(26),O=n(43),R=n(34),F=n(16).forEach,D=I("hidden"),j=E("toPrimitive"),z=R.set,H=R.getterFor("Symbol"),G=Object.prototype,U=r.Symbol,K=a("JSON","stringify"),Y=x.f,q=k.f,W=y.f,$=L.f,Q=S("symbols"),X=S("op-symbols"),J=S("string-to-symbol-registry"),Z=S("symbol-to-string-registry"),ee=S("wks"),te=r.QObject,ne=!te||!te.prototype||!te.prototype.findChild,oe=c&&d((function(){return 7!=v(q({},"a",{get:function(){return q(this,"a",{value:7}).a}})).a}))?function(e,t,n){var o=Y(G,t);o&&delete G[t],q(e,t,n),o&&e!==G&&q(G,t,o)}:q,re=function(e,t){var n=Q[e]=v(U.prototype);return z(n,{type:"Symbol",tag:e,description:t}),c||(n.description=t),n},ae=l&&"symbol"==typeof U.iterator?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},ie=function(e,t,n){e===G&&ie(X,t,n),f(e);var o=g(t,!0);return f(n),s(Q,o)?(n.enumerable?(s(e,D)&&e[D][o]&&(e[D][o]=!1),n=v(n,{enumerable:b(0,!1)})):(s(e,D)||q(e,D,b(1,{})),e[D][o]=!0),oe(e,o,n)):q(e,o,n)},ce=function(e,t){f(e);var n=C(t),o=N(n).concat(pe(n));return F(o,(function(t){c&&!ue.call(n,t)||ie(e,t,n[t])})),e},le=function(e,t){return t===undefined?v(e):ce(v(e),t)},ue=function(e){var t=g(e,!0),n=$.call(this,t);return!(this===G&&s(Q,t)&&!s(X,t))&&(!(n||!s(this,t)||!s(Q,t)||s(this,D)&&this[D][t])||n)},de=function(e,t){var n=C(e),o=g(t,!0);if(n!==G||!s(Q,o)||s(X,o)){var r=Y(n,o);return!r||!s(Q,o)||s(n,D)&&n[D][o]||(r.enumerable=!0),r}},se=function(e){var t=W(C(e)),n=[];return F(t,(function(e){s(Q,e)||s(T,e)||n.push(e)})),n},pe=function(e){var t=e===G,n=W(t?X:C(e)),o=[];return F(n,(function(e){!s(Q,e)||t&&!s(G,e)||o.push(Q[e])})),o};(l||(B((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?String(arguments[0]):undefined,t=A(e),n=function o(e){this===G&&o.call(X,e),s(this,D)&&s(this[D],t)&&(this[D][t]=!1),oe(this,t,b(1,e))};return c&&ne&&oe(G,t,{configurable:!0,set:n}),re(t,e)}).prototype,"toString",(function(){return H(this).tag})),L.f=ue,k.f=ie,x.f=de,V.f=y.f=se,_.f=pe,c&&(q(U.prototype,"description",{configurable:!0,get:function(){return H(this).description}}),i||B(G,"propertyIsEnumerable",ue,{unsafe:!0}))),u||(P.f=function(e){return re(E(e),e)}),o({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:U}),F(N(ee),(function(e){M(e)})),o({target:"Symbol",stat:!0,forced:!l},{"for":function(e){var t=String(e);if(s(J,t))return J[t];var n=U(t);return J[t]=n,Z[n]=t,n},keyFor:function(e){if(!ae(e))throw TypeError(e+" is not a symbol");if(s(Z,e))return Z[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),o({target:"Object",stat:!0,forced:!l,sham:!c},{create:le,defineProperty:ie,defineProperties:ce,getOwnPropertyDescriptor:de}),o({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:se,getOwnPropertySymbols:pe}),o({target:"Object",stat:!0,forced:d((function(){_.f(1)}))},{getOwnPropertySymbols:function(e){return _.f(h(e))}}),K)&&o({target:"JSON",stat:!0,forced:!l||d((function(){var e=U();return"[null]"!=K([e])||"{}"!=K({a:e})||"{}"!=K(Object(e))}))},{stringify:function(e,t,n){for(var o,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(o=t,(m(t)||e!==undefined)&&!ae(e))return p(t)||(t=function(e,t){if("function"==typeof o&&(t=o.call(this,e,t)),!ae(t))return t}),r[1]=t,K.apply(null,r)}});U.prototype[j]||w(U.prototype,j,U.prototype.valueOf),O(U,"Symbol"),T[D]=!0},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(5),i=n(15),c=n(6),l=n(13).f,u=n(122),d=a.Symbol;if(r&&"function"==typeof d&&(!("description"in d.prototype)||d().description!==undefined)){var s={},p=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof p?new d(e):e===undefined?d():d(e);return""===e&&(s[t]=!0),t};u(p,d);var m=p.prototype=d.prototype;m.constructor=p;var f=m.toString,h="Symbol(test)"==String(d("test")),C=/^Symbol\((.*)\)[^)]+$/;l(m,"description",{configurable:!0,get:function(){var e=c(this)?this.valueOf():this,t=f.call(e);if(i(s,e))return"";var n=h?t.slice(7,-1):t.replace(C,"$1");return""===n?undefined:n}}),o({global:!0,forced:!0},{Symbol:p})}},function(e,t,n){"use strict";n(26)("asyncIterator")},function(e,t,n){"use strict";n(26)("hasInstance")},function(e,t,n){"use strict";n(26)("isConcatSpreadable")},function(e,t,n){"use strict";n(26)("iterator")},function(e,t,n){"use strict";n(26)("match")},function(e,t,n){"use strict";n(26)("replace")},function(e,t,n){"use strict";n(26)("search")},function(e,t,n){"use strict";n(26)("species")},function(e,t,n){"use strict";n(26)("split")},function(e,t,n){"use strict";n(26)("toPrimitive")},function(e,t,n){"use strict";n(26)("toStringTag")},function(e,t,n){"use strict";n(26)("unscopables")},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(52),i=n(6),c=n(14),l=n(10),u=n(49),d=n(63),s=n(64),p=n(11),m=n(96),f=p("isConcatSpreadable"),h=9007199254740991,C="Maximum allowed index exceeded",g=m>=51||!r((function(){var e=[];return e[f]=!1,e.concat()[0]!==e})),b=s("concat"),v=function(e){if(!i(e))return!1;var t=e[f];return t!==undefined?!!t:a(e)};o({target:"Array",proto:!0,forced:!g||!b},{concat:function(e){var t,n,o,r,a,i=c(this),s=d(i,0),p=0;for(t=-1,o=arguments.length;th)throw TypeError(C);for(n=0;n=h)throw TypeError(C);u(s,p++,a)}return s.length=p,s}})},function(e,t,n){"use strict";var o=n(0),r=n(130),a=n(44);o({target:"Array",proto:!0},{copyWithin:r}),a("copyWithin")},function(e,t,n){"use strict";var o=n(0),r=n(16).every;o({target:"Array",proto:!0,forced:n(39)("every")},{every:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(97),a=n(44);o({target:"Array",proto:!0},{fill:r}),a("fill")},function(e,t,n){"use strict";var o=n(0),r=n(16).filter,a=n(4),i=n(64)("filter"),c=i&&!a((function(){[].filter.call({length:-1,0:1},(function(e){throw e}))}));o({target:"Array",proto:!0,forced:!i||!c},{filter:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(16).find,a=n(44),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),o({target:"Array",proto:!0,forced:i},{find:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("find")},function(e,t,n){"use strict";var o=n(0),r=n(16).findIndex,a=n(44),i=!0;"findIndex"in[]&&Array(1).findIndex((function(){i=!1})),o({target:"Array",proto:!0,forced:i},{findIndex:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("findIndex")},function(e,t,n){"use strict";var o=n(0),r=n(131),a=n(14),i=n(10),c=n(30),l=n(63);o({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=a(this),n=i(t.length),o=l(t,0);return o.length=r(o,t,t,n,0,e===undefined?1:c(e)),o}})},function(e,t,n){"use strict";var o=n(0),r=n(131),a=n(14),i=n(10),c=n(31),l=n(63);o({target:"Array",proto:!0},{flatMap:function(e){var t,n=a(this),o=i(n.length);return c(e),(t=l(n,0)).length=r(t,n,n,o,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var o=n(0),r=n(196);o({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},function(e,t,n){"use strict";var o=n(16).forEach,r=n(39);e.exports=r("forEach")?function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}:[].forEach},function(e,t,n){"use strict";var o=n(0),r=n(198);o({target:"Array",stat:!0,forced:!n(75)((function(e){Array.from(e)}))},{from:r})},function(e,t,n){"use strict";var o=n(48),r=n(14),a=n(132),i=n(98),c=n(10),l=n(49),u=n(99);e.exports=function(e){var t,n,d,s,p,m=r(e),f="function"==typeof this?this:Array,h=arguments.length,C=h>1?arguments[1]:undefined,g=C!==undefined,b=0,v=u(m);if(g&&(C=o(C,h>2?arguments[2]:undefined,2)),v==undefined||f==Array&&i(v))for(n=new f(t=c(m.length));t>b;b++)l(n,b,g?C(m[b],b):m[b]);else for(p=(s=v.call(m)).next,n=new f;!(d=p.call(s)).done;b++)l(n,b,g?a(s,C,[d.value,b],!0):d.value);return n.length=b,n}},function(e,t,n){"use strict";var o=n(0),r=n(60).includes,a=n(44);o({target:"Array",proto:!0},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("includes")},function(e,t,n){"use strict";var o=n(0),r=n(60).indexOf,a=n(39),i=[].indexOf,c=!!i&&1/[1].indexOf(1,-0)<0,l=a("indexOf");o({target:"Array",proto:!0,forced:c||l},{indexOf:function(e){return c?i.apply(this,arguments)||0:r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(0)({target:"Array",stat:!0},{isArray:n(52)})},function(e,t,n){"use strict";var o=n(134).IteratorPrototype,r=n(42),a=n(46),i=n(43),c=n(65),l=function(){return this};e.exports=function(e,t,n){var u=t+" Iterator";return e.prototype=r(o,{next:a(1,n)}),i(e,u,!1,!0),c[u]=l,e}},function(e,t,n){"use strict";var o=n(0),r=n(57),a=n(24),i=n(39),c=[].join,l=r!=Object,u=i("join",",");o({target:"Array",proto:!0,forced:l||u},{join:function(e){return c.call(a(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var o=n(0),r=n(136);o({target:"Array",proto:!0,forced:r!==[].lastIndexOf},{lastIndexOf:r})},function(e,t,n){"use strict";var o=n(0),r=n(16).map,a=n(4),i=n(64)("map"),c=i&&!a((function(){[].map.call({length:-1,0:1},(function(e){throw e}))}));o({target:"Array",proto:!0,forced:!i||!c},{map:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(49);o({target:"Array",stat:!0,forced:r((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)a(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var o=n(0),r=n(76).left;o({target:"Array",proto:!0,forced:n(39)("reduce")},{reduce:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(76).right;o({target:"Array",proto:!0,forced:n(39)("reduceRight")},{reduceRight:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(52),i=n(41),c=n(10),l=n(24),u=n(49),d=n(64),s=n(11)("species"),p=[].slice,m=Math.max;o({target:"Array",proto:!0,forced:!d("slice")},{slice:function(e,t){var n,o,d,f=l(this),h=c(f.length),C=i(e,h),g=i(t===undefined?h:t,h);if(a(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!a(n.prototype)?r(n)&&null===(n=n[s])&&(n=undefined):n=undefined,n===Array||n===undefined))return p.call(f,C,g);for(o=new(n===undefined?Array:n)(m(g-C,0)),d=0;C1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(31),a=n(14),i=n(4),c=n(39),l=[],u=l.sort,d=i((function(){l.sort(undefined)})),s=i((function(){l.sort(null)})),p=c("sort");o({target:"Array",proto:!0,forced:d||!s||p},{sort:function(e){return e===undefined?u.call(a(this)):u.call(a(this),r(e))}})},function(e,t,n){"use strict";n(54)("Array")},function(e,t,n){"use strict";var o=n(0),r=n(41),a=n(30),i=n(10),c=n(14),l=n(63),u=n(49),d=n(64),s=Math.max,p=Math.min,m=9007199254740991,f="Maximum allowed length exceeded";o({target:"Array",proto:!0,forced:!d("splice")},{splice:function(e,t){var n,o,d,h,C,g,b=c(this),v=i(b.length),N=r(e,v),V=arguments.length;if(0===V?n=o=0:1===V?(n=0,o=v-N):(n=V-2,o=p(s(a(t),0),v-N)),v+n-o>m)throw TypeError(f);for(d=l(b,o),h=0;hv-o+n;h--)delete b[h-1]}else if(n>o)for(h=v-o;h>N;h--)g=h+n-1,(C=h+o-1)in b?b[g]=b[C]:delete b[g];for(h=0;h>1,h=23===t?r(2,-24)-r(2,-77):0,C=e<0||0===e&&1/e<0?1:0,g=0;for((e=o(e))!=e||e===1/0?(u=e!=e?1:0,l=m):(l=a(i(e)/c),e*(d=r(2,-l))<1&&(l--,d*=2),(e+=l+f>=1?h/d:h*r(2,1-f))*d>=2&&(l++,d/=2),l+f>=m?(u=0,l=m):l+f>=1?(u=(e*d-1)*r(2,t),l+=f):(u=e*r(2,f-1)*r(2,t),l=0));t>=8;s[g++]=255&u,u/=256,t-=8);for(l=l<0;s[g++]=255&l,l/=256,p-=8);return s[--g]|=128*C,s},unpack:function(e,t){var n,o=e.length,a=8*o-t-1,i=(1<>1,l=a-7,u=o-1,d=e[u--],s=127&d;for(d>>=7;l>0;s=256*s+e[u],u--,l-=8);for(n=s&(1<<-l)-1,s>>=-l,l+=t;l>0;n=256*n+e[u],u--,l-=8);if(0===s)s=1-c;else{if(s===i)return n?NaN:d?-1/0:1/0;n+=r(2,t),s-=c}return(d?-1:1)*n*r(2,s-t)}}},function(e,t,n){"use strict";var o=n(0),r=n(7);o({target:"ArrayBuffer",stat:!0,forced:!r.NATIVE_ARRAY_BUFFER_VIEWS},{isView:r.isView})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(77),i=n(8),c=n(41),l=n(10),u=n(45),d=a.ArrayBuffer,s=a.DataView,p=d.prototype.slice;o({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:r((function(){return!new d(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(p!==undefined&&t===undefined)return p.call(i(this),e);for(var n=i(this).byteLength,o=c(e,n),r=c(t===undefined?n:t,n),a=new(u(this,d))(l(r-o)),m=new s(this),f=new s(a),h=0;o9999?"+":"";return n+r(a(e),n?6:4,0)+"-"+r(this.getUTCMonth()+1,2,0)+"-"+r(this.getUTCDate(),2,0)+"T"+r(this.getUTCHours(),2,0)+":"+r(this.getUTCMinutes(),2,0)+":"+r(this.getUTCSeconds(),2,0)+"."+r(t,3,0)+"Z"}:l},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(14),i=n(33);o({target:"Date",proto:!0,forced:r((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=a(this),n=i(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var o=n(25),r=n(226),a=n(11)("toPrimitive"),i=Date.prototype;a in i||o(i,a,r)},function(e,t,n){"use strict";var o=n(8),r=n(33);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return r(o(this),"number"!==e)}},function(e,t,n){"use strict";var o=n(22),r=Date.prototype,a="Invalid Date",i=r.toString,c=r.getTime;new Date(NaN)+""!=a&&o(r,"toString",(function(){var e=c.call(this);return e==e?i.call(this):a}))},function(e,t,n){"use strict";n(0)({target:"Function",proto:!0},{bind:n(138)})},function(e,t,n){"use strict";var o=n(6),r=n(13),a=n(36),i=n(11)("hasInstance"),c=Function.prototype;i in c||r.f(c,i,{value:function(e){if("function"!=typeof this||!o(e))return!1;if(!o(this.prototype))return e instanceof this;for(;e=a(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var o=n(9),r=n(13).f,a=Function.prototype,i=a.toString,c=/^\s*function ([^ (]*)/;!o||"name"in a||r(a,"name",{configurable:!0,get:function(){try{return i.call(this).match(c)[1]}catch(e){return""}}})},function(e,t,n){"use strict";var o=n(5);n(43)(o.JSON,"JSON",!0)},function(e,t,n){"use strict";var o=n(78),r=n(139);e.exports=o("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(0),r=n(140),a=Math.acosh,i=Math.log,c=Math.sqrt,l=Math.LN2;o({target:"Math",stat:!0,forced:!a||710!=Math.floor(a(Number.MAX_VALUE))||a(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?i(e)+l:r(e-1+c(e-1)*c(e+1))}})},function(e,t,n){"use strict";var o=n(0),r=Math.asinh,a=Math.log,i=Math.sqrt;o({target:"Math",stat:!0,forced:!(r&&1/r(0)>0)},{asinh:function c(e){return isFinite(e=+e)&&0!=e?e<0?-c(-e):a(e+i(e*e+1)):e}})},function(e,t,n){"use strict";var o=n(0),r=Math.atanh,a=Math.log;o({target:"Math",stat:!0,forced:!(r&&1/r(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:a((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var o=n(0),r=n(105),a=Math.abs,i=Math.pow;o({target:"Math",stat:!0},{cbrt:function(e){return r(e=+e)*i(a(e),1/3)}})},function(e,t,n){"use strict";var o=n(0),r=Math.floor,a=Math.log,i=Math.LOG2E;o({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-r(a(e+.5)*i):32}})},function(e,t,n){"use strict";var o=n(0),r=n(80),a=Math.cosh,i=Math.abs,c=Math.E;o({target:"Math",stat:!0,forced:!a||a(710)===Infinity},{cosh:function(e){var t=r(i(e)-1)+1;return(t+1/(t*c*c))*(c/2)}})},function(e,t,n){"use strict";var o=n(0),r=n(80);o({target:"Math",stat:!0,forced:r!=Math.expm1},{expm1:r})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{fround:n(241)})},function(e,t,n){"use strict";var o=n(105),r=Math.abs,a=Math.pow,i=a(2,-52),c=a(2,-23),l=a(2,127)*(2-c),u=a(2,-126),d=function(e){return e+1/i-1/i};e.exports=Math.fround||function(e){var t,n,a=r(e),s=o(e);return al||n!=n?s*Infinity:s*n}},function(e,t,n){"use strict";var o=n(0),r=Math.hypot,a=Math.abs,i=Math.sqrt;o({target:"Math",stat:!0,forced:!!r&&r(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,o,r=0,c=0,l=arguments.length,u=0;c0?(o=n/u)*o:n;return u===Infinity?Infinity:u*i(r)}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=Math.imul;o({target:"Math",stat:!0,forced:r((function(){return-5!=a(4294967295,5)||2!=a.length}))},{imul:function(e,t){var n=+e,o=+t,r=65535&n,a=65535&o;return 0|r*a+((65535&n>>>16)*a+r*(65535&o>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var o=n(0),r=Math.log,a=Math.LOG10E;o({target:"Math",stat:!0},{log10:function(e){return r(e)*a}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{log1p:n(140)})},function(e,t,n){"use strict";var o=n(0),r=Math.log,a=Math.LN2;o({target:"Math",stat:!0},{log2:function(e){return r(e)/a}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{sign:n(105)})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(80),i=Math.abs,c=Math.exp,l=Math.E;o({target:"Math",stat:!0,forced:r((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return i(e=+e)<1?(a(e)-a(-e))/2:(c(e-1)-c(-e-1))*(l/2)}})},function(e,t,n){"use strict";var o=n(0),r=n(80),a=Math.exp;o({target:"Math",stat:!0},{tanh:function(e){var t=r(e=+e),n=r(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(a(e)+a(-e))}})},function(e,t,n){"use strict";n(43)(Math,"Math",!0)},function(e,t,n){"use strict";var o=n(0),r=Math.ceil,a=Math.floor;o({target:"Math",stat:!0},{trunc:function(e){return(e>0?a:r)(e)}})},function(e,t,n){"use strict";var o=n(9),r=n(5),a=n(61),i=n(22),c=n(15),l=n(32),u=n(79),d=n(33),s=n(4),p=n(42),m=n(47).f,f=n(18).f,h=n(13).f,C=n(56).trim,g="Number",b=r[g],v=b.prototype,N=l(p(v))==g,V=function(e){var t,n,o,r,a,i,c,l,u=d(e,!1);if("string"==typeof u&&u.length>2)if(43===(t=(u=C(u)).charCodeAt(0))||45===t){if(88===(n=u.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:o=2,r=49;break;case 79:case 111:o=8,r=55;break;default:return+u}for(i=(a=u.slice(2)).length,c=0;cr)return NaN;return parseInt(a,o)}return+u};if(a(g,!b(" 0o1")||!b("0b1")||b("+0x1"))){for(var y,_=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof _&&(N?s((function(){v.valueOf.call(n)})):l(n)!=g)?u(new b(V(t)),n,_):V(t)},x=o?m(b):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;x.length>k;k++)c(b,y=x[k])&&!c(_,y)&&h(_,y,f(b,y));_.prototype=v,v.constructor=_,i(r,g,_)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isFinite:n(255)})},function(e,t,n){"use strict";var o=n(5).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&o(e)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isInteger:n(141)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var o=n(0),r=n(141),a=Math.abs;o({target:"Number",stat:!0},{isSafeInteger:function(e){return r(e)&&a(e)<=9007199254740991}})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var o=n(0),r=n(262);o({target:"Number",stat:!0,forced:Number.parseFloat!=r},{parseFloat:r})},function(e,t,n){"use strict";var o=n(5),r=n(56).trim,a=n(81),i=o.parseFloat,c=1/i(a+"-0")!=-Infinity;e.exports=c?function(e){var t=r(String(e)),n=i(t);return 0===n&&"-"==t.charAt(0)?-0:n}:i},function(e,t,n){"use strict";var o=n(0),r=n(142);o({target:"Number",stat:!0,forced:Number.parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o=n(0),r=n(30),a=n(265),i=n(104),c=n(4),l=1..toFixed,u=Math.floor,d=function p(e,t,n){return 0===t?n:t%2==1?p(e,t-1,n*e):p(e*e,t/2,n)},s=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t};o({target:"Number",proto:!0,forced:l&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){l.call({})}))},{toFixed:function(e){var t,n,o,c,l=a(this),p=r(e),m=[0,0,0,0,0,0],f="",h="0",C=function(e,t){for(var n=-1,o=t;++n<6;)o+=e*m[n],m[n]=o%1e7,o=u(o/1e7)},g=function(e){for(var t=6,n=0;--t>=0;)n+=m[t],m[t]=u(n/e),n=n%e*1e7},b=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==m[e]){var n=String(m[e]);t=""===t?n:t+i.call("0",7-n.length)+n}return t};if(p<0||p>20)throw RangeError("Incorrect fraction digits");if(l!=l)return"NaN";if(l<=-1e21||l>=1e21)return String(l);if(l<0&&(f="-",l=-l),l>1e-21)if(n=(t=s(l*d(2,69,1))-69)<0?l*d(2,-t,1):l/d(2,t,1),n*=4503599627370496,(t=52-t)>0){for(C(0,n),o=p;o>=7;)C(1e7,0),o-=7;for(C(d(10,o,1),0),o=t-1;o>=23;)g(1<<23),o-=23;g(1<0?f+((c=h.length)<=p?"0."+i.call("0",p-c)+h:h.slice(0,c-p)+"."+h.slice(c-p)):f+h}})},function(e,t,n){"use strict";var o=n(32);e.exports=function(e){if("number"!=typeof e&&"Number"!=o(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var o=n(0),r=n(267);o({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},function(e,t,n){"use strict";var o=n(9),r=n(4),a=n(62),i=n(94),c=n(71),l=n(14),u=n(57),d=Object.assign,s=Object.defineProperty;e.exports=!d||r((function(){if(o&&1!==d({b:1},d(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=d({},e)[n]||"abcdefghijklmnopqrst"!=a(d({},t)).join("")}))?function(e,t){for(var n=l(e),r=arguments.length,d=1,s=i.f,p=c.f;r>d;)for(var m,f=u(arguments[d++]),h=s?a(f).concat(s(f)):a(f),C=h.length,g=0;C>g;)m=h[g++],o&&!p.call(f,m)||(n[m]=f[m]);return n}:d},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0,sham:!n(9)},{create:n(42)})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(31),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineGetter__:function(e,t){l.f(i(this),e,{get:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(0),r=n(9);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperties:n(126)})},function(e,t,n){"use strict";var o=n(0),r=n(9);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperty:n(13).f})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(31),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineSetter__:function(e,t){l.f(i(this),e,{set:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(0),r=n(143).entries;o({target:"Object",stat:!0},{entries:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(67),a=n(4),i=n(6),c=n(50).onFreeze,l=Object.freeze;o({target:"Object",stat:!0,forced:a((function(){l(1)})),sham:!r},{freeze:function(e){return l&&i(e)?l(c(e)):e}})},function(e,t,n){"use strict";var o=n(0),r=n(68),a=n(49);o({target:"Object",stat:!0},{fromEntries:function(e){var t={};return r(e,(function(e,n){a(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(24),i=n(18).f,c=n(9),l=r((function(){i(1)}));o({target:"Object",stat:!0,forced:!c||l,sham:!c},{getOwnPropertyDescriptor:function(e,t){return i(a(e),t)}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(92),i=n(24),c=n(18),l=n(49);o({target:"Object",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(e){for(var t,n,o=i(e),r=c.f,u=a(o),d={},s=0;u.length>s;)(n=r(o,t=u[s++]))!==undefined&&l(d,t,n);return d}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(128).f;o({target:"Object",stat:!0,forced:r((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:a})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(14),i=n(36),c=n(102);o({target:"Object",stat:!0,forced:r((function(){i(1)})),sham:!c},{getPrototypeOf:function(e){return i(a(e))}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{is:n(144)})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(6),i=Object.isExtensible;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isExtensible:function(e){return!!a(e)&&(!i||i(e))}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(6),i=Object.isFrozen;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isFrozen:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(6),i=Object.isSealed;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isSealed:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(14),a=n(62);o({target:"Object",stat:!0,forced:n(4)((function(){a(1)}))},{keys:function(e){return a(r(e))}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(33),l=n(36),u=n(18).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupGetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=u(n,o))return t.get}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(33),l=n(36),u=n(18).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupSetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=u(n,o))return t.set}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(50).onFreeze,i=n(67),c=n(4),l=Object.preventExtensions;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{preventExtensions:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(50).onFreeze,i=n(67),c=n(4),l=Object.seal;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{seal:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{setPrototypeOf:n(53)})},function(e,t,n){"use strict";var o=n(100),r=n(22),a=n(291);o||r(Object.prototype,"toString",a,{unsafe:!0})},function(e,t,n){"use strict";var o=n(100),r=n(74);e.exports=o?{}.toString:function(){return"[object "+r(this)+"]"}},function(e,t,n){"use strict";var o=n(0),r=n(143).values;o({target:"Object",stat:!0},{values:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(142);o({global:!0,forced:parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o,r,a,i,c=n(0),l=n(38),u=n(5),d=n(35),s=n(145),p=n(22),m=n(66),f=n(43),h=n(54),C=n(6),g=n(31),b=n(55),v=n(32),N=n(90),V=n(68),y=n(75),_=n(45),x=n(106).set,k=n(147),L=n(148),w=n(295),B=n(149),S=n(296),I=n(34),T=n(61),A=n(11),E=n(96),P=A("species"),M="Promise",O=I.get,R=I.set,F=I.getterFor(M),D=s,j=u.TypeError,z=u.document,H=u.process,G=d("fetch"),U=B.f,K=U,Y="process"==v(H),q=!!(z&&z.createEvent&&u.dispatchEvent),W=0,$=T(M,(function(){if(!(N(D)!==String(D))){if(66===E)return!0;if(!Y&&"function"!=typeof PromiseRejectionEvent)return!0}if(l&&!D.prototype["finally"])return!0;if(E>=51&&/native code/.test(D))return!1;var e=D.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[P]=t,!(e.then((function(){}))instanceof t)})),Q=$||!y((function(e){D.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!C(e)||"function"!=typeof(t=e.then))&&t},J=function(e,t,n){if(!t.notified){t.notified=!0;var o=t.reactions;k((function(){for(var r=t.value,a=1==t.state,i=0;o.length>i;){var c,l,u,d=o[i++],s=a?d.ok:d.fail,p=d.resolve,m=d.reject,f=d.domain;try{s?(a||(2===t.rejection&&ne(e,t),t.rejection=1),!0===s?c=r:(f&&f.enter(),c=s(r),f&&(f.exit(),u=!0)),c===d.promise?m(j("Promise-chain cycle")):(l=X(c))?l.call(c,p,m):p(c)):m(r)}catch(h){f&&!u&&f.exit(),m(h)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&ee(e,t)}))}},Z=function(e,t,n){var o,r;q?((o=z.createEvent("Event")).promise=t,o.reason=n,o.initEvent(e,!1,!0),u.dispatchEvent(o)):o={promise:t,reason:n},(r=u["on"+e])?r(o):"unhandledrejection"===e&&w("Unhandled promise rejection",n)},ee=function(e,t){x.call(u,(function(){var n,o=t.value;if(te(t)&&(n=S((function(){Y?H.emit("unhandledRejection",o,e):Z("unhandledrejection",e,o)})),t.rejection=Y||te(t)?2:1,n.error))throw n.value}))},te=function(e){return 1!==e.rejection&&!e.parent},ne=function(e,t){x.call(u,(function(){Y?H.emit("rejectionHandled",e):Z("rejectionhandled",e,t.value)}))},oe=function(e,t,n,o){return function(r){e(t,n,r,o)}},re=function(e,t,n,o){t.done||(t.done=!0,o&&(t=o),t.value=n,t.state=2,J(e,t,!0))},ae=function ie(e,t,n,o){if(!t.done){t.done=!0,o&&(t=o);try{if(e===n)throw j("Promise can't be resolved itself");var r=X(n);r?k((function(){var o={done:!1};try{r.call(n,oe(ie,e,o,t),oe(re,e,o,t))}catch(a){re(e,o,a,t)}})):(t.value=n,t.state=1,J(e,t,!1))}catch(a){re(e,{done:!1},a,t)}}};$&&(D=function(e){b(this,D,M),g(e),o.call(this);var t=O(this);try{e(oe(ae,this,t),oe(re,this,t))}catch(n){re(this,t,n)}},(o=function(e){R(this,{type:M,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:W,value:undefined})}).prototype=m(D.prototype,{then:function(e,t){var n=F(this),o=U(_(this,D));return o.ok="function"!=typeof e||e,o.fail="function"==typeof t&&t,o.domain=Y?H.domain:undefined,n.parent=!0,n.reactions.push(o),n.state!=W&&J(this,n,!1),o.promise},"catch":function(e){return this.then(undefined,e)}}),r=function(){var e=new o,t=O(e);this.promise=e,this.resolve=oe(ae,e,t),this.reject=oe(re,e,t)},B.f=U=function(e){return e===D||e===a?new r(e):K(e)},l||"function"!=typeof s||(i=s.prototype.then,p(s.prototype,"then",(function(e,t){var n=this;return new D((function(e,t){i.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof G&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return L(D,G.apply(u,arguments))}}))),c({global:!0,wrap:!0,forced:$},{Promise:D}),f(D,M,!1,!0),h(M),a=d(M),c({target:M,stat:!0,forced:$},{reject:function(e){var t=U(this);return t.reject.call(undefined,e),t.promise}}),c({target:M,stat:!0,forced:l||$},{resolve:function(e){return L(l&&this===a?D:this,e)}}),c({target:M,stat:!0,forced:Q},{all:function(e){var t=this,n=U(t),o=n.resolve,r=n.reject,a=S((function(){var n=g(t.resolve),a=[],i=0,c=1;V(e,(function(e){var l=i++,u=!1;a.push(undefined),c++,n.call(t,e).then((function(e){u||(u=!0,a[l]=e,--c||o(a))}),r)})),--c||o(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=U(t),o=n.reject,r=S((function(){var r=g(t.resolve);V(e,(function(e){r.call(t,e).then(n.resolve,o)}))}));return r.error&&o(r.value),n.promise}})},function(e,t,n){"use strict";var o=n(5);e.exports=function(e,t){var n=o.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var o=n(0),r=n(38),a=n(145),i=n(4),c=n(35),l=n(45),u=n(148),d=n(22);o({target:"Promise",proto:!0,real:!0,forced:!!a&&i((function(){a.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=l(this,c("Promise")),n="function"==typeof e;return this.then(n?function(n){return u(t,e()).then((function(){return n}))}:e,n?function(n){return u(t,e()).then((function(){throw n}))}:e)}}),r||"function"!=typeof a||a.prototype["finally"]||d(a.prototype,"finally",c("Promise").prototype["finally"])},function(e,t,n){"use strict";var o=n(0),r=n(35),a=n(31),i=n(8),c=n(4),l=r("Reflect","apply"),u=Function.apply;o({target:"Reflect",stat:!0,forced:!c((function(){l((function(){}))}))},{apply:function(e,t,n){return a(e),i(n),l?l(e,t,n):u.call(e,t,n)}})},function(e,t,n){"use strict";var o=n(0),r=n(35),a=n(31),i=n(8),c=n(6),l=n(42),u=n(138),d=n(4),s=r("Reflect","construct"),p=d((function(){function e(){}return!(s((function(){}),[],e)instanceof e)})),m=!d((function(){s((function(){}))})),f=p||m;o({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){a(e),i(t);var n=arguments.length<3?e:a(arguments[2]);if(m&&!p)return s(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var o=[null];return o.push.apply(o,t),new(u.apply(e,o))}var r=n.prototype,d=l(c(r)?r:Object.prototype),f=Function.apply.call(e,d,t);return c(f)?f:d}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(8),i=n(33),c=n(13);o({target:"Reflect",stat:!0,forced:n(4)((function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})})),sham:!r},{defineProperty:function(e,t,n){a(e);var o=i(t,!0);a(n);try{return c.f(e,o,n),!0}catch(r){return!1}}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(18).f;o({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=a(r(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(8),i=n(15),c=n(18),l=n(36);o({target:"Reflect",stat:!0},{get:function u(e,t){var n,o,d=arguments.length<3?e:arguments[2];return a(e)===d?e[t]:(n=c.f(e,t))?i(n,"value")?n.value:n.get===undefined?undefined:n.get.call(d):r(o=l(e))?u(o,t,d):void 0}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(8),i=n(18);o({target:"Reflect",stat:!0,sham:!r},{getOwnPropertyDescriptor:function(e,t){return i.f(a(e),t)}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(36);o({target:"Reflect",stat:!0,sham:!n(102)},{getPrototypeOf:function(e){return a(r(e))}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=Object.isExtensible;o({target:"Reflect",stat:!0},{isExtensible:function(e){return r(e),!a||a(e)}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{ownKeys:n(92)})},function(e,t,n){"use strict";var o=n(0),r=n(35),a=n(8);o({target:"Reflect",stat:!0,sham:!n(67)},{preventExtensions:function(e){a(e);try{var t=r("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(6),i=n(15),c=n(4),l=n(13),u=n(18),d=n(36),s=n(46);o({target:"Reflect",stat:!0,forced:c((function(){var e=l.f({},"a",{configurable:!0});return!1!==Reflect.set(d(e),"a",1,e)}))},{set:function p(e,t,n){var o,c,m=arguments.length<4?e:arguments[3],f=u.f(r(e),t);if(!f){if(a(c=d(e)))return p(c,t,n,m);f=s(0)}if(i(f,"value")){if(!1===f.writable||!a(m))return!1;if(o=u.f(m,t)){if(o.get||o.set||!1===o.writable)return!1;o.value=n,l.f(m,t,o)}else l.f(m,t,s(0,n));return!0}return f.set!==undefined&&(f.set.call(m,n),!0)}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(135),i=n(53);i&&o({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){r(e),a(t);try{return i(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(9),r=n(5),a=n(61),i=n(79),c=n(13).f,l=n(47).f,u=n(107),d=n(83),s=n(22),p=n(4),m=n(54),f=n(11)("match"),h=r.RegExp,C=h.prototype,g=/a/g,b=/a/g,v=new h(g)!==g;if(o&&a("RegExp",!v||p((function(){return b[f]=!1,h(g)!=g||h(b)==b||"/a/i"!=h(g,"i")})))){for(var N=function(e,t){var n=this instanceof N,o=u(e),r=t===undefined;return!n&&o&&e.constructor===N&&r?e:i(v?new h(o&&!r?e.source:e,t):h((o=e instanceof N)?e.source:e,o&&r?d.call(e):t),n?this:C,N)},V=function(e){e in N||c(N,e,{configurable:!0,get:function(){return h[e]},set:function(t){h[e]=t}})},y=l(h),_=0;y.length>_;)V(y[_++]);C.constructor=N,N.prototype=C,s(r,"RegExp",N)}m("RegExp")},function(e,t,n){"use strict";var o=n(0),r=n(84);o({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},function(e,t,n){"use strict";var o=n(9),r=n(13),a=n(83);o&&"g"!=/./g.flags&&r.f(RegExp.prototype,"flags",{configurable:!0,get:a})},function(e,t,n){"use strict";var o=n(22),r=n(8),a=n(4),i=n(83),c=RegExp.prototype,l=c.toString,u=a((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),d="toString"!=l.name;(u||d)&&o(RegExp.prototype,"toString",(function(){var e=r(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in c)?i.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var o=n(78),r=n(139);e.exports=o("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(0),r=n(108).codeAt;o({target:"String",proto:!0},{codePointAt:function(e){return r(this,e)}})},function(e,t,n){"use strict";var o,r=n(0),a=n(18).f,i=n(10),c=n(109),l=n(21),u=n(110),d=n(38),s="".endsWith,p=Math.min,m=u("endsWith");r({target:"String",proto:!0,forced:!!(d||m||(o=a(String.prototype,"endsWith"),!o||o.writable))&&!m},{endsWith:function(e){var t=String(l(this));c(e);var n=arguments.length>1?arguments[1]:undefined,o=i(t.length),r=n===undefined?o:p(i(n),o),a=String(e);return s?s.call(t,a,r):t.slice(r-a.length,r)===a}})},function(e,t,n){"use strict";var o=n(0),r=n(41),a=String.fromCharCode,i=String.fromCodePoint;o({target:"String",stat:!0,forced:!!i&&1!=i.length},{fromCodePoint:function(e){for(var t,n=[],o=arguments.length,i=0;o>i;){if(t=+arguments[i++],r(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?a(t):a(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var o=n(0),r=n(109),a=n(21);o({target:"String",proto:!0,forced:!n(110)("includes")},{includes:function(e){return!!~String(a(this)).indexOf(r(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(108).charAt,r=n(34),a=n(101),i=r.set,c=r.getterFor("String Iterator");a(String,"String",(function(e){i(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,r=t.index;return r>=n.length?{value:undefined,done:!0}:(e=o(n,r),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var o=n(85),r=n(8),a=n(10),i=n(21),c=n(111),l=n(86);o("match",1,(function(e,t,n){return[function(t){var n=i(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var i=r(e),u=String(this);if(!i.global)return l(i,u);var d=i.unicode;i.lastIndex=0;for(var s,p=[],m=0;null!==(s=l(i,u));){var f=String(s[0]);p[m]=f,""===f&&(i.lastIndex=c(u,a(i.lastIndex),d)),m++}return 0===m?null:p}]}))},function(e,t,n){"use strict";var o=n(0),r=n(103).end;o({target:"String",proto:!0,forced:n(150)},{padEnd:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(103).start;o({target:"String",proto:!0,forced:n(150)},{padStart:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(24),a=n(10);o({target:"String",stat:!0},{raw:function(e){for(var t=r(e.raw),n=a(t.length),o=arguments.length,i=[],c=0;n>c;)i.push(String(t[c++])),c]*>)/g,h=/\$([$&'`]|\d\d?)/g;o("replace",2,(function(e,t,n){return[function(n,o){var r=l(this),a=n==undefined?undefined:n[e];return a!==undefined?a.call(n,r,o):t.call(String(r),n,o)},function(e,a){var l=n(t,e,this,a);if(l.done)return l.value;var m=r(e),f=String(this),h="function"==typeof a;h||(a=String(a));var C=m.global;if(C){var g=m.unicode;m.lastIndex=0}for(var b=[];;){var v=d(m,f);if(null===v)break;if(b.push(v),!C)break;""===String(v[0])&&(m.lastIndex=u(f,i(m.lastIndex),g))}for(var N,V="",y=0,_=0;_=y&&(V+=f.slice(y,k)+I,y=k+x.length)}return V+f.slice(y)}];function o(e,n,o,r,i,c){var l=o+e.length,u=r.length,d=h;return i!==undefined&&(i=a(i),d=f),t.call(c,d,(function(t,a){var c;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,o);case"'":return n.slice(l);case"<":c=i[a.slice(1,-1)];break;default:var d=+a;if(0===d)return t;if(d>u){var s=m(d/10);return 0===s?t:s<=u?r[s-1]===undefined?a.charAt(1):r[s-1]+a.charAt(1):t}c=r[d-1]}return c===undefined?"":c}))}}))},function(e,t,n){"use strict";var o=n(85),r=n(8),a=n(21),i=n(144),c=n(86);o("search",1,(function(e,t,n){return[function(t){var n=a(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var a=r(e),l=String(this),u=a.lastIndex;i(u,0)||(a.lastIndex=0);var d=c(a,l);return i(a.lastIndex,u)||(a.lastIndex=u),null===d?-1:d.index}]}))},function(e,t,n){"use strict";var o=n(85),r=n(107),a=n(8),i=n(21),c=n(45),l=n(111),u=n(10),d=n(86),s=n(84),p=n(4),m=[].push,f=Math.min,h=!p((function(){return!RegExp(4294967295,"y")}));o("split",2,(function(e,t,n){var o;return o="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var o=String(i(this)),a=n===undefined?4294967295:n>>>0;if(0===a)return[];if(e===undefined)return[o];if(!r(e))return t.call(o,e,a);for(var c,l,u,d=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,h=new RegExp(e.source,p+"g");(c=s.call(h,o))&&!((l=h.lastIndex)>f&&(d.push(o.slice(f,c.index)),c.length>1&&c.index=a));)h.lastIndex===c.index&&h.lastIndex++;return f===o.length?!u&&h.test("")||d.push(""):d.push(o.slice(f)),d.length>a?d.slice(0,a):d}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=i(this),a=t==undefined?undefined:t[e];return a!==undefined?a.call(t,r,n):o.call(String(r),t,n)},function(e,r){var i=n(o,e,this,r,o!==t);if(i.done)return i.value;var s=a(e),p=String(this),m=c(s,RegExp),C=s.unicode,g=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),b=new m(h?s:"^(?:"+s.source+")",g),v=r===undefined?4294967295:r>>>0;if(0===v)return[];if(0===p.length)return null===d(b,p)?[p]:[];for(var N=0,V=0,y=[];V1?arguments[1]:undefined,t.length)),o=String(e);return s?s.call(t,o,n):t.slice(n,n+o.length)===o}})},function(e,t,n){"use strict";var o=n(0),r=n(56).trim;o({target:"String",proto:!0,forced:n(112)("trim")},{trim:function(){return r(this)}})},function(e,t,n){"use strict";var o=n(0),r=n(56).end,a=n(112)("trimEnd"),i=a?function(){return r(this)}:"".trimEnd;o({target:"String",proto:!0,forced:a},{trimEnd:i,trimRight:i})},function(e,t,n){"use strict";var o=n(0),r=n(56).start,a=n(112)("trimStart"),i=a?function(){return r(this)}:"".trimStart;o({target:"String",proto:!0,forced:a},{trimStart:i,trimLeft:i})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("anchor")},{anchor:function(e){return r(this,"a","name",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("big")},{big:function(){return r(this,"big","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("blink")},{blink:function(){return r(this,"blink","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("bold")},{bold:function(){return r(this,"b","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("fixed")},{fixed:function(){return r(this,"tt","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("fontcolor")},{fontcolor:function(e){return r(this,"font","color",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("fontsize")},{fontsize:function(e){return r(this,"font","size",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("italics")},{italics:function(){return r(this,"i","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("link")},{link:function(e){return r(this,"a","href",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("small")},{small:function(){return r(this,"small","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("strike")},{strike:function(){return r(this,"strike","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("sub")},{sub:function(){return r(this,"sub","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(27);o({target:"String",proto:!0,forced:n(28)("sup")},{sup:function(){return r(this,"sup","","")}})},function(e,t,n){"use strict";n(40)("Float32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(30);e.exports=function(e){var t=o(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(40)("Float64",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}),!0)},function(e,t,n){"use strict";n(40)("Uint16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(7),r=n(130),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("copyWithin",(function(e,t){return r.call(a(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(16).every,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("every",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(97),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("fill",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(16).filter,a=n(45),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("filter",(function(e){for(var t=r(i(this),e,arguments.length>1?arguments[1]:undefined),n=a(this,this.constructor),o=0,l=t.length,u=new(c(n))(l);l>o;)u[o]=t[o++];return u}))},function(e,t,n){"use strict";var o=n(7),r=n(16).find,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("find",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(16).findIndex,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("findIndex",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(16).forEach,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("forEach",(function(e){r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(113);(0,n(7).exportTypedArrayStaticMethod)("from",n(152),o)},function(e,t,n){"use strict";var o=n(7),r=n(60).includes,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("includes",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(60).indexOf,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("indexOf",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(5),r=n(7),a=n(133),i=n(11)("iterator"),c=o.Uint8Array,l=a.values,u=a.keys,d=a.entries,s=r.aTypedArray,p=r.exportTypedArrayMethod,m=c&&c.prototype[i],f=!!m&&("values"==m.name||m.name==undefined),h=function(){return l.call(s(this))};p("entries",(function(){return d.call(s(this))})),p("keys",(function(){return u.call(s(this))})),p("values",h,!f),p(i,h,!f)},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].join;a("join",(function(e){return i.apply(r(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(136),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("lastIndexOf",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(16).map,a=n(45),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("map",(function(e){return r(i(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(c(a(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var o=n(7),r=n(113),a=o.aTypedArrayConstructor;(0,o.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(a(this))(t);t>e;)n[e]=arguments[e++];return n}),r)},function(e,t,n){"use strict";var o=n(7),r=n(76).left,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduce",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(76).right,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduceRight",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=Math.floor;a("reverse",(function(){for(var e,t=r(this).length,n=i(t/2),o=0;o1?arguments[1]:undefined,1),n=this.length,o=i(e),c=r(o.length),u=0;if(c+t>n)throw RangeError("Wrong length");for(;ua;)d[a]=n[a++];return d}),a((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var o=n(7),r=n(16).some,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("some",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].sort;a("sort",(function(e){return i.call(r(this),e)}))},function(e,t,n){"use strict";var o=n(7),r=n(10),a=n(41),i=n(45),c=o.aTypedArray;(0,o.exportTypedArrayMethod)("subarray",(function(e,t){var n=c(this),o=n.length,l=a(e,o);return new(i(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,r((t===undefined?o:a(t,o))-l))}))},function(e,t,n){"use strict";var o=n(5),r=n(7),a=n(4),i=o.Int8Array,c=r.aTypedArray,l=r.exportTypedArrayMethod,u=[].toLocaleString,d=[].slice,s=!!i&&a((function(){u.call(new i(1))}));l("toLocaleString",(function(){return u.apply(s?d.call(c(this)):c(this),arguments)}),a((function(){return[1,2].toLocaleString()!=new i([1,2]).toLocaleString()}))||!a((function(){i.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var o=n(7).exportTypedArrayMethod,r=n(4),a=n(5).Uint8Array,i=a&&a.prototype||{},c=[].toString,l=[].join;r((function(){c.call({})}))&&(c=function(){return l.call(this)});var u=i.toString!=c;o("toString",c,u)},function(e,t,n){"use strict";var o,r=n(5),a=n(66),i=n(50),c=n(78),l=n(153),u=n(6),d=n(34).enforce,s=n(121),p=!r.ActiveXObject&&"ActiveXObject"in r,m=Object.isExtensible,f=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},h=e.exports=c("WeakMap",f,l);if(s&&p){o=l.getConstructor(f,"WeakMap",!0),i.REQUIRED=!0;var C=h.prototype,g=C["delete"],b=C.has,v=C.get,N=C.set;a(C,{"delete":function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),g.call(this,e)||t.frozen["delete"](e)}return g.call(this,e)},has:function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),b.call(this,e)||t.frozen.has(e)}return b.call(this,e)},get:function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),b.call(this,e)?v.call(this,e):t.frozen.get(e)}return v.call(this,e)},set:function(e,t){if(u(e)&&!m(e)){var n=d(this);n.frozen||(n.frozen=new o),b.call(this,e)?N.call(this,e,t):n.frozen.set(e,t)}else N.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(78)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(153))},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(106);o({global:!0,bind:!0,enumerable:!0,forced:!r.setImmediate||!r.clearImmediate},{setImmediate:a.set,clearImmediate:a.clear})},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(147),i=n(32),c=r.process,l="process"==i(c);o({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=l&&c.domain;a(t?t.bind(e):e)}})},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(73),i=[].slice,c=function(e){return function(t,n){var o=arguments.length>2,r=o?i.call(arguments,2):undefined;return e(o?function(){("function"==typeof t?t:Function(t)).apply(this,r)}:t,n)}};o({global:!0,bind:!0,forced:/MSIE .\./.test(a)},{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(e,t,n){"use strict";t.__esModule=!0,t._CI=Ie,t._HI=D,t._M=Te,t._MCCC=Me,t._ME=Ee,t._MFCC=Oe,t._MP=Be,t._MR=Ne,t.__render=ze,t.createComponentVNode=function(e,t,n,o,r){var i=new T(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),o,function(e,t,n){var o=(32768&e?t.render:t).defaultProps;if(a(o))return n;if(a(n))return d(o,null);return B(n,o)}(e,t,n),function(e,t,n){if(4&e)return n;var o=(32768&e?t.render:t).defaultHooks;if(a(o))return n;if(a(n))return o;return B(n,o)}(e,t,r),t);k.createVNode&&k.createVNode(i);return i},t.createFragment=P,t.createPortal=function(e,t){var n=D(e);return A(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,o,r){e||(e=t),He(n,e,o,r)}},t.createTextVNode=E,t.createVNode=A,t.directClone=M,t.findDOMfromVNode=N,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case m:return 8192;default:return 1}},t.linkEvent=function(e,t){if(c(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&a(e.children)&&F(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?d(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=He,t.rerender=We,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var o=Array.isArray;function r(e){var t=typeof e;return"string"===t||"number"===t}function a(e){return null==e}function i(e){return null===e||!1===e||!0===e||void 0===e}function c(e){return"function"==typeof e}function l(e){return"string"==typeof e}function u(e){return null===e}function d(e,t){var n={};if(e)for(var o in e)n[o]=e[o];if(t)for(var r in t)n[r]=t[r];return n}function s(e){return!u(e)&&"object"==typeof e}var p={};t.EMPTY_OBJ=p;var m="$F";function f(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function C(e,t,n){u(n)?h(e,t):e.insertBefore(t,n)}function g(e,t){e.removeChild(t)}function b(e){for(var t;(t=e.shift())!==undefined;)t()}function v(e,t,n){var o=e.children;return 4&n?o.$LI:8192&n?2===e.childFlags?o:o[t?0:o.length-1]:o}function N(e,t){for(var n;e;){if(2033&(n=e.flags))return e.dom;e=v(e,t,n)}return null}function V(e,t){do{var n=e.flags;if(2033&n)return void g(t,e.dom);var o=e.children;if(4&n&&(e=o.$LI),8&n&&(e=o),8192&n){if(2!==e.childFlags){for(var r=0,a=o.length;r0,f=u(p),h=l(p)&&p[0]===I;m||f||h?(n=n||t.slice(0,d),(m||h)&&(s=M(s)),(f||h)&&(s.key=I+d),n.push(s)):n&&n.push(s),s.flags|=65536}}a=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=M(t)),a=2;return e.children=n,e.childFlags=a,e}function D(e){return i(e)||r(e)?E(e,null):o(e)?P(e,0,null):16384&e.flags?M(e):e}var j="http://www.w3.org/1999/xlink",z="http://www.w3.org/XML/1998/namespace",H={"xlink:actuate":j,"xlink:arcrole":j,"xlink:href":j,"xlink:role":j,"xlink:show":j,"xlink:title":j,"xlink:type":j,"xml:base":z,"xml:lang":z,"xml:space":z};function G(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var U=G(0),K=G(null),Y=G(!0);function q(e,t){var n=t.$EV;return n||(n=t.$EV=G(null)),n[e]||1==++U[e]&&(K[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?$(t,!0,e,Z(t)):t.stopPropagation()}}(e):function(e){return function(t){$(t,!1,e,Z(t))}}(e);return document.addEventListener(f(e),t),t}(e)),n}function W(e,t){var n=t.$EV;n&&n[e]&&(0==--U[e]&&(document.removeEventListener(f(e),K[e]),K[e]=null),n[e]=null)}function $(e,t,n,o){var r=function(e){return c(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&r.disabled)return;var a=r.$EV;if(a){var i=a[n];if(i&&(o.dom=r,i.event?i.event(i.data,e):i(e),e.cancelBubble))return}r=r.parentNode}while(!u(r))}function Q(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function X(){return this.defaultPrevented}function J(){return this.cancelBubble}function Z(e){var t={dom:document};return e.isDefaultPrevented=X,e.isPropagationStopped=J,e.stopPropagation=Q,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function ee(e,t,n){if(e[t]){var o=e[t];o.event?o.event(o.data,n):o(n)}else{var r=t.toLowerCase();e[r]&&e[r](n)}}function te(e,t){var n=function(n){var o=this.$V;if(o){var r=o.props||p,a=o.dom;if(l(e))ee(r,e,n);else for(var i=0;i-1&&t.options[i]&&(c=t.options[i].value),n&&a(c)&&(c=e.defaultValue),le(o,c)}}var se,pe,me=te("onInput",he),fe=te("onChange");function he(e,t,n){var o=e.value,r=t.value;if(a(o)){if(n){var i=e.defaultValue;a(i)||i===r||(t.defaultValue=i,t.value=i)}}else r!==o&&(t.defaultValue=o,t.value=o)}function Ce(e,t,n,o,r,a){64&e?ce(o,n):256&e?de(o,n,r,t):128&e&&he(o,n,r),a&&(n.$V=t)}function ge(e,t,n){64&e?function(e,t){oe(t.type)?(ne(e,"change",ae),ne(e,"click",ie)):ne(e,"input",re)}(t,n):256&e?function(e){ne(e,"change",ue)}(t):128&e&&function(e,t){ne(e,"input",me),t.onChange&&ne(e,"change",fe)}(t,n)}function be(e){return e.type&&oe(e.type)?!a(e.checked):!a(e.value)}function ve(e){e&&!S(e,null)&&e.current&&(e.current=null)}function Ne(e,t,n){e&&(c(e)||void 0!==e.current)&&n.push((function(){S(e,t)||void 0===e.current||(e.current=t)}))}function Ve(e,t){ye(e),V(e,t)}function ye(e){var t,n=e.flags,o=e.children;if(481&n){t=e.ref;var r=e.props;ve(t);var i=e.childFlags;if(!u(r))for(var l=Object.keys(r),d=0,s=l.length;d0;for(var c in i&&(a=be(n))&&ge(t,o,n),n)we(c,null,n[c],o,r,a,null);i&&Ce(t,e,o,n,!0,a)}function Se(e,t,n){var o=D(e.render(t,e.state,n)),r=n;return c(e.getChildContext)&&(r=d(n,e.getChildContext())),e.$CX=r,o}function Ie(e,t,n,o,r,a){var i=new t(n,o),l=i.$N=Boolean(t.getDerivedStateFromProps||i.getSnapshotBeforeUpdate);if(i.$SVG=r,i.$L=a,e.children=i,i.$BS=!1,i.context=o,i.props===p&&(i.props=n),l)i.state=_(i,n,i.state);else if(c(i.componentWillMount)){i.$BR=!0,i.componentWillMount();var d=i.$PS;if(!u(d)){var s=i.state;if(u(s))i.state=d;else for(var m in d)s[m]=d[m];i.$PS=null}i.$BR=!1}return i.$LI=Se(i,n,o),i}function Te(e,t,n,o,r,a){var i=e.flags|=16384;481&i?Ee(e,t,n,o,r,a):4&i?function(e,t,n,o,r,a){var i=Ie(e,e.type,e.props||p,n,o,a);Te(i.$LI,t,i.$CX,o,r,a),Me(e.ref,i,a)}(e,t,n,o,r,a):8&i?(!function(e,t,n,o,r,a){Te(e.children=D(function(e,t){return 32768&e.flags?e.type.render(e.props||p,e.ref,t):e.type(e.props||p,t)}(e,n)),t,n,o,r,a)}(e,t,n,o,r,a),Oe(e,a)):512&i||16&i?Ae(e,t,r):8192&i?function(e,t,n,o,r,a){var i=e.children,c=e.childFlags;12&c&&0===i.length&&(c=e.childFlags=2,i=e.children=O());2===c?Te(i,n,r,o,r,a):Pe(i,n,t,o,r,a)}(e,n,t,o,r,a):1024&i&&function(e,t,n,o,r){Te(e.children,e.ref,t,!1,null,r);var a=O();Ae(a,n,o),e.dom=a.dom}(e,n,t,r,a)}function Ae(e,t,n){var o=e.dom=document.createTextNode(e.children);u(t)||C(t,o,n)}function Ee(e,t,n,o,r,i){var c=e.flags,l=e.props,d=e.className,s=e.children,p=e.childFlags,m=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,o=o||(32&c)>0);if(a(d)||""===d||(o?m.setAttribute("class",d):m.className=d),16===p)L(m,s);else if(1!==p){var f=o&&"foreignObject"!==e.type;2===p?(16384&s.flags&&(e.children=s=M(s)),Te(s,m,n,f,null,i)):8!==p&&4!==p||Pe(s,m,n,f,null,i)}u(t)||C(t,m,r),u(l)||Be(e,c,l,m,o),Ne(e.ref,m,i)}function Pe(e,t,n,o,r,a){for(var i=0;i0,u!==d){var f=u||p;if((c=d||p)!==p)for(var h in(s=(448&r)>0)&&(m=be(c)),c){var C=f[h],g=c[h];C!==g&&we(h,C,g,l,o,m,e)}if(f!==p)for(var b in f)a(c[b])&&!a(f[b])&&we(b,f[b],null,l,o,m,e)}var v=t.children,N=t.className;e.className!==N&&(a(N)?l.removeAttribute("class"):o?l.setAttribute("class",N):l.className=N);4096&r?function(e,t){e.textContent!==t&&(e.textContent=t)}(l,v):Fe(e.childFlags,t.childFlags,e.children,v,l,n,o&&"foreignObject"!==t.type,null,e,i);s&&Ce(r,t,l,c,!1,m);var V=t.ref,y=e.ref;y!==V&&(ve(y),Ne(V,l,i))}(e,t,o,r,m,s):4&m?function(e,t,n,o,r,a,i){var l=t.children=e.children;if(u(l))return;l.$L=i;var s=t.props||p,m=t.ref,f=e.ref,h=l.state;if(!l.$N){if(c(l.componentWillReceiveProps)){if(l.$BR=!0,l.componentWillReceiveProps(s,o),l.$UN)return;l.$BR=!1}u(l.$PS)||(h=d(h,l.$PS),l.$PS=null)}De(l,h,s,n,o,r,!1,a,i),f!==m&&(ve(f),Ne(m,l,i))}(e,t,n,o,r,l,s):8&m?function(e,t,n,o,r,i,l){var u=!0,d=t.props||p,s=t.ref,m=e.props,f=!a(s),h=e.children;f&&c(s.onComponentShouldUpdate)&&(u=s.onComponentShouldUpdate(m,d));if(!1!==u){f&&c(s.onComponentWillUpdate)&&s.onComponentWillUpdate(m,d);var C=t.type,g=D(32768&t.flags?C.render(d,s,o):C(d,o));Re(h,g,n,o,r,i,l),t.children=g,f&&c(s.onComponentDidUpdate)&&s.onComponentDidUpdate(m,d)}else t.children=h}(e,t,n,o,r,l,s):16&m?function(e,t){var n=t.children,o=t.dom=e.dom;n!==e.children&&(o.nodeValue=n)}(e,t):512&m?t.dom=e.dom:8192&m?function(e,t,n,o,r,a){var i=e.children,c=t.children,l=e.childFlags,u=t.childFlags,d=null;12&u&&0===c.length&&(u=t.childFlags=2,c=t.children=O());var s=0!=(2&u);if(12&l){var p=i.length;(8&l&&8&u||s||!s&&c.length>p)&&(d=N(i[p-1],!1).nextSibling)}Fe(l,u,i,c,n,o,r,d,e,a)}(e,t,n,o,r,s):function(e,t,n,o){var r=e.ref,a=t.ref,c=t.children;if(Fe(e.childFlags,t.childFlags,e.children,c,r,n,!1,null,e,o),t.dom=e.dom,r!==a&&!i(c)){var l=c.dom;g(r,l),h(a,l)}}(e,t,o,s)}function Fe(e,t,n,o,r,a,i,c,l,u){switch(e){case 2:switch(t){case 2:Re(n,o,r,a,i,c,u);break;case 1:Ve(n,r);break;case 16:ye(n),L(r,o);break;default:!function(e,t,n,o,r,a){ye(e),Pe(t,n,o,r,N(e,!0),a),V(e,n)}(n,o,r,a,i,u)}break;case 1:switch(t){case 2:Te(o,r,a,i,c,u);break;case 1:break;case 16:L(r,o);break;default:Pe(o,r,a,i,c,u)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:L(n,t))}(n,o,r);break;case 2:xe(r),Te(o,r,a,i,c,u);break;case 1:xe(r);break;default:xe(r),Pe(o,r,a,i,c,u)}break;default:switch(t){case 16:_e(n),L(r,o);break;case 2:ke(r,l,n),Te(o,r,a,i,c,u);break;case 1:ke(r,l,n);break;default:var d=0|n.length,s=0|o.length;0===d?s>0&&Pe(o,r,a,i,c,u):0===s?ke(r,l,n):8===t&&8===e?function(e,t,n,o,r,a,i,c,l,u){var d,s,p=a-1,m=i-1,f=0,h=e[f],C=t[f];e:{for(;h.key===C.key;){if(16384&C.flags&&(t[f]=C=M(C)),Re(h,C,n,o,r,c,u),e[f]=C,++f>p||f>m)break e;h=e[f],C=t[f]}for(h=e[p],C=t[m];h.key===C.key;){if(16384&C.flags&&(t[m]=C=M(C)),Re(h,C,n,o,r,c,u),e[p]=C,p--,m--,f>p||f>m)break e;h=e[p],C=t[m]}}if(f>p){if(f<=m)for(s=(d=m+1)m)for(;f<=p;)Ve(e[f++],n);else!function(e,t,n,o,r,a,i,c,l,u,d,s,p){var m,f,h,C=0,g=c,b=c,v=a-c+1,V=i-c+1,_=new Int32Array(V+1),x=v===o,k=!1,L=0,w=0;if(r<4||(v|V)<32)for(C=g;C<=a;++C)if(m=e[C],wc?k=!0:L=c,16384&f.flags&&(t[c]=f=M(f)),Re(m,f,l,n,u,d,p),++w;break}!x&&c>i&&Ve(m,l)}else x||Ve(m,l);else{var B={};for(C=b;C<=i;++C)B[t[C].key]=C;for(C=g;C<=a;++C)if(m=e[C],wg;)Ve(e[g++],l);_[c-b]=C+1,L>c?k=!0:L=c,16384&(f=t[c]).flags&&(t[c]=f=M(f)),Re(m,f,l,n,u,d,p),++w}else x||Ve(m,l);else x||Ve(m,l)}if(x)ke(l,s,e),Pe(t,l,n,u,d,p);else if(k){var S=function(e){var t=0,n=0,o=0,r=0,a=0,i=0,c=0,l=e.length;l>je&&(je=l,se=new Int32Array(l),pe=new Int32Array(l));for(;n>1]]0&&(pe[n]=se[a-1]),se[a]=n)}a=r+1;var u=new Int32Array(a);i=se[a-1];for(;a-- >0;)u[a]=i,i=pe[i],se[a]=0;return u}(_);for(c=S.length-1,C=V-1;C>=0;C--)0===_[C]?(16384&(f=t[L=C+b]).flags&&(t[L]=f=M(f)),Te(f,l,n,u,(h=L+1)=0;C--)0===_[C]&&(16384&(f=t[L=C+b]).flags&&(t[L]=f=M(f)),Te(f,l,n,u,(h=L+1)i?i:a,p=0;pi)for(p=s;p0&&b(r),x.v=!1,c(n)&&n(),c(k.renderComplete)&&k.renderComplete(i,t)}function He(e,t,n,o){void 0===n&&(n=null),void 0===o&&(o=p),ze(e,t,n,o)}"undefined"!=typeof document&&window.Node&&(Node.prototype.$EV=null,Node.prototype.$V=null);var Ge=[],Ue="undefined"!=typeof Promise?Promise.resolve().then.bind(Promise.resolve()):function(e){window.setTimeout(e,0)},Ke=!1;function Ye(e,t,n,o){var r=e.$PS;if(c(t)&&(t=t(r?d(e.state,r):e.state,e.props,e.context)),a(r))e.$PS=t;else for(var i in t)r[i]=t[i];if(e.$BR)c(n)&&e.$L.push(n.bind(e));else{if(!x.v&&0===Ge.length)return void $e(e,o,n);if(-1===Ge.indexOf(e)&&Ge.push(e),Ke||(Ke=!0,Ue(We)),c(n)){var l=e.$QU;l||(l=e.$QU=[]),l.push(n)}}}function qe(e){for(var t=e.$QU,n=0,o=t.length;n0&&b(r),x.v=!1}else e.state=e.$PS,e.$PS=null;c(n)&&n.call(e)}}var Qe=function(e,t){this.state=null,this.$BR=!1,this.$BS=!0,this.$PS=null,this.$LI=null,this.$UN=!1,this.$CX=null,this.$QU=null,this.$N=!1,this.$L=null,this.$SVG=!1,this.props=e||p,this.context=t||p};t.Component=Qe,Qe.prototype.forceUpdate=function(e){this.$UN||Ye(this,{},e,!0)},Qe.prototype.setState=function(e,t){this.$UN||this.$BS||Ye(this,e,t,!1)},Qe.prototype.render=function(e,t,n){return null};t.version="7.3.3"},function(e,t,n){"use strict";var o=function(e){var t,n=Object.prototype,o=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",c=r.toStringTag||"@@toStringTag";function l(e,t,n,o){var r=t&&t.prototype instanceof h?t:h,a=Object.create(r.prototype),i=new w(o||[]);return a._invoke=function(e,t,n){var o=d;return function(r,a){if(o===p)throw new Error("Generator is already running");if(o===m){if("throw"===r)throw a;return S()}for(n.method=r,n.arg=a;;){var i=n.delegate;if(i){var c=x(i,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=p;var l=u(e,t,n);if("normal"===l.type){if(o=n.done?m:s,l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=m,n.method="throw",n.arg=l.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(o){return{type:"throw",arg:o}}}e.wrap=l;var d="suspendedStart",s="suspendedYield",p="executing",m="completed",f={};function h(){}function C(){}function g(){}var b={};b[a]=function(){return this};var v=Object.getPrototypeOf,N=v&&v(v(B([])));N&&N!==n&&o.call(N,a)&&(b=N);var V=g.prototype=h.prototype=Object.create(b);function y(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function _(e){var t;this._invoke=function(n,r){function a(){return new Promise((function(t,a){!function i(t,n,r,a){var c=u(e[t],e,n);if("throw"!==c.type){var l=c.arg,d=l.value;return d&&"object"==typeof d&&o.call(d,"__await")?Promise.resolve(d.__await).then((function(e){i("next",e,r,a)}),(function(e){i("throw",e,r,a)})):Promise.resolve(d).then((function(e){l.value=e,r(l)}),(function(e){return i("throw",e,r,a)}))}a(c.arg)}(n,r,t,a)}))}return t=t?t.then(a,a):a()}}function x(e,n){var o=e.iterator[n.method];if(o===t){if(n.delegate=null,"throw"===n.method){if(e.iterator["return"]&&(n.method="return",n.arg=t,x(e,n),"throw"===n.method))return f;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var r=u(o,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,f;var a=r.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,f):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function B(e){if(e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function n(){for(;++r=0;--a){var i=this.tryEntries[a],c=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=o.call(i,"catchLoc"),u=o.call(i,"finallyLoc");if(l&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),f}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,o){return this.delegate={iterator:B(e),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=t),f}},e}(e.exports);try{regeneratorRuntime=o}catch(r){Function("r","regeneratorRuntime = r")(o)}},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},function(e,t,n){"use strict";(function(e){
+!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=165)}([function(e,t,n){"use strict";var o=n(5),r=n(20).f,a=n(26),i=n(22),c=n(89),l=n(122),u=n(61);e.exports=function(e,t){var n,d,s,p,m,f=e.target,h=e.global,C=e.stat;if(n=h?o:C?o[f]||c(f,{}):(o[f]||{}).prototype)for(d in t){if(p=t[d],s=e.noTargetGet?(m=r(n,d))&&m.value:n[d],!u(h?d:f+(C?".":"#")+d,e.forced)&&s!==undefined){if(typeof p==typeof s)continue;l(p,s)}(e.sham||s&&s.sham)&&a(p,"sham",!0),i(n,d,p,e)}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(387);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=o[e])}))},function(e,t,n){"use strict";t.__esModule=!0,t.Chart=t.Tooltip=t.Toast=t.TitleBar=t.Tabs=t.Table=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.LabeledList=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.Dimmer=t.Collapsible=t.ColorBox=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var o=n(158);t.AnimatedNumber=o.AnimatedNumber;var r=n(392);t.BlockQuote=r.BlockQuote;var a=n(19);t.Box=a.Box;var i=n(114);t.Button=i.Button;var c=n(394);t.ColorBox=c.ColorBox;var l=n(395);t.Collapsible=l.Collapsible;var u=n(396);t.Dimmer=u.Dimmer;var d=n(397);t.Dropdown=d.Dropdown;var s=n(398);t.Flex=s.Flex;var p=n(161);t.Grid=p.Grid;var m=n(87);t.Icon=m.Icon;var f=n(160);t.Input=f.Input;var h=n(163);t.LabeledList=h.LabeledList;var C=n(399);t.NoticeBox=C.NoticeBox;var g=n(400);t.NumberInput=g.NumberInput;var b=n(401);t.ProgressBar=b.ProgressBar;var v=n(402);t.Section=v.Section;var N=n(162);t.Table=N.Table;var V=n(403);t.Tabs=V.Tabs;var y=n(404);t.TitleBar=y.TitleBar;var _=n(117);t.Toast=_.Toast;var x=n(159);t.Tooltip=x.Tooltip;var k=n(405);t.Chart=k.Chart},function(e,t,n){"use strict";t.__esModule=!0,t.useBackend=t.backendReducer=t.backendUpdate=void 0;var o=n(37),r=n(16);t.backendUpdate=function(e){return{type:"backendUpdate",payload:e}};t.backendReducer=function(e,t){var n=t.type,r=t.payload;if("backendUpdate"===n){var a=Object.assign({},e.config,{},r.config),i=Object.assign({},e.data,{},r.static_data,{},r.data),c=a.status!==o.UI_DISABLED,l=a.status===o.UI_INTERACTIVE;return Object.assign({},e,{config:a,data:i,visible:c,interactive:l})}return e};t.useBackend=function(e){var t=e.state,n=(e.dispatch,t.config.ref);return Object.assign({},t,{act:function(e,t){return void 0===t&&(t={}),(0,r.act)(n,e,t)}})}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(118))},function(e,t,n){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";var o,r=n(9),a=n(5),i=n(6),c=n(15),l=n(74),u=n(26),d=n(22),s=n(13).f,p=n(36),m=n(53),f=n(11),h=n(58),C=a.DataView,g=C&&C.prototype,b=a.Int8Array,v=b&&b.prototype,N=a.Uint8ClampedArray,V=N&&N.prototype,y=b&&p(b),_=v&&p(v),x=Object.prototype,k=x.isPrototypeOf,L=f("toStringTag"),w=h("TYPED_ARRAY_TAG"),B=!(!a.ArrayBuffer||!C),S=B&&!!m&&"Opera"!==l(a.opera),I=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},A=function(e){var t=l(e);return"DataView"===t||c(T,t)},P=function(e){return i(e)&&c(T,l(e))};for(o in T)a[o]||(S=!1);if((!S||"function"!=typeof y||y===Function.prototype)&&(y=function(){throw TypeError("Incorrect invocation")},S))for(o in T)a[o]&&m(a[o],y);if((!S||!_||_===x)&&(_=y.prototype,S))for(o in T)a[o]&&m(a[o].prototype,_);if(S&&p(V)!==_&&m(V,_),r&&!c(_,L))for(o in I=!0,s(_,L,{get:function(){return i(this)?this[w]:undefined}}),T)a[o]&&u(a[o],w,o);B&&m&&p(g)!==x&&m(g,x),e.exports={NATIVE_ARRAY_BUFFER:B,NATIVE_ARRAY_BUFFER_VIEWS:S,TYPED_ARRAY_TAG:I&&w,aTypedArray:function(e){if(P(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(m){if(k.call(y,e))return e}else for(var t in T)if(c(T,o)){var n=a[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(r){if(n)for(var o in T){var i=a[o];i&&c(i.prototype,e)&&delete i.prototype[e]}_[e]&&!n||d(_,e,n?t:S&&v[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var o,i;if(r){if(m){if(n)for(o in T)(i=a[o])&&c(i,e)&&delete i[e];if(y[e]&&!n)return;try{return d(y,e,n?t:S&&b[e]||t)}catch(l){}}for(o in T)!(i=a[o])||i[e]&&!n||d(i,e,t)}},isView:A,isTypedArray:P,TypedArray:y,TypedArrayPrototype:_}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var o=n(30),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},function(e,t,n){"use strict";var o=n(5),r=n(91),a=n(15),i=n(58),c=n(95),l=n(125),u=r("wks"),d=o.Symbol,s=l?d:i;e.exports=function(e){return a(u,e)||(c&&a(d,e)?u[e]=d[e]:u[e]=s("Symbol."+e)),u[e]}},function(e,t,n){"use strict";t.__esModule=!0,t.isFalsy=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;n_;_++)if((p||_ in N)&&(b=V(g=N[_],_,v),e))if(t)k[_]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return _;case 2:l.call(k,g)}else if(d)return!1;return s?-1:u||d?d:k}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},function(e,t,n){"use strict";t.__esModule=!0,t.toFixed=t.round=t.clamp=void 0;t.clamp=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),Math.max(t,Math.min(e,n))};t.round=function(e){return Math.round(e)};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(t)}},function(e,t,n){"use strict";t.__esModule=!0,t.Box=t.computeBoxProps=t.unit=void 0;var o=n(1),r=n(12),a=n(393),i=n(37);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){return"string"==typeof e?e:"number"==typeof e?6*e+"px":void 0};t.unit=l;var u=function(e){return"string"==typeof e&&i.CSS_COLORS.includes(e)},d=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=n)}},s=function(e){return function(t,n){(0,r.isFalsy)(n)||(t[e]=l(n))}},p=function(e,t){return function(n,o){(0,r.isFalsy)(o)||(n[e]=t)}},m=function(e,t){return function(n,o){if(!(0,r.isFalsy)(o))for(var a=0;a0&&(t.style=l),t};t.computeBoxProps=C;var g=function(e){var t=e.as,n=void 0===t?"div":t,i=e.className,l=e.content,d=e.children,s=c(e,["as","className","content","children"]),p=e.textColor||e.color,m=e.backgroundColor;if("function"==typeof d)return d(C(e));var f=C(s);return(0,o.createVNode)(a.VNodeFlags.HtmlElement,n,(0,r.classes)([i,u(p)&&"color-"+p,u(m)&&"color-bg-"+m]),l||d,a.ChildFlags.UnknownChildren,f)};t.Box=g,g.defaultHooks=r.pureComponentHooks;var b=function(e){var t=e.children,n=c(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,g,Object.assign({position:"relative"},n,{children:(0,o.createComponentVNode)(2,g,{fillPositionedParent:!0,children:t})})))};b.defaultHooks=r.pureComponentHooks,g.Forced=b},function(e,t,n){"use strict";var o=n(9),r=n(71),a=n(46),i=n(25),c=n(33),l=n(15),u=n(119),d=Object.getOwnPropertyDescriptor;t.f=o?d:function(e,t){if(e=i(e),t=c(t,!0),u)try{return d(e,t)}catch(n){}if(l(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var o=n(5),r=n(26),a=n(15),i=n(89),c=n(90),l=n(34),u=l.get,d=l.enforce,s=String(String).split("String");(e.exports=function(e,t,n,c){var l=!!c&&!!c.unsafe,u=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof t||a(n,"name")||r(n,"name",t),d(n).source=s.join("string"==typeof t?t:"")),e!==o?(l?!p&&e[t]&&(u=!0):delete e[t],u?e[t]=n:r(e,t,n)):u?e[t]=n:i(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},function(e,t,n){"use strict";t.__esModule=!0,t.buildQueryString=t.decodeHtmlEntities=t.toTitleCase=t.capitalize=t.testGlobPattern=t.multiline=void 0;t.multiline=function o(e){if(Array.isArray(e))return o(e.join(""));var t,n=e.split("\n"),r=n,a=Array.isArray(r),i=0;for(r=a?r:r[Symbol.iterator]();;){var c;if(a){if(i>=r.length)break;c=r[i++]}else{if((i=r.next()).done)break;c=i.value}for(var l=c,u=0;u",apos:"'"};return e.replace(/ /gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.reduce=t.sortBy=t.map=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var o in e)t.call(e,o)&&n.push(e[o]);return n}return[]};var o=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],o=0;oc)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n"+i+""+t+">"}},function(e,t,n){"use strict";var o=n(4);e.exports=function(e){return o((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";var o=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:o)(e)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){"use strict";var o={}.toString;e.exports=function(e){return o.call(e).slice(8,-1)}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var o,r,a,i=n(121),c=n(5),l=n(6),u=n(26),d=n(15),s=n(72),p=n(59),m=c.WeakMap;if(i){var f=new m,h=f.get,C=f.has,g=f.set;o=function(e,t){return g.call(f,e,t),t},r=function(e){return h.call(f,e)||{}},a=function(e){return C.call(f,e)}}else{var b=s("state");p[b]=!0,o=function(e,t){return u(e,b,t),t},r=function(e){return d(e,b)?e[b]:{}},a=function(e){return d(e,b)}}e.exports={set:o,get:r,has:a,enforce:function(e){return a(e)?r(e):o(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var o=n(123),r=n(5),a=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?a(o[e])||a(r[e]):o[e]&&o[e][t]||r[e]&&r[e][t]}},function(e,t,n){"use strict";var o=n(15),r=n(14),a=n(72),i=n(102),c=a("IE_PROTO"),l=Object.prototype;e.exports=i?Object.getPrototypeOf:function(e){return e=r(e),o(e,c)?e[c]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var o=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),r=o.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return r&&r.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=o.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var o=n(4);e.exports=function(e,t){var n=[][e];return!n||!o((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(9),i=n(113),c=n(7),l=n(77),u=n(55),d=n(46),s=n(26),p=n(10),m=n(137),f=n(151),h=n(33),C=n(15),g=n(74),b=n(6),v=n(42),N=n(53),V=n(47).f,y=n(152),_=n(17).forEach,x=n(54),k=n(13),L=n(20),w=n(34),B=n(79),S=w.get,I=w.set,T=k.f,A=L.f,P=Math.round,E=r.RangeError,M=l.ArrayBuffer,O=l.DataView,R=c.NATIVE_ARRAY_BUFFER_VIEWS,F=c.TYPED_ARRAY_TAG,D=c.TypedArray,j=c.TypedArrayPrototype,z=c.aTypedArrayConstructor,H=c.isTypedArray,G=function(e,t){for(var n=0,o=t.length,r=new(z(e))(o);o>n;)r[n]=t[n++];return r},U=function(e,t){T(e,t,{get:function(){return S(this)[t]}})},K=function(e){var t;return e instanceof M||"ArrayBuffer"==(t=g(e))||"SharedArrayBuffer"==t},Y=function(e,t){return H(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},q=function(e,t){return Y(e,t=h(t,!0))?d(2,e[t]):A(e,t)},W=function(e,t,n){return!(Y(e,t=h(t,!0))&&b(n)&&C(n,"value"))||C(n,"get")||C(n,"set")||n.configurable||C(n,"writable")&&!n.writable||C(n,"enumerable")&&!n.enumerable?T(e,t,n):(e[t]=n.value,e)};a?(R||(L.f=q,k.f=W,U(j,"buffer"),U(j,"byteOffset"),U(j,"byteLength"),U(j,"length")),o({target:"Object",stat:!0,forced:!R},{getOwnPropertyDescriptor:q,defineProperty:W}),e.exports=function(e,t,n){var a=e.match(/\d+$/)[0]/8,c=e+(n?"Clamped":"")+"Array",l="get"+e,d="set"+e,h=r[c],C=h,g=C&&C.prototype,k={},L=function(e,t){var n=S(e);return n.view[l](t*a+n.byteOffset,!0)},w=function(e,t,o){var r=S(e);n&&(o=(o=P(o))<0?0:o>255?255:255&o),r.view[d](t*a+r.byteOffset,o,!0)},A=function(e,t){T(e,t,{get:function(){return L(this,t)},set:function(e){return w(this,t,e)},enumerable:!0})};R?i&&(C=t((function(e,t,n,o){return u(e,C,c),B(b(t)?K(t)?o!==undefined?new h(t,f(n,a),o):n!==undefined?new h(t,f(n,a)):new h(t):H(t)?G(C,t):y.call(C,t):new h(m(t)),e,C)})),N&&N(C,D),_(V(h),(function(e){e in C||s(C,e,h[e])})),C.prototype=g):(C=t((function(e,t,n,o){u(e,C,c);var r,i,l,d=0,s=0;if(b(t)){if(!K(t))return H(t)?G(C,t):y.call(C,t);r=t,s=f(n,a);var h=t.byteLength;if(o===undefined){if(h%a)throw E("Wrong length");if((i=h-s)<0)throw E("Wrong length")}else if((i=p(o)*a)+s>h)throw E("Wrong length");l=i/a}else l=m(t),r=new M(i=l*a);for(I(e,{buffer:r,byteOffset:s,byteLength:i,length:l,view:new O(r)});ddocument.F=Object<\/script>"),e.close(),p=e.F;n--;)delete p[d][a[n]];return p()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[d]=o(e),n=new s,s[d]=null,n[u]=e):n=p(),t===undefined?n:r(n,t)},i[u]=!0},function(e,t,n){"use strict";var o=n(13).f,r=n(15),a=n(11)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,a)&&o(e,a,{configurable:!0,value:t})}},function(e,t,n){"use strict";var o=n(11),r=n(42),a=n(26),i=o("unscopables"),c=Array.prototype;c[i]==undefined&&a(c,i,r(null)),e.exports=function(e){c[i][e]=!0}},function(e,t,n){"use strict";var o=n(8),r=n(31),a=n(11)("species");e.exports=function(e,t){var n,i=o(e).constructor;return i===undefined||(n=o(i)[a])==undefined?t:r(n)}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var o=n(124),r=n(93).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(31);e.exports=function(e,t,n){if(o(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var o=n(33),r=n(13),a=n(46);e.exports=function(e,t,n){var i=o(t);i in e?r.f(e,i,a(0,n)):e[i]=n}},function(e,t,n){"use strict";var o=n(59),r=n(6),a=n(15),i=n(13).f,c=n(58),l=n(67),u=c("meta"),d=0,s=Object.isExtensible||function(){return!0},p=function(e){i(e,u,{value:{objectID:"O"+ ++d,weakData:{}}})},m=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,u)){if(!s(e))return"F";if(!t)return"E";p(e)}return e[u].objectID},getWeakData:function(e,t){if(!a(e,u)){if(!s(e))return!0;if(!t)return!1;p(e)}return e[u].weakData},onFreeze:function(e){return l&&m.REQUIRED&&s(e)&&!a(e,u)&&p(e),e}};o[u]=!0},function(e,t,n){"use strict";t.__esModule=!0,t.createLogger=void 0;n(154);var o=n(16),r=0,a=1,i=2,c=3,l=4,u=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a=i){var c=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;(0,o.act)(window.__ref__,"tgui:log",{log:c})}};t.createLogger=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;od;)if((c=l[d++])!=c)return!0}else for(;u>d;d++)if((e||d in l)&&l[d]===n)return e||d||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},function(e,t,n){"use strict";var o=n(4),r=/#|\.prototype\./,a=function(e,t){var n=c[i(e)];return n==u||n!=l&&("function"==typeof t?o(t):!!t)},i=a.normalize=function(e){return String(e).replace(r,".").toLowerCase()},c=a.data={},l=a.NATIVE="N",u=a.POLYFILL="P";e.exports=a},function(e,t,n){"use strict";var o=n(124),r=n(93);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t,n){"use strict";var o=n(6),r=n(52),a=n(11)("species");e.exports=function(e,t){var n;return r(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!r(n.prototype)?o(n)&&null===(n=n[a])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var o=n(4),r=n(11),a=n(96),i=r("species");e.exports=function(e){return a>=51||!o((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var o=n(22);e.exports=function(e,t,n){for(var r in t)o(e,r,t[r],n);return e}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var o=n(8),r=n(98),a=n(10),i=n(48),c=n(99),l=n(132),u=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,d,s){var p,m,f,h,C,g,b,v=i(t,n,d?2:1);if(s)p=e;else{if("function"!=typeof(m=c(e)))throw TypeError("Target is not iterable");if(r(m)){for(f=0,h=a(e.length);h>f;f++)if((C=d?v(o(b=e[f])[0],b[1]):v(e[f]))&&C instanceof u)return C;return new u(!1)}p=m.call(e)}for(g=p.next;!(b=g.call(p)).done;)if("object"==typeof(C=l(p,v,b.value,d))&&C&&C instanceof u)return C;return new u(!1)}).stop=function(e){return new u(!0,e)}},function(e,t,n){"use strict";t.__esModule=!0,t.InterfaceLockNoticeBox=void 0;var o=n(1),r=n(2);t.InterfaceLockNoticeBox=function(e){var t=e.siliconUser,n=e.locked,a=e.onLockStatusChange,i=e.accessText;return t?(0,o.createComponentVNode)(2,r.NoticeBox,{children:(0,o.createComponentVNode)(2,r.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:"Interface lock status:"}),(0,o.createComponentVNode)(2,r.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Button,{m:0,color:"gray",icon:n?"lock":"unlock",content:n?"Locked":"Unlocked",onClick:function(){a&&a(!n)}})})]})}):(0,o.createComponentVNode)(2,r.NoticeBox,{children:["Swipe ",i||"an ID card"," ","to ",n?"unlock":"lock"," this interface."]})}},function(e,t,n){"use strict";t.__esModule=!0,t.compose=t.flow=void 0;t.flow=function o(){for(var e=arguments.length,t=new Array(e),n=0;n1?r-1:0),i=1;i=c.length)break;d=c[u++]}else{if((u=c.next()).done)break;d=u.value}var s=d;Array.isArray(s)?n=o.apply(void 0,s).apply(void 0,[n].concat(a)):s&&(n=s.apply(void 0,[n].concat(a)))}return n}};t.compose=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),a=1;a=0:s>p;p+=m)p in d&&(l=n(l,d[p],p,u));return l}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var o=n(5),r=n(9),a=n(7).NATIVE_ARRAY_BUFFER,i=n(26),c=n(66),l=n(4),u=n(55),d=n(30),s=n(10),p=n(137),m=n(218),f=n(47).f,h=n(13).f,C=n(97),g=n(43),b=n(34),v=b.get,N=b.set,V="ArrayBuffer",y="DataView",_="Wrong length",x=o[V],k=x,L=o[y],w=o.RangeError,B=m.pack,S=m.unpack,I=function(e){return[255&e]},T=function(e){return[255&e,e>>8&255]},A=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},P=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},E=function(e){return B(e,23,4)},M=function(e){return B(e,52,8)},O=function(e,t){h(e.prototype,t,{get:function(){return v(this)[t]}})},R=function(e,t,n,o){var r=p(n),a=v(e);if(r+t>a.byteLength)throw w("Wrong index");var i=v(a.buffer).bytes,c=r+a.byteOffset,l=i.slice(c,c+t);return o?l:l.reverse()},F=function(e,t,n,o,r,a){var i=p(n),c=v(e);if(i+t>c.byteLength)throw w("Wrong index");for(var l=v(c.buffer).bytes,u=i+c.byteOffset,d=o(+r),s=0;sH;)(D=z[H++])in k||i(k,D,x[D]);j.constructor=k}var G=new L(new k(2)),U=L.prototype.setInt8;G.setInt8(0,2147483648),G.setInt8(1,2147483649),!G.getInt8(0)&&G.getInt8(1)||c(L.prototype,{setInt8:function(e,t){U.call(this,e,t<<24>>24)},setUint8:function(e,t){U.call(this,e,t<<24>>24)}},{unsafe:!0})}else k=function(e){u(this,k,V);var t=p(e);N(this,{bytes:C.call(new Array(t),0),byteLength:t}),r||(this.byteLength=t)},L=function(e,t,n){u(this,L,y),u(e,k,y);var o=v(e).byteLength,a=d(t);if(a<0||a>o)throw w("Wrong offset");if(a+(n=n===undefined?o-a:s(n))>o)throw w(_);N(this,{buffer:e,byteLength:n,byteOffset:a}),r||(this.buffer=e,this.byteLength=n,this.byteOffset=a)},r&&(O(k,"byteLength"),O(L,"buffer"),O(L,"byteLength"),O(L,"byteOffset")),c(L.prototype,{getInt8:function(e){return R(this,1,e)[0]<<24>>24},getUint8:function(e){return R(this,1,e)[0]},getInt16:function(e){var t=R(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=R(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return P(R(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return P(R(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return S(R(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return S(R(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){F(this,1,e,I,t)},setUint8:function(e,t){F(this,1,e,I,t)},setInt16:function(e,t){F(this,2,e,T,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){F(this,2,e,T,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){F(this,4,e,A,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){F(this,4,e,A,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){F(this,4,e,E,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){F(this,8,e,M,t,arguments.length>2?arguments[2]:undefined)}});g(k,V),g(L,y),e.exports={ArrayBuffer:k,DataView:L}},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(61),i=n(22),c=n(50),l=n(68),u=n(55),d=n(6),s=n(4),p=n(75),m=n(43),f=n(79);e.exports=function(e,t,n){var h=-1!==e.indexOf("Map"),C=-1!==e.indexOf("Weak"),g=h?"set":"add",b=r[e],v=b&&b.prototype,N=b,V={},y=function(e){var t=v[e];i(v,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return C&&!d(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(a(e,"function"!=typeof b||!(C||v.forEach&&!s((function(){(new b).entries().next()})))))N=n.getConstructor(t,e,h,g),c.REQUIRED=!0;else if(a(e,!0)){var _=new N,x=_[g](C?{}:-0,1)!=_,k=s((function(){_.has(1)})),L=p((function(e){new b(e)})),w=!C&&s((function(){for(var e=new b,t=5;t--;)e[g](t,t);return!e.has(-0)}));L||((N=t((function(t,n){u(t,N,e);var o=f(new b,t,N);return n!=undefined&&l(n,o[g],o,h),o}))).prototype=v,v.constructor=N),(k||w)&&(y("delete"),y("has"),h&&y("get")),(w||x)&&y(g),C&&v.clear&&delete v.clear}return V[e]=N,o({global:!0,forced:N!=b},V),m(N,e),C||n.setStrong(N,e,h),N}},function(e,t,n){"use strict";var o=n(6),r=n(53);e.exports=function(e,t,n){var a,i;return r&&"function"==typeof(a=t.constructor)&&a!==n&&o(i=a.prototype)&&i!==n.prototype&&r(e,i),e}},function(e,t,n){"use strict";var o=Math.expm1,r=Math.exp;e.exports=!o||o(10)>22025.465794806718||o(10)<22025.465794806718||-2e-17!=o(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:r(e)-1}:o},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var o=n(38),r=n(5),a=n(4);e.exports=o||!a((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete r[e]}))},function(e,t,n){"use strict";var o=n(8);e.exports=function(){var e=o(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";var o,r,a=n(83),i=RegExp.prototype.exec,c=String.prototype.replace,l=i,u=(o=/a/,r=/b*/g,i.call(o,"a"),i.call(r,"a"),0!==o.lastIndex||0!==r.lastIndex),d=/()??/.exec("")[1]!==undefined;(u||d)&&(l=function(e){var t,n,o,r,l=this;return d&&(n=new RegExp("^"+l.source+"$(?!\\s)",a.call(l))),u&&(t=l.lastIndex),o=i.call(l,e),u&&o&&(l.lastIndex=l.global?o.index+o[0].length:t),d&&o&&o.length>1&&c.call(o[0],n,(function(){for(r=1;r")})),d=!a((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,s){var p=i(e),m=!a((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),f=m&&!a((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return t=!0,null},n[p](""),!t}));if(!m||!f||"replace"===e&&!u||"split"===e&&!d){var h=/./[p],C=n(p,""[e],(function(e,t,n,o,r){return t.exec===c?m&&!r?{done:!0,value:h.call(t,n,o)}:{done:!0,value:e.call(n,t,o)}:{done:!1}})),g=C[0],b=C[1];r(String.prototype,e,g),r(RegExp.prototype,p,2==t?function(e,t){return b.call(e,this,t)}:function(e){return b.call(e,this)}),s&&o(RegExp.prototype[p],"sham",!0)}}},function(e,t,n){"use strict";var o=n(32),r=n(84);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var a=n.call(e,t);if("object"!=typeof a)throw TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==o(e))throw TypeError("RegExp#exec called on incompatible receiver");return r.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0,t.Icon=void 0;var o=n(1),r=n(12),a=n(19);var i=/-o$/,c=function(e){var t=e.name,n=e.size,c=e.spin,l=e.className,u=e.style,d=void 0===u?{}:u,s=e.rotation,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["name","size","spin","className","style","rotation"]);n&&(d["font-size"]=100*n+"%"),"number"==typeof s&&(d.transform="rotate("+s+"deg)");var m=i.test(t),f=t.replace(i,"");return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"i",className:(0,r.classes)([l,m?"far":"fas","fa-"+f,c&&"fa-spin"]),style:d},p)))};t.Icon=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var o=n(5),r=n(6),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},function(e,t,n){"use strict";var o=n(5),r=n(26);e.exports=function(e,t){try{r(o,e,t)}catch(n){o[e]=t}return t}},function(e,t,n){"use strict";var o=n(120),r=Function.toString;"function"!=typeof o.inspectSource&&(o.inspectSource=function(e){return r.call(e)}),e.exports=o.inspectSource},function(e,t,n){"use strict";var o=n(38),r=n(120);(e.exports=function(e,t){return r[e]||(r[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.4.8",mode:o?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var o=n(35),r=n(47),a=n(94),i=n(8);e.exports=o("Reflect","ownKeys")||function(e){var t=r.f(i(e)),n=a.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var o=n(4);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var o,r,a=n(5),i=n(73),c=a.process,l=c&&c.versions,u=l&&l.v8;u?r=(o=u.split("."))[0]+o[1]:i&&(!(o=i.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/))&&(r=o[1]),e.exports=r&&+r},function(e,t,n){"use strict";var o=n(14),r=n(41),a=n(10);e.exports=function(e){for(var t=o(this),n=a(t.length),i=arguments.length,c=r(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,u=l===undefined?n:r(l,n);u>c;)t[c++]=e;return t}},function(e,t,n){"use strict";var o=n(11),r=n(65),a=o("iterator"),i=Array.prototype;e.exports=function(e){return e!==undefined&&(r.Array===e||i[a]===e)}},function(e,t,n){"use strict";var o=n(74),r=n(65),a=n(11)("iterator");e.exports=function(e){if(e!=undefined)return e[a]||e["@@iterator"]||r[o(e)]}},function(e,t,n){"use strict";var o={};o[n(11)("toStringTag")]="z",e.exports="[object z]"===String(o)},function(e,t,n){"use strict";var o=n(0),r=n(203),a=n(36),i=n(53),c=n(43),l=n(26),u=n(22),d=n(11),s=n(38),p=n(65),m=n(134),f=m.IteratorPrototype,h=m.BUGGY_SAFARI_ITERATORS,C=d("iterator"),g=function(){return this};e.exports=function(e,t,n,d,m,b,v){r(n,t,d);var N,V,y,_=function(e){if(e===m&&B)return B;if(!h&&e in L)return L[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},x=t+" Iterator",k=!1,L=e.prototype,w=L[C]||L["@@iterator"]||m&&L[m],B=!h&&w||_(m),S="Array"==t&&L.entries||w;if(S&&(N=a(S.call(new e)),f!==Object.prototype&&N.next&&(s||a(N)===f||(i?i(N,f):"function"!=typeof N[C]&&l(N,C,g)),c(N,x,!0,!0),s&&(p[x]=g))),"values"==m&&w&&"values"!==w.name&&(k=!0,B=function(){return w.call(this)}),s&&!v||L[C]===B||l(L,C,B),p[t]=B,m)if(V={values:_("values"),keys:b?B:_("keys"),entries:_("entries")},v)for(y in V)!h&&!k&&y in L||u(L,y,V[y]);else o({target:t,proto:!0,forced:h||k},V);return V}},function(e,t,n){"use strict";var o=n(4);e.exports=!o((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";var o=n(10),r=n(104),a=n(21),i=Math.ceil,c=function(e){return function(t,n,c){var l,u,d=String(a(t)),s=d.length,p=c===undefined?" ":String(c),m=o(n);return m<=s||""==p?d:(l=m-s,(u=r.call(p,i(l/p.length))).length>l&&(u=u.slice(0,l)),e?d+u:u+d)}};e.exports={start:c(!1),end:c(!0)}},function(e,t,n){"use strict";var o=n(30),r=n(21);e.exports="".repeat||function(e){var t=String(r(this)),n="",a=o(e);if(a<0||a==Infinity)throw RangeError("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))1&a&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var o,r,a,i=n(5),c=n(4),l=n(32),u=n(48),d=n(127),s=n(88),p=n(146),m=i.location,f=i.setImmediate,h=i.clearImmediate,C=i.process,g=i.MessageChannel,b=i.Dispatch,v=0,N={},V=function(e){if(N.hasOwnProperty(e)){var t=N[e];delete N[e],t()}},y=function(e){return function(){V(e)}},_=function(e){V(e.data)},x=function(e){i.postMessage(e+"",m.protocol+"//"+m.host)};f&&h||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return N[++v]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},o(v),v},h=function(e){delete N[e]},"process"==l(C)?o=function(e){C.nextTick(y(e))}:b&&b.now?o=function(e){b.now(y(e))}:g&&!p?(a=(r=new g).port2,r.port1.onmessage=_,o=u(a.postMessage,a,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||c(x)?o="onreadystatechange"in s("script")?function(e){d.appendChild(s("script")).onreadystatechange=function(){d.removeChild(this),V(e)}}:function(e){setTimeout(y(e),0)}:(o=x,i.addEventListener("message",_,!1))),e.exports={set:f,clear:h}},function(e,t,n){"use strict";var o=n(6),r=n(32),a=n(11)("match");e.exports=function(e){var t;return o(e)&&((t=e[a])!==undefined?!!t:"RegExp"==r(e))}},function(e,t,n){"use strict";var o=n(30),r=n(21),a=function(e){return function(t,n){var a,i,c=String(r(t)),l=o(n),u=c.length;return l<0||l>=u?e?"":undefined:(a=c.charCodeAt(l))<55296||a>56319||l+1===u||(i=c.charCodeAt(l+1))<56320||i>57343?e?c.charAt(l):a:e?c.slice(l,l+2):i-56320+(a-55296<<10)+65536}};e.exports={codeAt:a(!1),charAt:a(!0)}},function(e,t,n){"use strict";var o=n(107);e.exports=function(e){if(o(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var o=n(11)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[o]=!1,"/./"[e](t)}catch(r){}}return!1}},function(e,t,n){"use strict";var o=n(108).charAt;e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},function(e,t,n){"use strict";var o=n(4),r=n(81);e.exports=function(e){return o((function(){return!!r[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||r[e].name!==e}))}},function(e,t,n){"use strict";var o=n(5),r=n(4),a=n(75),i=n(7).NATIVE_ARRAY_BUFFER_VIEWS,c=o.ArrayBuffer,l=o.Int8Array;e.exports=!i||!r((function(){l(1)}))||!r((function(){new l(-1)}))||!a((function(e){new l,new l(null),new l(1.5),new l(e)}),!0)||r((function(){return 1!==new l(new c(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var o=n(1),r=n(12),a=n(16),i=n(115),c=n(51),l=n(116),u=n(19),d=n(87),s=n(159);n(160),n(161);function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function m(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var f=(0,c.createLogger)("Button"),h=function(e){var t=e.className,n=e.fluid,c=e.icon,p=e.color,h=e.disabled,C=e.selected,g=e.tooltip,b=e.tooltipPosition,v=e.ellipsis,N=e.content,V=e.iconRotation,y=e.iconSpin,_=e.children,x=e.onclick,k=e.onClick,L=m(e,["className","fluid","icon","color","disabled","selected","tooltip","tooltipPosition","ellipsis","content","iconRotation","iconSpin","children","onclick","onClick"]),w=!(!N&&!_);return x&&f.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Box,Object.assign({as:"span",className:(0,r.classes)(["Button",n&&"Button--fluid",h&&"Button--disabled",C&&"Button--selected",w&&"Button--hasContent",v&&"Button--ellipsis",p&&"string"==typeof p?"Button--color--"+p:"Button--color--default",t]),tabIndex:!h&&"0",unselectable:a.tridentVersion<=4,onclick:function(e){(0,l.refocusLayout)(),!h&&k&&k(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;return t===i.KEY_SPACE||t===i.KEY_ENTER?(e.preventDefault(),void(!h&&k&&k(e))):t===i.KEY_ESCAPE?(e.preventDefault(),void(0,l.refocusLayout)()):void 0}},L,{children:[c&&(0,o.createComponentVNode)(2,d.Icon,{name:c,rotation:V,spin:y}),N,_,g&&(0,o.createComponentVNode)(2,s.Tooltip,{content:g,position:b})]})))};t.Button=h,h.defaultHooks=r.pureComponentHooks;var C=function(e){var t=e.checked,n=m(e,["checked"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=C,h.Checkbox=C;var g=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}p(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmMessage,r=void 0===n?"Confirm?":n,a=t.confirmColor,i=void 0===a?"bad":a,c=t.color,l=t.content,u=t.onClick,d=m(t,["confirmMessage","confirmColor","color","content","onClick"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({content:this.state.clickedOnce?r:l,color:this.state.clickedOnce?i:c,onClick:function(){return e.state.clickedOnce?u():e.setClickedOnce(!0)}},d)))},t}(o.Component);t.ButtonConfirm=g,h.Confirm=g;var b=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={inInput:!1},t}p(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,c=t.color,l=void 0===c?"default":c,d=(t.placeholder,t.maxLength,m(t,["fluid","content","color","placeholder","maxLength"]));return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Box,Object.assign({className:(0,r.classes)(["Button",n&&"Button--fluid","Button--color--"+l])},d,{onClick:function(){return e.setInInput(!0)},children:[(0,o.createVNode)(1,"div",null,a,0),(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===i.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===i.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef)]})))},t}(o.Component);t.ButtonInput=b,h.Input=b},function(e,t,n){"use strict";t.__esModule=!0,t.hotKeyReducer=t.hotKeyMiddleware=t.releaseHeldKeys=t.KEY_MINUS=t.KEY_EQUAL=t.KEY_Z=t.KEY_Y=t.KEY_X=t.KEY_W=t.KEY_V=t.KEY_U=t.KEY_T=t.KEY_S=t.KEY_R=t.KEY_Q=t.KEY_P=t.KEY_O=t.KEY_N=t.KEY_M=t.KEY_L=t.KEY_K=t.KEY_J=t.KEY_I=t.KEY_H=t.KEY_G=t.KEY_F=t.KEY_E=t.KEY_D=t.KEY_C=t.KEY_B=t.KEY_A=t.KEY_9=t.KEY_8=t.KEY_7=t.KEY_6=t.KEY_5=t.KEY_4=t.KEY_3=t.KEY_2=t.KEY_1=t.KEY_0=t.KEY_SPACE=t.KEY_ESCAPE=t.KEY_ALT=t.KEY_CTRL=t.KEY_SHIFT=t.KEY_ENTER=t.KEY_TAB=t.KEY_BACKSPACE=void 0;var o=n(51),r=n(16),a=(0,o.createLogger)("hotkeys");t.KEY_BACKSPACE=8;t.KEY_TAB=9;t.KEY_ENTER=13;t.KEY_SHIFT=16;t.KEY_CTRL=17;t.KEY_ALT=18;t.KEY_ESCAPE=27;t.KEY_SPACE=32;t.KEY_0=48;t.KEY_1=49;t.KEY_2=50;t.KEY_3=51;t.KEY_4=52;t.KEY_5=53;t.KEY_6=54;t.KEY_7=55;t.KEY_8=56;t.KEY_9=57;t.KEY_A=65;t.KEY_B=66;t.KEY_C=67;t.KEY_D=68;t.KEY_E=69;t.KEY_F=70;t.KEY_G=71;t.KEY_H=72;t.KEY_I=73;t.KEY_J=74;t.KEY_K=75;t.KEY_L=76;t.KEY_M=77;t.KEY_N=78;t.KEY_O=79;t.KEY_P=80;t.KEY_Q=81;t.KEY_R=82;t.KEY_S=83;t.KEY_T=84;t.KEY_U=85;t.KEY_V=86;t.KEY_W=87;t.KEY_X=88;t.KEY_Y=89;t.KEY_Z=90;t.KEY_EQUAL=187;t.KEY_MINUS=189;var i=[17,18,16],c=[27,13,32,9,17,16],l={},u=function(e,t,n,o){var r="";return e&&(r+="Ctrl+"),t&&(r+="Alt+"),n&&(r+="Shift+"),r+=o>=48&&o<=90?String.fromCharCode(o):"["+o+"]"},d=function(e){var t=window.event?e.which:e.keyCode,n=e.ctrlKey,o=e.altKey,r=e.shiftKey;return{keyCode:t,ctrlKey:n,altKey:o,shiftKey:r,hasModifierKeys:n||o||r,keyString:u(n,o,r,t)}},s=function(){for(var e=0,t=Object.keys(l);e4&&function(e,t){if(!e.defaultPrevented){var n=e.target&&e.target.localName;if("input"!==n&&"textarea"!==n){var o=d(e),i=o.keyCode,u=o.ctrlKey,s=o.shiftKey;u||s||c.includes(i)||("keydown"!==t||l[i]?"keyup"===t&&l[i]&&(a.debug("passthrough",t,o),(0,r.callByond)("",{__keyup:i})):(a.debug("passthrough",t,o),(0,r.callByond)("",{__keydown:i})))}}}(e,t),function(e,t,n){if("keyup"===t){var o=d(e),r=o.ctrlKey,c=o.altKey,l=o.keyCode,u=o.hasModifierKeys,s=o.keyString;u&&!i.includes(l)&&(a.log(s),r&&c&&8===l&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")})),n({type:"hotKey",payload:o}))}}(e,t,n)},document.addEventListener("keydown",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keydown"),l[n]=!0})),document.addEventListener("keyup",(function(e){var n=window.event?e.which:e.keyCode;t(e,"keyup"),l[n]=!1})),r.tridentVersion>4&&function(e){var t;document.addEventListener("focusout",(function(){t=setTimeout(e)})),document.addEventListener("focusin",(function(){clearTimeout(t)})),window.addEventListener("beforeunload",e)}((function(){s()})),function(e){return function(t){return e(t)}}};t.hotKeyReducer=function(e,t){var n=t.type,o=t.payload;if("hotKey"===n){var r=o.ctrlKey,a=o.altKey,i=o.keyCode;return r&&a&&187===i?Object.assign({},e,{showKitchenSink:!e.showKitchenSink}):e}return e}},function(e,t,n){"use strict";t.__esModule=!0,t.refocusLayout=void 0;var o=n(16);t.refocusLayout=function(){if(!(o.tridentVersion<=4)){var e=document.getElementById("Layout__content");e&&e.focus()}}},function(e,t,n){"use strict";t.__esModule=!0,t.toastReducer=t.showToast=t.Toast=void 0;var o,r=n(1),a=n(12),i=function(e){var t=e.content,n=e.children;return(0,r.createVNode)(1,"div","Layout__toast",[t,n],0)};t.Toast=i,i.defaultHooks=a.pureComponentHooks;t.showToast=function(e,t){o&&clearTimeout(o),o=setTimeout((function(){o=undefined,e({type:"hideToast"})}),5e3),e({type:"showToast",payload:{text:t}})};t.toastReducer=function(e,t){var n=t.type,o=t.payload;if("showToast"===n){var r=o.text;return Object.assign({},e,{toastText:r})}return"hideToast"===n?Object.assign({},e,{toastText:null}):e}},function(e,t,n){"use strict";var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(r){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,n){"use strict";var o=n(9),r=n(4),a=n(88);e.exports=!o&&!r((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var o=n(5),r=n(89),a=o["__core-js_shared__"]||r("__core-js_shared__",{});e.exports=a},function(e,t,n){"use strict";var o=n(5),r=n(90),a=o.WeakMap;e.exports="function"==typeof a&&/native code/.test(r(a))},function(e,t,n){"use strict";var o=n(15),r=n(92),a=n(20),i=n(13);e.exports=function(e,t){for(var n=r(t),c=i.f,l=a.f,u=0;ul;)o(c,n=t[l++])&&(~a(u,n)||u.push(n));return u}},function(e,t,n){"use strict";var o=n(95);e.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol()},function(e,t,n){"use strict";var o=n(9),r=n(13),a=n(8),i=n(62);e.exports=o?Object.defineProperties:function(e,t){a(e);for(var n,o=i(t),c=o.length,l=0;c>l;)r.f(e,n=o[l++],t[n]);return e}},function(e,t,n){"use strict";var o=n(35);e.exports=o("document","documentElement")},function(e,t,n){"use strict";var o=n(25),r=n(47).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(e){try{return r(e)}catch(t){return i.slice()}};e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?c(e):r(o(e))}},function(e,t,n){"use strict";var o=n(11);t.f=o},function(e,t,n){"use strict";var o=n(14),r=n(41),a=n(10),i=Math.min;e.exports=[].copyWithin||function(e,t){var n=o(this),c=a(n.length),l=r(e,c),u=r(t,c),d=arguments.length>2?arguments[2]:undefined,s=i((d===undefined?c:r(d,c))-u,c-l),p=1;for(u0;)u in n?n[l]=n[u]:delete n[l],l+=p,u+=p;return n}},function(e,t,n){"use strict";var o=n(52),r=n(10),a=n(48);e.exports=function i(e,t,n,c,l,u,d,s){for(var p,m=l,f=0,h=!!d&&a(d,s,3);f0&&o(p))m=i(e,t,p,r(p.length),m,u-1)-1;else{if(m>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[m]=p}m++}f++}return m}},function(e,t,n){"use strict";var o=n(8);e.exports=function(e,t,n,r){try{return r?t(o(n)[0],n[1]):t(n)}catch(i){var a=e["return"];throw a!==undefined&&o(a.call(e)),i}}},function(e,t,n){"use strict";var o=n(25),r=n(44),a=n(65),i=n(34),c=n(101),l=i.set,u=i.getterFor("Array Iterator");e.exports=c(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:o(e),index:0,kind:t})}),(function(){var e=u(this),t=e.target,n=e.kind,o=e.index++;return!t||o>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:o,done:!1}:"values"==n?{value:t[o],done:!1}:{value:[o,t[o]],done:!1}}),"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t,n){"use strict";var o,r,a,i=n(36),c=n(26),l=n(15),u=n(11),d=n(38),s=u("iterator"),p=!1;[].keys&&("next"in(a=[].keys())?(r=i(i(a)))!==Object.prototype&&(o=r):p=!0),o==undefined&&(o={}),d||l(o,s)||c(o,s,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:p}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){if(!o(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var o=n(25),r=n(30),a=n(10),i=n(39),c=Math.min,l=[].lastIndexOf,u=!!l&&1/[1].lastIndexOf(1,-0)<0,d=i("lastIndexOf");e.exports=u||d?function(e){if(u)return l.apply(this,arguments)||0;var t=o(this),n=a(t.length),i=n-1;for(arguments.length>1&&(i=c(i,r(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:l},function(e,t,n){"use strict";var o=n(30),r=n(10);e.exports=function(e){if(e===undefined)return 0;var t=o(e),n=r(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var o=n(31),r=n(6),a=[].slice,i={},c=function(e,t,n){if(!(t in i)){for(var o=[],r=0;r1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(o(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!g(this,e)}}),a(d.prototype,n?{get:function(e){var t=g(this,e);return t&&t.value},set:function(e,t){return C(this,0===e?0:e,t)}}:{add:function(e){return C(this,e=0===e?0:e,e)}}),s&&o(d.prototype,"size",{get:function(){return m(this).size}}),d},setStrong:function(e,t,n){var o=t+" Iterator",r=h(t),a=h(o);u(e,t,(function(e,t){f(this,{type:o,target:e,state:r(e),kind:t,last:undefined})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),d(t)}}},function(e,t,n){"use strict";var o=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:o(1+e)}},function(e,t,n){"use strict";var o=n(6),r=Math.floor;e.exports=function(e){return!o(e)&&isFinite(e)&&r(e)===e}},function(e,t,n){"use strict";var o=n(5),r=n(56).trim,a=n(81),i=o.parseInt,c=/^[+-]?0[Xx]/,l=8!==i(a+"08")||22!==i(a+"0x16");e.exports=l?function(e,t){var n=r(String(e));return i(n,t>>>0||(c.test(n)?16:10))}:i},function(e,t,n){"use strict";var o=n(9),r=n(62),a=n(25),i=n(71).f,c=function(e){return function(t){for(var n,c=a(t),l=r(c),u=l.length,d=0,s=[];u>d;)n=l[d++],o&&!i.call(c,n)||s.push(e?[n,c[n]]:c[n]);return s}};e.exports={entries:c(!0),values:c(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var o=n(5);e.exports=o.Promise},function(e,t,n){"use strict";var o=n(73);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(o)},function(e,t,n){"use strict";var o,r,a,i,c,l,u,d,s=n(5),p=n(20).f,m=n(32),f=n(106).set,h=n(146),C=s.MutationObserver||s.WebKitMutationObserver,g=s.process,b=s.Promise,v="process"==m(g),N=p(s,"queueMicrotask"),V=N&&N.value;V||(o=function(){var e,t;for(v&&(e=g.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(n){throw r?i():a=undefined,n}}a=undefined,e&&e.enter()},v?i=function(){g.nextTick(o)}:C&&!h?(c=!0,l=document.createTextNode(""),new C(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c}):b&&b.resolve?(u=b.resolve(undefined),d=u.then,i=function(){d.call(u,o)}):i=function(){f.call(s,o)}),e.exports=V||function(e){var t={fn:e,next:undefined};a&&(a.next=t),r||(r=t,i()),a=t}},function(e,t,n){"use strict";var o=n(8),r=n(6),a=n(149);e.exports=function(e,t){if(o(e),r(t)&&t.constructor===e)return t;var n=a.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var o=n(31),r=function(e){var t,n;this.promise=new e((function(e,o){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)};e.exports.f=function(e){return new r(e)}},function(e,t,n){"use strict";var o=n(73);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o)},function(e,t,n){"use strict";var o=n(348);e.exports=function(e,t){var n=o(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var o=n(14),r=n(10),a=n(99),i=n(98),c=n(48),l=n(7).aTypedArrayConstructor;e.exports=function(e){var t,n,u,d,s,p,m=o(e),f=arguments.length,h=f>1?arguments[1]:undefined,C=h!==undefined,g=a(m);if(g!=undefined&&!i(g))for(p=(s=g.call(m)).next,m=[];!(d=p.call(s)).done;)m.push(d.value);for(C&&f>2&&(h=c(h,arguments[2],2)),n=r(m.length),u=new(l(this))(n),t=0;n>t;t++)u[t]=C?h(m[t],t):m[t];return u}},function(e,t,n){"use strict";var o=n(66),r=n(50).getWeakData,a=n(8),i=n(6),c=n(55),l=n(68),u=n(17),d=n(15),s=n(34),p=s.set,m=s.getterFor,f=u.find,h=u.findIndex,C=0,g=function(e){return e.frozen||(e.frozen=new b)},b=function(){this.entries=[]},v=function(e,t){return f(e.entries,(function(e){return e[0]===t}))};b.prototype={get:function(e){var t=v(this,e);if(t)return t[1]},has:function(e){return!!v(this,e)},set:function(e,t){var n=v(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=h(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,u){var s=e((function(e,o){c(e,s,t),p(e,{type:t,id:C++,frozen:undefined}),o!=undefined&&l(o,e[u],e,n)})),f=m(t),h=function(e,t,n){var o=f(e),i=r(a(t),!0);return!0===i?g(o).set(t,n):i[o.id]=n,e};return o(s.prototype,{"delete":function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?g(t)["delete"](e):n&&d(n,t.id)&&delete n[t.id]},has:function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?g(t).has(e):n&&d(n,t.id)}}),o(s.prototype,n?{get:function(e){var t=f(this);if(i(e)){var n=r(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return h(this,e,t)}}:{add:function(e){return h(this,e,!0)}}),s}}},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=void 0;t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";t.__esModule=!0,t.resizeStartHandler=t.dragStartHandler=t.setupDrag=void 0;var o,r,a,i,c,l=n(156),u=n(16),d=(0,n(51).createLogger)("drag"),s=!1,p=!1,m=[0,0],f=function(e){return(0,u.winget)(e,"pos").then((function(e){return[e.x,e.y]}))},h=function(e,t){return(0,u.winset)(e,"pos",t[0]+","+t[1])},C=function(e){var t,n,r,a;return regeneratorRuntime.async((function(i){for(;;)switch(i.prev=i.next){case 0:return d.log("setting up"),o=e.config.window,i.next=4,regeneratorRuntime.awrap(f(o));case 4:t=i.sent,m=[t[0]-window.screenLeft,t[1]-window.screenTop],n=g(t),r=n[0],a=n[1],r&&h(o,a),d.debug("current state",{ref:o,screenOffset:m});case 9:case"end":return i.stop()}}))};t.setupDrag=C;var g=function(e){var t=e[0],n=e[1],o=!1;return t<0?(t=0,o=!0):t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth,o=!0),n<0?(n=0,o=!0):n+window.innerHeight>window.screen.availHeight&&(n=window.screen.availHeight-window.innerHeight,o=!0),[o,[t,n]]};t.dragStartHandler=function(e){d.log("drag start"),s=!0,r=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",v),document.addEventListener("mouseup",b),v(e)};var b=function y(e){d.log("drag end"),v(e),document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",y),s=!1},v=function(e){s&&(e.preventDefault(),h(o,(0,l.vecAdd)([e.screenX,e.screenY],m,r)))};t.resizeStartHandler=function(e,t){return function(n){a=[e,t],d.log("resize start",a),p=!0,r=[window.screenLeft-n.screenX,window.screenTop-n.screenY],i=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",V),document.addEventListener("mouseup",N),V(n)}};var N=function _(e){d.log("resize end",c),V(e),document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",_),p=!1},V=function(e){p&&(e.preventDefault(),(c=(0,l.vecAdd)(i,(0,l.vecMultiply)(a,(0,l.vecAdd)([e.screenX,e.screenY],(0,l.vecInverse)([window.screenLeft,window.screenTop]),r,[1,1]))))[0]=Math.max(c[0],250),c[1]=Math.max(c[1],120),function(e,t){(0,u.winset)(e,"size",t[0]+","+t[1])}(o,c))}},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=t.vecCreate=void 0;var o=n(24);t.vecCreate=function(){for(var e=arguments.length,t=new Array(e),n=0;n35;return(0,o.createVNode)(1,"div",(0,r.classes)(["Tooltip",i&&"Tooltip--long",a&&"Tooltip--"+a]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(1),r=n(12),a=n(19);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){return(0,r.isFalsy)(e)?"":e},l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,o=t.props.onInput;n||t.setEditing(!0),o&&o(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,o=t.props.onChange;n&&(t.setEditing(!1),o&&o(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,o=n.onInput,r=n.onChange,a=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),a&&a(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=c(t.props.value),void e.target.blur()):void 0},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=c(e))},u.componentDidUpdate=function(e,t){var n=this.state.editing,o=e.value,r=this.props.value,a=this.inputRef.current;a&&!n&&o!==r&&(a.value=c(r))},u.setEditing=function(e){this.setState({editing:e})},u.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,c=i(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),l=c.className,u=c.fluid,d=i(c,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Input",u&&"Input--fluid",l])},d,{children:[(0,o.createVNode)(1,"div","Input__baseline",".",16),(0,o.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},l}(o.Component);t.Input=l},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var o=n(1),r=n(162),a=n(12);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=i(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table,Object.assign({},n,{children:(0,o.createComponentVNode)(2,r.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=a.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t,a=e.style,c=i(e,["size","style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},a)},c)))};t.GridColumn=l,c.defaultHooks=a.pureComponentHooks,c.Column=l},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var o=n(1),r=n(12),a=n(19);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.collapsing,n=e.className,c=e.content,l=e.children,u=i(e,["collapsing","className","content","children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"table",className:(0,r.classes)(["Table",t&&"Table--collapsing",n])},u,{children:(0,o.createVNode)(1,"tbody",null,[c,l],0)})))};t.Table=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.className,n=e.header,c=i(e,["className","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"tr",className:(0,r.classes)(["Table__row",n&&"Table__row--header",t])},c)))};t.TableRow=l,l.defaultHooks=r.pureComponentHooks;var u=function(e){var t=e.className,n=e.collapsing,c=e.header,l=i(e,["className","collapsing","header"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"td",className:(0,r.classes)(["Table__cell",n&&"Table__cell--collapsing",c&&"Table__cell--header",t])},l)))};t.TableCell=u,u.defaultHooks=r.pureComponentHooks,c.Row=l,c.Cell=u},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var o=n(1),r=n(12),a=n(19),i=function(e){var t=e.children;return(0,o.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=i,i.defaultHooks=r.pureComponentHooks;var c=function(e){var t=e.className,n=e.label,i=e.labelColor,c=void 0===i?"label":i,l=e.color,u=e.buttons,d=e.content,s=e.children;return(0,o.createVNode)(1,"tr",(0,r.classes)(["LabeledList__row",t]),[(0,o.createComponentVNode)(2,a.Box,{as:"td",color:c,className:(0,r.classes)(["LabeledList__cell","LabeledList__label"]),content:n+":"}),(0,o.createComponentVNode)(2,a.Box,{as:"td",color:l,className:(0,r.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:u?undefined:2,children:[d,s]}),u&&(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",u,0)],0)};t.LabeledListItem=c,c.defaultHooks=r.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t;return(0,o.createVNode)(1,"tr","LabeledList__row",(0,o.createVNode)(1,"td",null,null,1,{style:{"padding-bottom":(0,a.unit)(n)}}),2)};t.LabeledListDivider=l,l.defaultHooks=r.pureComponentHooks,i.Item=c,i.Divider=l},function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(1),r=n(2);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[e.volume," units of ",e.name,", Purity: ",e.purity]},e.name)}))]})}},function(e,t,n){n(166),n(167),n(168),n(169),n(170),n(171),e.exports=n(172)},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n(173),n(174),n(175),n(176),n(177),n(178),n(179),n(180),n(181),n(182),n(183),n(184),n(185),n(186),n(187),n(188),n(189),n(190),n(191),n(192),n(193),n(194),n(195),n(196),n(198),n(200),n(201),n(202),n(133),n(204),n(205),n(206),n(207),n(208),n(209),n(210),n(211),n(212),n(213),n(214),n(215),n(216),n(217),n(219),n(220),n(221),n(222),n(223),n(225),n(226),n(228),n(229),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(241),n(243),n(244),n(245),n(246),n(247),n(248),n(249),n(250),n(251),n(252),n(253),n(254),n(255),n(257),n(258),n(259),n(260),n(261),n(262),n(264),n(265),n(267),n(269),n(270),n(271),n(272),n(273),n(274),n(275),n(276),n(277),n(278),n(279),n(280),n(281),n(282),n(283),n(284),n(285),n(286),n(287),n(288),n(289),n(290),n(291),n(293),n(294),n(295),n(298),n(299),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(307),n(308),n(309),n(310),n(311),n(312),n(313),n(314),n(315),n(316),n(317),n(318),n(319),n(320),n(321),n(322),n(323),n(324),n(325),n(326),n(327),n(328),n(329),n(330),n(331),n(332),n(333),n(334),n(335),n(336),n(337),n(338),n(339),n(340),n(341),n(342),n(343),n(344),n(345),n(346),n(347),n(349),n(350),n(351),n(352),n(353),n(354),n(355),n(356),n(357),n(358),n(359),n(360),n(361),n(362),n(363),n(364),n(365),n(366),n(367),n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(384),n(385),n(386);var o=n(1);n(388),n(389);var r=n(390),a=(n(154),n(3)),i=n(16),c=n(155),l=n(51),u=n(157),d=n(507),s=(0,l.createLogger)(),p=(0,d.createStore)(),m=document.getElementById("react-root"),f=!0,h=!1,C=function(){for(p.subscribe((function(){!function(){if(!h){0;try{var e=p.getState();if(f){if(s.log("initial render",e),!(0,u.getRoute)(e)){if(s.info("loading old tgui"),h=!0,window.update=window.initialize=function(){},i.tridentVersion<=4)return void setTimeout((function(){location.href="tgui-fallback.html?ref="+window.__ref__}),10);document.getElementById("data").textContent=JSON.stringify(e),(0,r.loadCSS)("v4shim.css"),(0,r.loadCSS)("tgui.css");var t=document.getElementsByTagName("head")[0],a=document.createElement("script");return a.type="text/javascript",a.src="tgui.js",void t.appendChild(a)}(0,c.setupDrag)(e)}var l=n(509).Layout,d=(0,o.createComponentVNode)(2,l,{state:e,dispatch:p.dispatch});(0,o.render)(d,m)}catch(C){s.error("rendering error",C)}f&&(f=!1)}}()})),window.update=window.initialize=function(e){var t=function(e){var t=function(e,t){return"object"==typeof t&&null!==t&&t.__number__?parseFloat(t.__number__):t};i.tridentVersion<=4&&(t=undefined);try{return JSON.parse(e,t)}catch(o){s.log(o),s.log("What we got:",e);var n=o&&o.message;throw new Error("JSON parsing error: "+n)}}(e);p.dispatch((0,a.backendUpdate)(t))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}(0,r.loadCSS)("font-awesome.css")};i.tridentVersion<=4&&"loading"===document.readyState?document.addEventListener("DOMContentLoaded",C):C()},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(35),i=n(38),c=n(9),l=n(95),u=n(125),d=n(4),s=n(15),p=n(52),m=n(6),f=n(8),h=n(14),C=n(25),g=n(33),b=n(46),v=n(42),N=n(62),V=n(47),y=n(128),_=n(94),x=n(20),k=n(13),L=n(71),w=n(26),B=n(22),S=n(91),I=n(72),T=n(59),A=n(58),P=n(11),E=n(129),M=n(27),O=n(43),R=n(34),F=n(17).forEach,D=I("hidden"),j=P("toPrimitive"),z=R.set,H=R.getterFor("Symbol"),G=Object.prototype,U=r.Symbol,K=a("JSON","stringify"),Y=x.f,q=k.f,W=y.f,$=L.f,Q=S("symbols"),X=S("op-symbols"),J=S("string-to-symbol-registry"),Z=S("symbol-to-string-registry"),ee=S("wks"),te=r.QObject,ne=!te||!te.prototype||!te.prototype.findChild,oe=c&&d((function(){return 7!=v(q({},"a",{get:function(){return q(this,"a",{value:7}).a}})).a}))?function(e,t,n){var o=Y(G,t);o&&delete G[t],q(e,t,n),o&&e!==G&&q(G,t,o)}:q,re=function(e,t){var n=Q[e]=v(U.prototype);return z(n,{type:"Symbol",tag:e,description:t}),c||(n.description=t),n},ae=l&&"symbol"==typeof U.iterator?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},ie=function(e,t,n){e===G&&ie(X,t,n),f(e);var o=g(t,!0);return f(n),s(Q,o)?(n.enumerable?(s(e,D)&&e[D][o]&&(e[D][o]=!1),n=v(n,{enumerable:b(0,!1)})):(s(e,D)||q(e,D,b(1,{})),e[D][o]=!0),oe(e,o,n)):q(e,o,n)},ce=function(e,t){f(e);var n=C(t),o=N(n).concat(pe(n));return F(o,(function(t){c&&!ue.call(n,t)||ie(e,t,n[t])})),e},le=function(e,t){return t===undefined?v(e):ce(v(e),t)},ue=function(e){var t=g(e,!0),n=$.call(this,t);return!(this===G&&s(Q,t)&&!s(X,t))&&(!(n||!s(this,t)||!s(Q,t)||s(this,D)&&this[D][t])||n)},de=function(e,t){var n=C(e),o=g(t,!0);if(n!==G||!s(Q,o)||s(X,o)){var r=Y(n,o);return!r||!s(Q,o)||s(n,D)&&n[D][o]||(r.enumerable=!0),r}},se=function(e){var t=W(C(e)),n=[];return F(t,(function(e){s(Q,e)||s(T,e)||n.push(e)})),n},pe=function(e){var t=e===G,n=W(t?X:C(e)),o=[];return F(n,(function(e){!s(Q,e)||t&&!s(G,e)||o.push(Q[e])})),o};(l||(B((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?String(arguments[0]):undefined,t=A(e),n=function o(e){this===G&&o.call(X,e),s(this,D)&&s(this[D],t)&&(this[D][t]=!1),oe(this,t,b(1,e))};return c&&ne&&oe(G,t,{configurable:!0,set:n}),re(t,e)}).prototype,"toString",(function(){return H(this).tag})),L.f=ue,k.f=ie,x.f=de,V.f=y.f=se,_.f=pe,c&&(q(U.prototype,"description",{configurable:!0,get:function(){return H(this).description}}),i||B(G,"propertyIsEnumerable",ue,{unsafe:!0}))),u||(E.f=function(e){return re(P(e),e)}),o({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:U}),F(N(ee),(function(e){M(e)})),o({target:"Symbol",stat:!0,forced:!l},{"for":function(e){var t=String(e);if(s(J,t))return J[t];var n=U(t);return J[t]=n,Z[n]=t,n},keyFor:function(e){if(!ae(e))throw TypeError(e+" is not a symbol");if(s(Z,e))return Z[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),o({target:"Object",stat:!0,forced:!l,sham:!c},{create:le,defineProperty:ie,defineProperties:ce,getOwnPropertyDescriptor:de}),o({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:se,getOwnPropertySymbols:pe}),o({target:"Object",stat:!0,forced:d((function(){_.f(1)}))},{getOwnPropertySymbols:function(e){return _.f(h(e))}}),K)&&o({target:"JSON",stat:!0,forced:!l||d((function(){var e=U();return"[null]"!=K([e])||"{}"!=K({a:e})||"{}"!=K(Object(e))}))},{stringify:function(e,t,n){for(var o,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(o=t,(m(t)||e!==undefined)&&!ae(e))return p(t)||(t=function(e,t){if("function"==typeof o&&(t=o.call(this,e,t)),!ae(t))return t}),r[1]=t,K.apply(null,r)}});U.prototype[j]||w(U.prototype,j,U.prototype.valueOf),O(U,"Symbol"),T[D]=!0},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(5),i=n(15),c=n(6),l=n(13).f,u=n(122),d=a.Symbol;if(r&&"function"==typeof d&&(!("description"in d.prototype)||d().description!==undefined)){var s={},p=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof p?new d(e):e===undefined?d():d(e);return""===e&&(s[t]=!0),t};u(p,d);var m=p.prototype=d.prototype;m.constructor=p;var f=m.toString,h="Symbol(test)"==String(d("test")),C=/^Symbol\((.*)\)[^)]+$/;l(m,"description",{configurable:!0,get:function(){var e=c(this)?this.valueOf():this,t=f.call(e);if(i(s,e))return"";var n=h?t.slice(7,-1):t.replace(C,"$1");return""===n?undefined:n}}),o({global:!0,forced:!0},{Symbol:p})}},function(e,t,n){"use strict";n(27)("asyncIterator")},function(e,t,n){"use strict";n(27)("hasInstance")},function(e,t,n){"use strict";n(27)("isConcatSpreadable")},function(e,t,n){"use strict";n(27)("iterator")},function(e,t,n){"use strict";n(27)("match")},function(e,t,n){"use strict";n(27)("replace")},function(e,t,n){"use strict";n(27)("search")},function(e,t,n){"use strict";n(27)("species")},function(e,t,n){"use strict";n(27)("split")},function(e,t,n){"use strict";n(27)("toPrimitive")},function(e,t,n){"use strict";n(27)("toStringTag")},function(e,t,n){"use strict";n(27)("unscopables")},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(52),i=n(6),c=n(14),l=n(10),u=n(49),d=n(63),s=n(64),p=n(11),m=n(96),f=p("isConcatSpreadable"),h=9007199254740991,C="Maximum allowed index exceeded",g=m>=51||!r((function(){var e=[];return e[f]=!1,e.concat()[0]!==e})),b=s("concat"),v=function(e){if(!i(e))return!1;var t=e[f];return t!==undefined?!!t:a(e)};o({target:"Array",proto:!0,forced:!g||!b},{concat:function(e){var t,n,o,r,a,i=c(this),s=d(i,0),p=0;for(t=-1,o=arguments.length;th)throw TypeError(C);for(n=0;n=h)throw TypeError(C);u(s,p++,a)}return s.length=p,s}})},function(e,t,n){"use strict";var o=n(0),r=n(130),a=n(44);o({target:"Array",proto:!0},{copyWithin:r}),a("copyWithin")},function(e,t,n){"use strict";var o=n(0),r=n(17).every;o({target:"Array",proto:!0,forced:n(39)("every")},{every:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(97),a=n(44);o({target:"Array",proto:!0},{fill:r}),a("fill")},function(e,t,n){"use strict";var o=n(0),r=n(17).filter,a=n(4),i=n(64)("filter"),c=i&&!a((function(){[].filter.call({length:-1,0:1},(function(e){throw e}))}));o({target:"Array",proto:!0,forced:!i||!c},{filter:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(17).find,a=n(44),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),o({target:"Array",proto:!0,forced:i},{find:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("find")},function(e,t,n){"use strict";var o=n(0),r=n(17).findIndex,a=n(44),i=!0;"findIndex"in[]&&Array(1).findIndex((function(){i=!1})),o({target:"Array",proto:!0,forced:i},{findIndex:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("findIndex")},function(e,t,n){"use strict";var o=n(0),r=n(131),a=n(14),i=n(10),c=n(30),l=n(63);o({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=a(this),n=i(t.length),o=l(t,0);return o.length=r(o,t,t,n,0,e===undefined?1:c(e)),o}})},function(e,t,n){"use strict";var o=n(0),r=n(131),a=n(14),i=n(10),c=n(31),l=n(63);o({target:"Array",proto:!0},{flatMap:function(e){var t,n=a(this),o=i(n.length);return c(e),(t=l(n,0)).length=r(t,n,n,o,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var o=n(0),r=n(197);o({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},function(e,t,n){"use strict";var o=n(17).forEach,r=n(39);e.exports=r("forEach")?function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}:[].forEach},function(e,t,n){"use strict";var o=n(0),r=n(199);o({target:"Array",stat:!0,forced:!n(75)((function(e){Array.from(e)}))},{from:r})},function(e,t,n){"use strict";var o=n(48),r=n(14),a=n(132),i=n(98),c=n(10),l=n(49),u=n(99);e.exports=function(e){var t,n,d,s,p,m=r(e),f="function"==typeof this?this:Array,h=arguments.length,C=h>1?arguments[1]:undefined,g=C!==undefined,b=0,v=u(m);if(g&&(C=o(C,h>2?arguments[2]:undefined,2)),v==undefined||f==Array&&i(v))for(n=new f(t=c(m.length));t>b;b++)l(n,b,g?C(m[b],b):m[b]);else for(p=(s=v.call(m)).next,n=new f;!(d=p.call(s)).done;b++)l(n,b,g?a(s,C,[d.value,b],!0):d.value);return n.length=b,n}},function(e,t,n){"use strict";var o=n(0),r=n(60).includes,a=n(44);o({target:"Array",proto:!0},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}}),a("includes")},function(e,t,n){"use strict";var o=n(0),r=n(60).indexOf,a=n(39),i=[].indexOf,c=!!i&&1/[1].indexOf(1,-0)<0,l=a("indexOf");o({target:"Array",proto:!0,forced:c||l},{indexOf:function(e){return c?i.apply(this,arguments)||0:r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(0)({target:"Array",stat:!0},{isArray:n(52)})},function(e,t,n){"use strict";var o=n(134).IteratorPrototype,r=n(42),a=n(46),i=n(43),c=n(65),l=function(){return this};e.exports=function(e,t,n){var u=t+" Iterator";return e.prototype=r(o,{next:a(1,n)}),i(e,u,!1,!0),c[u]=l,e}},function(e,t,n){"use strict";var o=n(0),r=n(57),a=n(25),i=n(39),c=[].join,l=r!=Object,u=i("join",",");o({target:"Array",proto:!0,forced:l||u},{join:function(e){return c.call(a(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var o=n(0),r=n(136);o({target:"Array",proto:!0,forced:r!==[].lastIndexOf},{lastIndexOf:r})},function(e,t,n){"use strict";var o=n(0),r=n(17).map,a=n(4),i=n(64)("map"),c=i&&!a((function(){[].map.call({length:-1,0:1},(function(e){throw e}))}));o({target:"Array",proto:!0,forced:!i||!c},{map:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(49);o({target:"Array",stat:!0,forced:r((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)a(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var o=n(0),r=n(76).left;o({target:"Array",proto:!0,forced:n(39)("reduce")},{reduce:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(76).right;o({target:"Array",proto:!0,forced:n(39)("reduceRight")},{reduceRight:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(52),i=n(41),c=n(10),l=n(25),u=n(49),d=n(64),s=n(11)("species"),p=[].slice,m=Math.max;o({target:"Array",proto:!0,forced:!d("slice")},{slice:function(e,t){var n,o,d,f=l(this),h=c(f.length),C=i(e,h),g=i(t===undefined?h:t,h);if(a(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!a(n.prototype)?r(n)&&null===(n=n[s])&&(n=undefined):n=undefined,n===Array||n===undefined))return p.call(f,C,g);for(o=new(n===undefined?Array:n)(m(g-C,0)),d=0;C1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(31),a=n(14),i=n(4),c=n(39),l=[],u=l.sort,d=i((function(){l.sort(undefined)})),s=i((function(){l.sort(null)})),p=c("sort");o({target:"Array",proto:!0,forced:d||!s||p},{sort:function(e){return e===undefined?u.call(a(this)):u.call(a(this),r(e))}})},function(e,t,n){"use strict";n(54)("Array")},function(e,t,n){"use strict";var o=n(0),r=n(41),a=n(30),i=n(10),c=n(14),l=n(63),u=n(49),d=n(64),s=Math.max,p=Math.min,m=9007199254740991,f="Maximum allowed length exceeded";o({target:"Array",proto:!0,forced:!d("splice")},{splice:function(e,t){var n,o,d,h,C,g,b=c(this),v=i(b.length),N=r(e,v),V=arguments.length;if(0===V?n=o=0:1===V?(n=0,o=v-N):(n=V-2,o=p(s(a(t),0),v-N)),v+n-o>m)throw TypeError(f);for(d=l(b,o),h=0;hv-o+n;h--)delete b[h-1]}else if(n>o)for(h=v-o;h>N;h--)g=h+n-1,(C=h+o-1)in b?b[g]=b[C]:delete b[g];for(h=0;h>1,h=23===t?r(2,-24)-r(2,-77):0,C=e<0||0===e&&1/e<0?1:0,g=0;for((e=o(e))!=e||e===1/0?(u=e!=e?1:0,l=m):(l=a(i(e)/c),e*(d=r(2,-l))<1&&(l--,d*=2),(e+=l+f>=1?h/d:h*r(2,1-f))*d>=2&&(l++,d/=2),l+f>=m?(u=0,l=m):l+f>=1?(u=(e*d-1)*r(2,t),l+=f):(u=e*r(2,f-1)*r(2,t),l=0));t>=8;s[g++]=255&u,u/=256,t-=8);for(l=l<0;s[g++]=255&l,l/=256,p-=8);return s[--g]|=128*C,s},unpack:function(e,t){var n,o=e.length,a=8*o-t-1,i=(1<>1,l=a-7,u=o-1,d=e[u--],s=127&d;for(d>>=7;l>0;s=256*s+e[u],u--,l-=8);for(n=s&(1<<-l)-1,s>>=-l,l+=t;l>0;n=256*n+e[u],u--,l-=8);if(0===s)s=1-c;else{if(s===i)return n?NaN:d?-1/0:1/0;n+=r(2,t),s-=c}return(d?-1:1)*n*r(2,s-t)}}},function(e,t,n){"use strict";var o=n(0),r=n(7);o({target:"ArrayBuffer",stat:!0,forced:!r.NATIVE_ARRAY_BUFFER_VIEWS},{isView:r.isView})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(77),i=n(8),c=n(41),l=n(10),u=n(45),d=a.ArrayBuffer,s=a.DataView,p=d.prototype.slice;o({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:r((function(){return!new d(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(p!==undefined&&t===undefined)return p.call(i(this),e);for(var n=i(this).byteLength,o=c(e,n),r=c(t===undefined?n:t,n),a=new(u(this,d))(l(r-o)),m=new s(this),f=new s(a),h=0;o9999?"+":"";return n+r(a(e),n?6:4,0)+"-"+r(this.getUTCMonth()+1,2,0)+"-"+r(this.getUTCDate(),2,0)+"T"+r(this.getUTCHours(),2,0)+":"+r(this.getUTCMinutes(),2,0)+":"+r(this.getUTCSeconds(),2,0)+"."+r(t,3,0)+"Z"}:l},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(14),i=n(33);o({target:"Date",proto:!0,forced:r((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=a(this),n=i(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var o=n(26),r=n(227),a=n(11)("toPrimitive"),i=Date.prototype;a in i||o(i,a,r)},function(e,t,n){"use strict";var o=n(8),r=n(33);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return r(o(this),"number"!==e)}},function(e,t,n){"use strict";var o=n(22),r=Date.prototype,a="Invalid Date",i=r.toString,c=r.getTime;new Date(NaN)+""!=a&&o(r,"toString",(function(){var e=c.call(this);return e==e?i.call(this):a}))},function(e,t,n){"use strict";n(0)({target:"Function",proto:!0},{bind:n(138)})},function(e,t,n){"use strict";var o=n(6),r=n(13),a=n(36),i=n(11)("hasInstance"),c=Function.prototype;i in c||r.f(c,i,{value:function(e){if("function"!=typeof this||!o(e))return!1;if(!o(this.prototype))return e instanceof this;for(;e=a(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var o=n(9),r=n(13).f,a=Function.prototype,i=a.toString,c=/^\s*function ([^ (]*)/;!o||"name"in a||r(a,"name",{configurable:!0,get:function(){try{return i.call(this).match(c)[1]}catch(e){return""}}})},function(e,t,n){"use strict";var o=n(5);n(43)(o.JSON,"JSON",!0)},function(e,t,n){"use strict";var o=n(78),r=n(139);e.exports=o("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(0),r=n(140),a=Math.acosh,i=Math.log,c=Math.sqrt,l=Math.LN2;o({target:"Math",stat:!0,forced:!a||710!=Math.floor(a(Number.MAX_VALUE))||a(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?i(e)+l:r(e-1+c(e-1)*c(e+1))}})},function(e,t,n){"use strict";var o=n(0),r=Math.asinh,a=Math.log,i=Math.sqrt;o({target:"Math",stat:!0,forced:!(r&&1/r(0)>0)},{asinh:function c(e){return isFinite(e=+e)&&0!=e?e<0?-c(-e):a(e+i(e*e+1)):e}})},function(e,t,n){"use strict";var o=n(0),r=Math.atanh,a=Math.log;o({target:"Math",stat:!0,forced:!(r&&1/r(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:a((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var o=n(0),r=n(105),a=Math.abs,i=Math.pow;o({target:"Math",stat:!0},{cbrt:function(e){return r(e=+e)*i(a(e),1/3)}})},function(e,t,n){"use strict";var o=n(0),r=Math.floor,a=Math.log,i=Math.LOG2E;o({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-r(a(e+.5)*i):32}})},function(e,t,n){"use strict";var o=n(0),r=n(80),a=Math.cosh,i=Math.abs,c=Math.E;o({target:"Math",stat:!0,forced:!a||a(710)===Infinity},{cosh:function(e){var t=r(i(e)-1)+1;return(t+1/(t*c*c))*(c/2)}})},function(e,t,n){"use strict";var o=n(0),r=n(80);o({target:"Math",stat:!0,forced:r!=Math.expm1},{expm1:r})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{fround:n(242)})},function(e,t,n){"use strict";var o=n(105),r=Math.abs,a=Math.pow,i=a(2,-52),c=a(2,-23),l=a(2,127)*(2-c),u=a(2,-126),d=function(e){return e+1/i-1/i};e.exports=Math.fround||function(e){var t,n,a=r(e),s=o(e);return al||n!=n?s*Infinity:s*n}},function(e,t,n){"use strict";var o=n(0),r=Math.hypot,a=Math.abs,i=Math.sqrt;o({target:"Math",stat:!0,forced:!!r&&r(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,o,r=0,c=0,l=arguments.length,u=0;c0?(o=n/u)*o:n;return u===Infinity?Infinity:u*i(r)}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=Math.imul;o({target:"Math",stat:!0,forced:r((function(){return-5!=a(4294967295,5)||2!=a.length}))},{imul:function(e,t){var n=+e,o=+t,r=65535&n,a=65535&o;return 0|r*a+((65535&n>>>16)*a+r*(65535&o>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var o=n(0),r=Math.log,a=Math.LOG10E;o({target:"Math",stat:!0},{log10:function(e){return r(e)*a}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{log1p:n(140)})},function(e,t,n){"use strict";var o=n(0),r=Math.log,a=Math.LN2;o({target:"Math",stat:!0},{log2:function(e){return r(e)/a}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{sign:n(105)})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(80),i=Math.abs,c=Math.exp,l=Math.E;o({target:"Math",stat:!0,forced:r((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return i(e=+e)<1?(a(e)-a(-e))/2:(c(e-1)-c(-e-1))*(l/2)}})},function(e,t,n){"use strict";var o=n(0),r=n(80),a=Math.exp;o({target:"Math",stat:!0},{tanh:function(e){var t=r(e=+e),n=r(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(a(e)+a(-e))}})},function(e,t,n){"use strict";n(43)(Math,"Math",!0)},function(e,t,n){"use strict";var o=n(0),r=Math.ceil,a=Math.floor;o({target:"Math",stat:!0},{trunc:function(e){return(e>0?a:r)(e)}})},function(e,t,n){"use strict";var o=n(9),r=n(5),a=n(61),i=n(22),c=n(15),l=n(32),u=n(79),d=n(33),s=n(4),p=n(42),m=n(47).f,f=n(20).f,h=n(13).f,C=n(56).trim,g="Number",b=r[g],v=b.prototype,N=l(p(v))==g,V=function(e){var t,n,o,r,a,i,c,l,u=d(e,!1);if("string"==typeof u&&u.length>2)if(43===(t=(u=C(u)).charCodeAt(0))||45===t){if(88===(n=u.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:o=2,r=49;break;case 79:case 111:o=8,r=55;break;default:return+u}for(i=(a=u.slice(2)).length,c=0;cr)return NaN;return parseInt(a,o)}return+u};if(a(g,!b(" 0o1")||!b("0b1")||b("+0x1"))){for(var y,_=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof _&&(N?s((function(){v.valueOf.call(n)})):l(n)!=g)?u(new b(V(t)),n,_):V(t)},x=o?m(b):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;x.length>k;k++)c(b,y=x[k])&&!c(_,y)&&h(_,y,f(b,y));_.prototype=v,v.constructor=_,i(r,g,_)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isFinite:n(256)})},function(e,t,n){"use strict";var o=n(5).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&o(e)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isInteger:n(141)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var o=n(0),r=n(141),a=Math.abs;o({target:"Number",stat:!0},{isSafeInteger:function(e){return r(e)&&a(e)<=9007199254740991}})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var o=n(0),r=n(263);o({target:"Number",stat:!0,forced:Number.parseFloat!=r},{parseFloat:r})},function(e,t,n){"use strict";var o=n(5),r=n(56).trim,a=n(81),i=o.parseFloat,c=1/i(a+"-0")!=-Infinity;e.exports=c?function(e){var t=r(String(e)),n=i(t);return 0===n&&"-"==t.charAt(0)?-0:n}:i},function(e,t,n){"use strict";var o=n(0),r=n(142);o({target:"Number",stat:!0,forced:Number.parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o=n(0),r=n(30),a=n(266),i=n(104),c=n(4),l=1..toFixed,u=Math.floor,d=function p(e,t,n){return 0===t?n:t%2==1?p(e,t-1,n*e):p(e*e,t/2,n)},s=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t};o({target:"Number",proto:!0,forced:l&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){l.call({})}))},{toFixed:function(e){var t,n,o,c,l=a(this),p=r(e),m=[0,0,0,0,0,0],f="",h="0",C=function(e,t){for(var n=-1,o=t;++n<6;)o+=e*m[n],m[n]=o%1e7,o=u(o/1e7)},g=function(e){for(var t=6,n=0;--t>=0;)n+=m[t],m[t]=u(n/e),n=n%e*1e7},b=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==m[e]){var n=String(m[e]);t=""===t?n:t+i.call("0",7-n.length)+n}return t};if(p<0||p>20)throw RangeError("Incorrect fraction digits");if(l!=l)return"NaN";if(l<=-1e21||l>=1e21)return String(l);if(l<0&&(f="-",l=-l),l>1e-21)if(n=(t=s(l*d(2,69,1))-69)<0?l*d(2,-t,1):l/d(2,t,1),n*=4503599627370496,(t=52-t)>0){for(C(0,n),o=p;o>=7;)C(1e7,0),o-=7;for(C(d(10,o,1),0),o=t-1;o>=23;)g(1<<23),o-=23;g(1<0?f+((c=h.length)<=p?"0."+i.call("0",p-c)+h:h.slice(0,c-p)+"."+h.slice(c-p)):f+h}})},function(e,t,n){"use strict";var o=n(32);e.exports=function(e){if("number"!=typeof e&&"Number"!=o(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var o=n(0),r=n(268);o({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},function(e,t,n){"use strict";var o=n(9),r=n(4),a=n(62),i=n(94),c=n(71),l=n(14),u=n(57),d=Object.assign,s=Object.defineProperty;e.exports=!d||r((function(){if(o&&1!==d({b:1},d(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=d({},e)[n]||"abcdefghijklmnopqrst"!=a(d({},t)).join("")}))?function(e,t){for(var n=l(e),r=arguments.length,d=1,s=i.f,p=c.f;r>d;)for(var m,f=u(arguments[d++]),h=s?a(f).concat(s(f)):a(f),C=h.length,g=0;C>g;)m=h[g++],o&&!p.call(f,m)||(n[m]=f[m]);return n}:d},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0,sham:!n(9)},{create:n(42)})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(31),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineGetter__:function(e,t){l.f(i(this),e,{get:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(0),r=n(9);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperties:n(126)})},function(e,t,n){"use strict";var o=n(0),r=n(9);o({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperty:n(13).f})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(31),l=n(13);r&&o({target:"Object",proto:!0,forced:a},{__defineSetter__:function(e,t){l.f(i(this),e,{set:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var o=n(0),r=n(143).entries;o({target:"Object",stat:!0},{entries:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(67),a=n(4),i=n(6),c=n(50).onFreeze,l=Object.freeze;o({target:"Object",stat:!0,forced:a((function(){l(1)})),sham:!r},{freeze:function(e){return l&&i(e)?l(c(e)):e}})},function(e,t,n){"use strict";var o=n(0),r=n(68),a=n(49);o({target:"Object",stat:!0},{fromEntries:function(e){var t={};return r(e,(function(e,n){a(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(25),i=n(20).f,c=n(9),l=r((function(){i(1)}));o({target:"Object",stat:!0,forced:!c||l,sham:!c},{getOwnPropertyDescriptor:function(e,t){return i(a(e),t)}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(92),i=n(25),c=n(20),l=n(49);o({target:"Object",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(e){for(var t,n,o=i(e),r=c.f,u=a(o),d={},s=0;u.length>s;)(n=r(o,t=u[s++]))!==undefined&&l(d,t,n);return d}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(128).f;o({target:"Object",stat:!0,forced:r((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:a})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(14),i=n(36),c=n(102);o({target:"Object",stat:!0,forced:r((function(){i(1)})),sham:!c},{getPrototypeOf:function(e){return i(a(e))}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{is:n(144)})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(6),i=Object.isExtensible;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isExtensible:function(e){return!!a(e)&&(!i||i(e))}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(6),i=Object.isFrozen;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isFrozen:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(4),a=n(6),i=Object.isSealed;o({target:"Object",stat:!0,forced:r((function(){i(1)}))},{isSealed:function(e){return!a(e)||!!i&&i(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(14),a=n(62);o({target:"Object",stat:!0,forced:n(4)((function(){a(1)}))},{keys:function(e){return a(r(e))}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(33),l=n(36),u=n(20).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupGetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=u(n,o))return t.get}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(82),i=n(14),c=n(33),l=n(36),u=n(20).f;r&&o({target:"Object",proto:!0,forced:a},{__lookupSetter__:function(e){var t,n=i(this),o=c(e,!0);do{if(t=u(n,o))return t.set}while(n=l(n))}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(50).onFreeze,i=n(67),c=n(4),l=Object.preventExtensions;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{preventExtensions:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(50).onFreeze,i=n(67),c=n(4),l=Object.seal;o({target:"Object",stat:!0,forced:c((function(){l(1)})),sham:!i},{seal:function(e){return l&&r(e)?l(a(e)):e}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{setPrototypeOf:n(53)})},function(e,t,n){"use strict";var o=n(100),r=n(22),a=n(292);o||r(Object.prototype,"toString",a,{unsafe:!0})},function(e,t,n){"use strict";var o=n(100),r=n(74);e.exports=o?{}.toString:function(){return"[object "+r(this)+"]"}},function(e,t,n){"use strict";var o=n(0),r=n(143).values;o({target:"Object",stat:!0},{values:function(e){return r(e)}})},function(e,t,n){"use strict";var o=n(0),r=n(142);o({global:!0,forced:parseInt!=r},{parseInt:r})},function(e,t,n){"use strict";var o,r,a,i,c=n(0),l=n(38),u=n(5),d=n(35),s=n(145),p=n(22),m=n(66),f=n(43),h=n(54),C=n(6),g=n(31),b=n(55),v=n(32),N=n(90),V=n(68),y=n(75),_=n(45),x=n(106).set,k=n(147),L=n(148),w=n(296),B=n(149),S=n(297),I=n(34),T=n(61),A=n(11),P=n(96),E=A("species"),M="Promise",O=I.get,R=I.set,F=I.getterFor(M),D=s,j=u.TypeError,z=u.document,H=u.process,G=d("fetch"),U=B.f,K=U,Y="process"==v(H),q=!!(z&&z.createEvent&&u.dispatchEvent),W=0,$=T(M,(function(){if(!(N(D)!==String(D))){if(66===P)return!0;if(!Y&&"function"!=typeof PromiseRejectionEvent)return!0}if(l&&!D.prototype["finally"])return!0;if(P>=51&&/native code/.test(D))return!1;var e=D.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[E]=t,!(e.then((function(){}))instanceof t)})),Q=$||!y((function(e){D.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!C(e)||"function"!=typeof(t=e.then))&&t},J=function(e,t,n){if(!t.notified){t.notified=!0;var o=t.reactions;k((function(){for(var r=t.value,a=1==t.state,i=0;o.length>i;){var c,l,u,d=o[i++],s=a?d.ok:d.fail,p=d.resolve,m=d.reject,f=d.domain;try{s?(a||(2===t.rejection&&ne(e,t),t.rejection=1),!0===s?c=r:(f&&f.enter(),c=s(r),f&&(f.exit(),u=!0)),c===d.promise?m(j("Promise-chain cycle")):(l=X(c))?l.call(c,p,m):p(c)):m(r)}catch(h){f&&!u&&f.exit(),m(h)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&ee(e,t)}))}},Z=function(e,t,n){var o,r;q?((o=z.createEvent("Event")).promise=t,o.reason=n,o.initEvent(e,!1,!0),u.dispatchEvent(o)):o={promise:t,reason:n},(r=u["on"+e])?r(o):"unhandledrejection"===e&&w("Unhandled promise rejection",n)},ee=function(e,t){x.call(u,(function(){var n,o=t.value;if(te(t)&&(n=S((function(){Y?H.emit("unhandledRejection",o,e):Z("unhandledrejection",e,o)})),t.rejection=Y||te(t)?2:1,n.error))throw n.value}))},te=function(e){return 1!==e.rejection&&!e.parent},ne=function(e,t){x.call(u,(function(){Y?H.emit("rejectionHandled",e):Z("rejectionhandled",e,t.value)}))},oe=function(e,t,n,o){return function(r){e(t,n,r,o)}},re=function(e,t,n,o){t.done||(t.done=!0,o&&(t=o),t.value=n,t.state=2,J(e,t,!0))},ae=function ie(e,t,n,o){if(!t.done){t.done=!0,o&&(t=o);try{if(e===n)throw j("Promise can't be resolved itself");var r=X(n);r?k((function(){var o={done:!1};try{r.call(n,oe(ie,e,o,t),oe(re,e,o,t))}catch(a){re(e,o,a,t)}})):(t.value=n,t.state=1,J(e,t,!1))}catch(a){re(e,{done:!1},a,t)}}};$&&(D=function(e){b(this,D,M),g(e),o.call(this);var t=O(this);try{e(oe(ae,this,t),oe(re,this,t))}catch(n){re(this,t,n)}},(o=function(e){R(this,{type:M,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:W,value:undefined})}).prototype=m(D.prototype,{then:function(e,t){var n=F(this),o=U(_(this,D));return o.ok="function"!=typeof e||e,o.fail="function"==typeof t&&t,o.domain=Y?H.domain:undefined,n.parent=!0,n.reactions.push(o),n.state!=W&&J(this,n,!1),o.promise},"catch":function(e){return this.then(undefined,e)}}),r=function(){var e=new o,t=O(e);this.promise=e,this.resolve=oe(ae,e,t),this.reject=oe(re,e,t)},B.f=U=function(e){return e===D||e===a?new r(e):K(e)},l||"function"!=typeof s||(i=s.prototype.then,p(s.prototype,"then",(function(e,t){var n=this;return new D((function(e,t){i.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof G&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return L(D,G.apply(u,arguments))}}))),c({global:!0,wrap:!0,forced:$},{Promise:D}),f(D,M,!1,!0),h(M),a=d(M),c({target:M,stat:!0,forced:$},{reject:function(e){var t=U(this);return t.reject.call(undefined,e),t.promise}}),c({target:M,stat:!0,forced:l||$},{resolve:function(e){return L(l&&this===a?D:this,e)}}),c({target:M,stat:!0,forced:Q},{all:function(e){var t=this,n=U(t),o=n.resolve,r=n.reject,a=S((function(){var n=g(t.resolve),a=[],i=0,c=1;V(e,(function(e){var l=i++,u=!1;a.push(undefined),c++,n.call(t,e).then((function(e){u||(u=!0,a[l]=e,--c||o(a))}),r)})),--c||o(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=U(t),o=n.reject,r=S((function(){var r=g(t.resolve);V(e,(function(e){r.call(t,e).then(n.resolve,o)}))}));return r.error&&o(r.value),n.promise}})},function(e,t,n){"use strict";var o=n(5);e.exports=function(e,t){var n=o.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var o=n(0),r=n(38),a=n(145),i=n(4),c=n(35),l=n(45),u=n(148),d=n(22);o({target:"Promise",proto:!0,real:!0,forced:!!a&&i((function(){a.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=l(this,c("Promise")),n="function"==typeof e;return this.then(n?function(n){return u(t,e()).then((function(){return n}))}:e,n?function(n){return u(t,e()).then((function(){throw n}))}:e)}}),r||"function"!=typeof a||a.prototype["finally"]||d(a.prototype,"finally",c("Promise").prototype["finally"])},function(e,t,n){"use strict";var o=n(0),r=n(35),a=n(31),i=n(8),c=n(4),l=r("Reflect","apply"),u=Function.apply;o({target:"Reflect",stat:!0,forced:!c((function(){l((function(){}))}))},{apply:function(e,t,n){return a(e),i(n),l?l(e,t,n):u.call(e,t,n)}})},function(e,t,n){"use strict";var o=n(0),r=n(35),a=n(31),i=n(8),c=n(6),l=n(42),u=n(138),d=n(4),s=r("Reflect","construct"),p=d((function(){function e(){}return!(s((function(){}),[],e)instanceof e)})),m=!d((function(){s((function(){}))})),f=p||m;o({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){a(e),i(t);var n=arguments.length<3?e:a(arguments[2]);if(m&&!p)return s(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var o=[null];return o.push.apply(o,t),new(u.apply(e,o))}var r=n.prototype,d=l(c(r)?r:Object.prototype),f=Function.apply.call(e,d,t);return c(f)?f:d}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(8),i=n(33),c=n(13);o({target:"Reflect",stat:!0,forced:n(4)((function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})})),sham:!r},{defineProperty:function(e,t,n){a(e);var o=i(t,!0);a(n);try{return c.f(e,o,n),!0}catch(r){return!1}}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(20).f;o({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=a(r(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var o=n(0),r=n(6),a=n(8),i=n(15),c=n(20),l=n(36);o({target:"Reflect",stat:!0},{get:function u(e,t){var n,o,d=arguments.length<3?e:arguments[2];return a(e)===d?e[t]:(n=c.f(e,t))?i(n,"value")?n.value:n.get===undefined?undefined:n.get.call(d):r(o=l(e))?u(o,t,d):void 0}})},function(e,t,n){"use strict";var o=n(0),r=n(9),a=n(8),i=n(20);o({target:"Reflect",stat:!0,sham:!r},{getOwnPropertyDescriptor:function(e,t){return i.f(a(e),t)}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(36);o({target:"Reflect",stat:!0,sham:!n(102)},{getPrototypeOf:function(e){return a(r(e))}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=Object.isExtensible;o({target:"Reflect",stat:!0},{isExtensible:function(e){return r(e),!a||a(e)}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{ownKeys:n(92)})},function(e,t,n){"use strict";var o=n(0),r=n(35),a=n(8);o({target:"Reflect",stat:!0,sham:!n(67)},{preventExtensions:function(e){a(e);try{var t=r("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(6),i=n(15),c=n(4),l=n(13),u=n(20),d=n(36),s=n(46);o({target:"Reflect",stat:!0,forced:c((function(){var e=l.f({},"a",{configurable:!0});return!1!==Reflect.set(d(e),"a",1,e)}))},{set:function p(e,t,n){var o,c,m=arguments.length<4?e:arguments[3],f=u.f(r(e),t);if(!f){if(a(c=d(e)))return p(c,t,n,m);f=s(0)}if(i(f,"value")){if(!1===f.writable||!a(m))return!1;if(o=u.f(m,t)){if(o.get||o.set||!1===o.writable)return!1;o.value=n,l.f(m,t,o)}else l.f(m,t,s(0,n));return!0}return f.set!==undefined&&(f.set.call(m,n),!0)}})},function(e,t,n){"use strict";var o=n(0),r=n(8),a=n(135),i=n(53);i&&o({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){r(e),a(t);try{return i(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var o=n(9),r=n(5),a=n(61),i=n(79),c=n(13).f,l=n(47).f,u=n(107),d=n(83),s=n(22),p=n(4),m=n(54),f=n(11)("match"),h=r.RegExp,C=h.prototype,g=/a/g,b=/a/g,v=new h(g)!==g;if(o&&a("RegExp",!v||p((function(){return b[f]=!1,h(g)!=g||h(b)==b||"/a/i"!=h(g,"i")})))){for(var N=function(e,t){var n=this instanceof N,o=u(e),r=t===undefined;return!n&&o&&e.constructor===N&&r?e:i(v?new h(o&&!r?e.source:e,t):h((o=e instanceof N)?e.source:e,o&&r?d.call(e):t),n?this:C,N)},V=function(e){e in N||c(N,e,{configurable:!0,get:function(){return h[e]},set:function(t){h[e]=t}})},y=l(h),_=0;y.length>_;)V(y[_++]);C.constructor=N,N.prototype=C,s(r,"RegExp",N)}m("RegExp")},function(e,t,n){"use strict";var o=n(0),r=n(84);o({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},function(e,t,n){"use strict";var o=n(9),r=n(13),a=n(83);o&&"g"!=/./g.flags&&r.f(RegExp.prototype,"flags",{configurable:!0,get:a})},function(e,t,n){"use strict";var o=n(22),r=n(8),a=n(4),i=n(83),c=RegExp.prototype,l=c.toString,u=a((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),d="toString"!=l.name;(u||d)&&o(RegExp.prototype,"toString",(function(){var e=r(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in c)?i.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var o=n(78),r=n(139);e.exports=o("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),r)},function(e,t,n){"use strict";var o=n(0),r=n(108).codeAt;o({target:"String",proto:!0},{codePointAt:function(e){return r(this,e)}})},function(e,t,n){"use strict";var o,r=n(0),a=n(20).f,i=n(10),c=n(109),l=n(21),u=n(110),d=n(38),s="".endsWith,p=Math.min,m=u("endsWith");r({target:"String",proto:!0,forced:!!(d||m||(o=a(String.prototype,"endsWith"),!o||o.writable))&&!m},{endsWith:function(e){var t=String(l(this));c(e);var n=arguments.length>1?arguments[1]:undefined,o=i(t.length),r=n===undefined?o:p(i(n),o),a=String(e);return s?s.call(t,a,r):t.slice(r-a.length,r)===a}})},function(e,t,n){"use strict";var o=n(0),r=n(41),a=String.fromCharCode,i=String.fromCodePoint;o({target:"String",stat:!0,forced:!!i&&1!=i.length},{fromCodePoint:function(e){for(var t,n=[],o=arguments.length,i=0;o>i;){if(t=+arguments[i++],r(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?a(t):a(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var o=n(0),r=n(109),a=n(21);o({target:"String",proto:!0,forced:!n(110)("includes")},{includes:function(e){return!!~String(a(this)).indexOf(r(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(108).charAt,r=n(34),a=n(101),i=r.set,c=r.getterFor("String Iterator");a(String,"String",(function(e){i(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,r=t.index;return r>=n.length?{value:undefined,done:!0}:(e=o(n,r),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var o=n(85),r=n(8),a=n(10),i=n(21),c=n(111),l=n(86);o("match",1,(function(e,t,n){return[function(t){var n=i(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var i=r(e),u=String(this);if(!i.global)return l(i,u);var d=i.unicode;i.lastIndex=0;for(var s,p=[],m=0;null!==(s=l(i,u));){var f=String(s[0]);p[m]=f,""===f&&(i.lastIndex=c(u,a(i.lastIndex),d)),m++}return 0===m?null:p}]}))},function(e,t,n){"use strict";var o=n(0),r=n(103).end;o({target:"String",proto:!0,forced:n(150)},{padEnd:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(103).start;o({target:"String",proto:!0,forced:n(150)},{padStart:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var o=n(0),r=n(25),a=n(10);o({target:"String",stat:!0},{raw:function(e){for(var t=r(e.raw),n=a(t.length),o=arguments.length,i=[],c=0;n>c;)i.push(String(t[c++])),c]*>)/g,h=/\$([$&'`]|\d\d?)/g;o("replace",2,(function(e,t,n){return[function(n,o){var r=l(this),a=n==undefined?undefined:n[e];return a!==undefined?a.call(n,r,o):t.call(String(r),n,o)},function(e,a){var l=n(t,e,this,a);if(l.done)return l.value;var m=r(e),f=String(this),h="function"==typeof a;h||(a=String(a));var C=m.global;if(C){var g=m.unicode;m.lastIndex=0}for(var b=[];;){var v=d(m,f);if(null===v)break;if(b.push(v),!C)break;""===String(v[0])&&(m.lastIndex=u(f,i(m.lastIndex),g))}for(var N,V="",y=0,_=0;_=y&&(V+=f.slice(y,k)+I,y=k+x.length)}return V+f.slice(y)}];function o(e,n,o,r,i,c){var l=o+e.length,u=r.length,d=h;return i!==undefined&&(i=a(i),d=f),t.call(c,d,(function(t,a){var c;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,o);case"'":return n.slice(l);case"<":c=i[a.slice(1,-1)];break;default:var d=+a;if(0===d)return t;if(d>u){var s=m(d/10);return 0===s?t:s<=u?r[s-1]===undefined?a.charAt(1):r[s-1]+a.charAt(1):t}c=r[d-1]}return c===undefined?"":c}))}}))},function(e,t,n){"use strict";var o=n(85),r=n(8),a=n(21),i=n(144),c=n(86);o("search",1,(function(e,t,n){return[function(t){var n=a(this),o=t==undefined?undefined:t[e];return o!==undefined?o.call(t,n):new RegExp(t)[e](String(n))},function(e){var o=n(t,e,this);if(o.done)return o.value;var a=r(e),l=String(this),u=a.lastIndex;i(u,0)||(a.lastIndex=0);var d=c(a,l);return i(a.lastIndex,u)||(a.lastIndex=u),null===d?-1:d.index}]}))},function(e,t,n){"use strict";var o=n(85),r=n(107),a=n(8),i=n(21),c=n(45),l=n(111),u=n(10),d=n(86),s=n(84),p=n(4),m=[].push,f=Math.min,h=!p((function(){return!RegExp(4294967295,"y")}));o("split",2,(function(e,t,n){var o;return o="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var o=String(i(this)),a=n===undefined?4294967295:n>>>0;if(0===a)return[];if(e===undefined)return[o];if(!r(e))return t.call(o,e,a);for(var c,l,u,d=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,h=new RegExp(e.source,p+"g");(c=s.call(h,o))&&!((l=h.lastIndex)>f&&(d.push(o.slice(f,c.index)),c.length>1&&c.index=a));)h.lastIndex===c.index&&h.lastIndex++;return f===o.length?!u&&h.test("")||d.push(""):d.push(o.slice(f)),d.length>a?d.slice(0,a):d}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=i(this),a=t==undefined?undefined:t[e];return a!==undefined?a.call(t,r,n):o.call(String(r),t,n)},function(e,r){var i=n(o,e,this,r,o!==t);if(i.done)return i.value;var s=a(e),p=String(this),m=c(s,RegExp),C=s.unicode,g=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),b=new m(h?s:"^(?:"+s.source+")",g),v=r===undefined?4294967295:r>>>0;if(0===v)return[];if(0===p.length)return null===d(b,p)?[p]:[];for(var N=0,V=0,y=[];V1?arguments[1]:undefined,t.length)),o=String(e);return s?s.call(t,o,n):t.slice(n,n+o.length)===o}})},function(e,t,n){"use strict";var o=n(0),r=n(56).trim;o({target:"String",proto:!0,forced:n(112)("trim")},{trim:function(){return r(this)}})},function(e,t,n){"use strict";var o=n(0),r=n(56).end,a=n(112)("trimEnd"),i=a?function(){return r(this)}:"".trimEnd;o({target:"String",proto:!0,forced:a},{trimEnd:i,trimRight:i})},function(e,t,n){"use strict";var o=n(0),r=n(56).start,a=n(112)("trimStart"),i=a?function(){return r(this)}:"".trimStart;o({target:"String",proto:!0,forced:a},{trimStart:i,trimLeft:i})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("anchor")},{anchor:function(e){return r(this,"a","name",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("big")},{big:function(){return r(this,"big","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("blink")},{blink:function(){return r(this,"blink","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("bold")},{bold:function(){return r(this,"b","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("fixed")},{fixed:function(){return r(this,"tt","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("fontcolor")},{fontcolor:function(e){return r(this,"font","color",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("fontsize")},{fontsize:function(e){return r(this,"font","size",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("italics")},{italics:function(){return r(this,"i","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("link")},{link:function(e){return r(this,"a","href",e)}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("small")},{small:function(){return r(this,"small","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("strike")},{strike:function(){return r(this,"strike","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("sub")},{sub:function(){return r(this,"sub","","")}})},function(e,t,n){"use strict";var o=n(0),r=n(28);o({target:"String",proto:!0,forced:n(29)("sup")},{sup:function(){return r(this,"sup","","")}})},function(e,t,n){"use strict";n(40)("Float32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(30);e.exports=function(e){var t=o(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(40)("Float64",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Int32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint8",(function(e){return function(t,n,o){return e(this,t,n,o)}}),!0)},function(e,t,n){"use strict";n(40)("Uint16",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";n(40)("Uint32",(function(e){return function(t,n,o){return e(this,t,n,o)}}))},function(e,t,n){"use strict";var o=n(7),r=n(130),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("copyWithin",(function(e,t){return r.call(a(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(17).every,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("every",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(97),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("fill",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(17).filter,a=n(45),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("filter",(function(e){for(var t=r(i(this),e,arguments.length>1?arguments[1]:undefined),n=a(this,this.constructor),o=0,l=t.length,u=new(c(n))(l);l>o;)u[o]=t[o++];return u}))},function(e,t,n){"use strict";var o=n(7),r=n(17).find,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("find",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(17).findIndex,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("findIndex",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(17).forEach,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("forEach",(function(e){r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(113);(0,n(7).exportTypedArrayStaticMethod)("from",n(152),o)},function(e,t,n){"use strict";var o=n(7),r=n(60).includes,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("includes",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(60).indexOf,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("indexOf",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(5),r=n(7),a=n(133),i=n(11)("iterator"),c=o.Uint8Array,l=a.values,u=a.keys,d=a.entries,s=r.aTypedArray,p=r.exportTypedArrayMethod,m=c&&c.prototype[i],f=!!m&&("values"==m.name||m.name==undefined),h=function(){return l.call(s(this))};p("entries",(function(){return d.call(s(this))})),p("keys",(function(){return u.call(s(this))})),p("values",h,!f),p(i,h,!f)},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].join;a("join",(function(e){return i.apply(r(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(136),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("lastIndexOf",(function(e){return r.apply(a(this),arguments)}))},function(e,t,n){"use strict";var o=n(7),r=n(17).map,a=n(45),i=o.aTypedArray,c=o.aTypedArrayConstructor;(0,o.exportTypedArrayMethod)("map",(function(e){return r(i(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(c(a(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var o=n(7),r=n(113),a=o.aTypedArrayConstructor;(0,o.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(a(this))(t);t>e;)n[e]=arguments[e++];return n}),r)},function(e,t,n){"use strict";var o=n(7),r=n(76).left,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduce",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=n(76).right,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("reduceRight",(function(e){return r(a(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=Math.floor;a("reverse",(function(){for(var e,t=r(this).length,n=i(t/2),o=0;o1?arguments[1]:undefined,1),n=this.length,o=i(e),c=r(o.length),u=0;if(c+t>n)throw RangeError("Wrong length");for(;ua;)d[a]=n[a++];return d}),a((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var o=n(7),r=n(17).some,a=o.aTypedArray;(0,o.exportTypedArrayMethod)("some",(function(e){return r(a(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var o=n(7),r=o.aTypedArray,a=o.exportTypedArrayMethod,i=[].sort;a("sort",(function(e){return i.call(r(this),e)}))},function(e,t,n){"use strict";var o=n(7),r=n(10),a=n(41),i=n(45),c=o.aTypedArray;(0,o.exportTypedArrayMethod)("subarray",(function(e,t){var n=c(this),o=n.length,l=a(e,o);return new(i(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,r((t===undefined?o:a(t,o))-l))}))},function(e,t,n){"use strict";var o=n(5),r=n(7),a=n(4),i=o.Int8Array,c=r.aTypedArray,l=r.exportTypedArrayMethod,u=[].toLocaleString,d=[].slice,s=!!i&&a((function(){u.call(new i(1))}));l("toLocaleString",(function(){return u.apply(s?d.call(c(this)):c(this),arguments)}),a((function(){return[1,2].toLocaleString()!=new i([1,2]).toLocaleString()}))||!a((function(){i.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var o=n(7).exportTypedArrayMethod,r=n(4),a=n(5).Uint8Array,i=a&&a.prototype||{},c=[].toString,l=[].join;r((function(){c.call({})}))&&(c=function(){return l.call(this)});var u=i.toString!=c;o("toString",c,u)},function(e,t,n){"use strict";var o,r=n(5),a=n(66),i=n(50),c=n(78),l=n(153),u=n(6),d=n(34).enforce,s=n(121),p=!r.ActiveXObject&&"ActiveXObject"in r,m=Object.isExtensible,f=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},h=e.exports=c("WeakMap",f,l);if(s&&p){o=l.getConstructor(f,"WeakMap",!0),i.REQUIRED=!0;var C=h.prototype,g=C["delete"],b=C.has,v=C.get,N=C.set;a(C,{"delete":function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),g.call(this,e)||t.frozen["delete"](e)}return g.call(this,e)},has:function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),b.call(this,e)||t.frozen.has(e)}return b.call(this,e)},get:function(e){if(u(e)&&!m(e)){var t=d(this);return t.frozen||(t.frozen=new o),b.call(this,e)?v.call(this,e):t.frozen.get(e)}return v.call(this,e)},set:function(e,t){if(u(e)&&!m(e)){var n=d(this);n.frozen||(n.frozen=new o),b.call(this,e)?N.call(this,e,t):n.frozen.set(e,t)}else N.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(78)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(153))},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(106);o({global:!0,bind:!0,enumerable:!0,forced:!r.setImmediate||!r.clearImmediate},{setImmediate:a.set,clearImmediate:a.clear})},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(147),i=n(32),c=r.process,l="process"==i(c);o({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=l&&c.domain;a(t?t.bind(e):e)}})},function(e,t,n){"use strict";var o=n(0),r=n(5),a=n(73),i=[].slice,c=function(e){return function(t,n){var o=arguments.length>2,r=o?i.call(arguments,2):undefined;return e(o?function(){("function"==typeof t?t:Function(t)).apply(this,r)}:t,n)}};o({global:!0,bind:!0,forced:/MSIE .\./.test(a)},{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(e,t,n){"use strict";t.__esModule=!0,t._CI=Ie,t._HI=D,t._M=Te,t._MCCC=Me,t._ME=Pe,t._MFCC=Oe,t._MP=Be,t._MR=Ne,t.__render=ze,t.createComponentVNode=function(e,t,n,o,r){var i=new T(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),o,function(e,t,n){var o=(32768&e?t.render:t).defaultProps;if(a(o))return n;if(a(n))return d(o,null);return B(n,o)}(e,t,n),function(e,t,n){if(4&e)return n;var o=(32768&e?t.render:t).defaultHooks;if(a(o))return n;if(a(n))return o;return B(n,o)}(e,t,r),t);k.createVNode&&k.createVNode(i);return i},t.createFragment=E,t.createPortal=function(e,t){var n=D(e);return A(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,o,r){e||(e=t),He(n,e,o,r)}},t.createTextVNode=P,t.createVNode=A,t.directClone=M,t.findDOMfromVNode=N,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case m:return 8192;default:return 1}},t.linkEvent=function(e,t){if(c(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&a(e.children)&&F(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?d(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=He,t.rerender=We,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var o=Array.isArray;function r(e){var t=typeof e;return"string"===t||"number"===t}function a(e){return null==e}function i(e){return null===e||!1===e||!0===e||void 0===e}function c(e){return"function"==typeof e}function l(e){return"string"==typeof e}function u(e){return null===e}function d(e,t){var n={};if(e)for(var o in e)n[o]=e[o];if(t)for(var r in t)n[r]=t[r];return n}function s(e){return!u(e)&&"object"==typeof e}var p={};t.EMPTY_OBJ=p;var m="$F";function f(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function C(e,t,n){u(n)?h(e,t):e.insertBefore(t,n)}function g(e,t){e.removeChild(t)}function b(e){for(var t;(t=e.shift())!==undefined;)t()}function v(e,t,n){var o=e.children;return 4&n?o.$LI:8192&n?2===e.childFlags?o:o[t?0:o.length-1]:o}function N(e,t){for(var n;e;){if(2033&(n=e.flags))return e.dom;e=v(e,t,n)}return null}function V(e,t){do{var n=e.flags;if(2033&n)return void g(t,e.dom);var o=e.children;if(4&n&&(e=o.$LI),8&n&&(e=o),8192&n){if(2!==e.childFlags){for(var r=0,a=o.length;r0,f=u(p),h=l(p)&&p[0]===I;m||f||h?(n=n||t.slice(0,d),(m||h)&&(s=M(s)),(f||h)&&(s.key=I+d),n.push(s)):n&&n.push(s),s.flags|=65536}}a=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=M(t)),a=2;return e.children=n,e.childFlags=a,e}function D(e){return i(e)||r(e)?P(e,null):o(e)?E(e,0,null):16384&e.flags?M(e):e}var j="http://www.w3.org/1999/xlink",z="http://www.w3.org/XML/1998/namespace",H={"xlink:actuate":j,"xlink:arcrole":j,"xlink:href":j,"xlink:role":j,"xlink:show":j,"xlink:title":j,"xlink:type":j,"xml:base":z,"xml:lang":z,"xml:space":z};function G(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var U=G(0),K=G(null),Y=G(!0);function q(e,t){var n=t.$EV;return n||(n=t.$EV=G(null)),n[e]||1==++U[e]&&(K[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?$(t,!0,e,Z(t)):t.stopPropagation()}}(e):function(e){return function(t){$(t,!1,e,Z(t))}}(e);return document.addEventListener(f(e),t),t}(e)),n}function W(e,t){var n=t.$EV;n&&n[e]&&(0==--U[e]&&(document.removeEventListener(f(e),K[e]),K[e]=null),n[e]=null)}function $(e,t,n,o){var r=function(e){return c(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&r.disabled)return;var a=r.$EV;if(a){var i=a[n];if(i&&(o.dom=r,i.event?i.event(i.data,e):i(e),e.cancelBubble))return}r=r.parentNode}while(!u(r))}function Q(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function X(){return this.defaultPrevented}function J(){return this.cancelBubble}function Z(e){var t={dom:document};return e.isDefaultPrevented=X,e.isPropagationStopped=J,e.stopPropagation=Q,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function ee(e,t,n){if(e[t]){var o=e[t];o.event?o.event(o.data,n):o(n)}else{var r=t.toLowerCase();e[r]&&e[r](n)}}function te(e,t){var n=function(n){var o=this.$V;if(o){var r=o.props||p,a=o.dom;if(l(e))ee(r,e,n);else for(var i=0;i-1&&t.options[i]&&(c=t.options[i].value),n&&a(c)&&(c=e.defaultValue),le(o,c)}}var se,pe,me=te("onInput",he),fe=te("onChange");function he(e,t,n){var o=e.value,r=t.value;if(a(o)){if(n){var i=e.defaultValue;a(i)||i===r||(t.defaultValue=i,t.value=i)}}else r!==o&&(t.defaultValue=o,t.value=o)}function Ce(e,t,n,o,r,a){64&e?ce(o,n):256&e?de(o,n,r,t):128&e&&he(o,n,r),a&&(n.$V=t)}function ge(e,t,n){64&e?function(e,t){oe(t.type)?(ne(e,"change",ae),ne(e,"click",ie)):ne(e,"input",re)}(t,n):256&e?function(e){ne(e,"change",ue)}(t):128&e&&function(e,t){ne(e,"input",me),t.onChange&&ne(e,"change",fe)}(t,n)}function be(e){return e.type&&oe(e.type)?!a(e.checked):!a(e.value)}function ve(e){e&&!S(e,null)&&e.current&&(e.current=null)}function Ne(e,t,n){e&&(c(e)||void 0!==e.current)&&n.push((function(){S(e,t)||void 0===e.current||(e.current=t)}))}function Ve(e,t){ye(e),V(e,t)}function ye(e){var t,n=e.flags,o=e.children;if(481&n){t=e.ref;var r=e.props;ve(t);var i=e.childFlags;if(!u(r))for(var l=Object.keys(r),d=0,s=l.length;d0;for(var c in i&&(a=be(n))&&ge(t,o,n),n)we(c,null,n[c],o,r,a,null);i&&Ce(t,e,o,n,!0,a)}function Se(e,t,n){var o=D(e.render(t,e.state,n)),r=n;return c(e.getChildContext)&&(r=d(n,e.getChildContext())),e.$CX=r,o}function Ie(e,t,n,o,r,a){var i=new t(n,o),l=i.$N=Boolean(t.getDerivedStateFromProps||i.getSnapshotBeforeUpdate);if(i.$SVG=r,i.$L=a,e.children=i,i.$BS=!1,i.context=o,i.props===p&&(i.props=n),l)i.state=_(i,n,i.state);else if(c(i.componentWillMount)){i.$BR=!0,i.componentWillMount();var d=i.$PS;if(!u(d)){var s=i.state;if(u(s))i.state=d;else for(var m in d)s[m]=d[m];i.$PS=null}i.$BR=!1}return i.$LI=Se(i,n,o),i}function Te(e,t,n,o,r,a){var i=e.flags|=16384;481&i?Pe(e,t,n,o,r,a):4&i?function(e,t,n,o,r,a){var i=Ie(e,e.type,e.props||p,n,o,a);Te(i.$LI,t,i.$CX,o,r,a),Me(e.ref,i,a)}(e,t,n,o,r,a):8&i?(!function(e,t,n,o,r,a){Te(e.children=D(function(e,t){return 32768&e.flags?e.type.render(e.props||p,e.ref,t):e.type(e.props||p,t)}(e,n)),t,n,o,r,a)}(e,t,n,o,r,a),Oe(e,a)):512&i||16&i?Ae(e,t,r):8192&i?function(e,t,n,o,r,a){var i=e.children,c=e.childFlags;12&c&&0===i.length&&(c=e.childFlags=2,i=e.children=O());2===c?Te(i,n,r,o,r,a):Ee(i,n,t,o,r,a)}(e,n,t,o,r,a):1024&i&&function(e,t,n,o,r){Te(e.children,e.ref,t,!1,null,r);var a=O();Ae(a,n,o),e.dom=a.dom}(e,n,t,r,a)}function Ae(e,t,n){var o=e.dom=document.createTextNode(e.children);u(t)||C(t,o,n)}function Pe(e,t,n,o,r,i){var c=e.flags,l=e.props,d=e.className,s=e.children,p=e.childFlags,m=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,o=o||(32&c)>0);if(a(d)||""===d||(o?m.setAttribute("class",d):m.className=d),16===p)L(m,s);else if(1!==p){var f=o&&"foreignObject"!==e.type;2===p?(16384&s.flags&&(e.children=s=M(s)),Te(s,m,n,f,null,i)):8!==p&&4!==p||Ee(s,m,n,f,null,i)}u(t)||C(t,m,r),u(l)||Be(e,c,l,m,o),Ne(e.ref,m,i)}function Ee(e,t,n,o,r,a){for(var i=0;i0,u!==d){var f=u||p;if((c=d||p)!==p)for(var h in(s=(448&r)>0)&&(m=be(c)),c){var C=f[h],g=c[h];C!==g&&we(h,C,g,l,o,m,e)}if(f!==p)for(var b in f)a(c[b])&&!a(f[b])&&we(b,f[b],null,l,o,m,e)}var v=t.children,N=t.className;e.className!==N&&(a(N)?l.removeAttribute("class"):o?l.setAttribute("class",N):l.className=N);4096&r?function(e,t){e.textContent!==t&&(e.textContent=t)}(l,v):Fe(e.childFlags,t.childFlags,e.children,v,l,n,o&&"foreignObject"!==t.type,null,e,i);s&&Ce(r,t,l,c,!1,m);var V=t.ref,y=e.ref;y!==V&&(ve(y),Ne(V,l,i))}(e,t,o,r,m,s):4&m?function(e,t,n,o,r,a,i){var l=t.children=e.children;if(u(l))return;l.$L=i;var s=t.props||p,m=t.ref,f=e.ref,h=l.state;if(!l.$N){if(c(l.componentWillReceiveProps)){if(l.$BR=!0,l.componentWillReceiveProps(s,o),l.$UN)return;l.$BR=!1}u(l.$PS)||(h=d(h,l.$PS),l.$PS=null)}De(l,h,s,n,o,r,!1,a,i),f!==m&&(ve(f),Ne(m,l,i))}(e,t,n,o,r,l,s):8&m?function(e,t,n,o,r,i,l){var u=!0,d=t.props||p,s=t.ref,m=e.props,f=!a(s),h=e.children;f&&c(s.onComponentShouldUpdate)&&(u=s.onComponentShouldUpdate(m,d));if(!1!==u){f&&c(s.onComponentWillUpdate)&&s.onComponentWillUpdate(m,d);var C=t.type,g=D(32768&t.flags?C.render(d,s,o):C(d,o));Re(h,g,n,o,r,i,l),t.children=g,f&&c(s.onComponentDidUpdate)&&s.onComponentDidUpdate(m,d)}else t.children=h}(e,t,n,o,r,l,s):16&m?function(e,t){var n=t.children,o=t.dom=e.dom;n!==e.children&&(o.nodeValue=n)}(e,t):512&m?t.dom=e.dom:8192&m?function(e,t,n,o,r,a){var i=e.children,c=t.children,l=e.childFlags,u=t.childFlags,d=null;12&u&&0===c.length&&(u=t.childFlags=2,c=t.children=O());var s=0!=(2&u);if(12&l){var p=i.length;(8&l&&8&u||s||!s&&c.length>p)&&(d=N(i[p-1],!1).nextSibling)}Fe(l,u,i,c,n,o,r,d,e,a)}(e,t,n,o,r,s):function(e,t,n,o){var r=e.ref,a=t.ref,c=t.children;if(Fe(e.childFlags,t.childFlags,e.children,c,r,n,!1,null,e,o),t.dom=e.dom,r!==a&&!i(c)){var l=c.dom;g(r,l),h(a,l)}}(e,t,o,s)}function Fe(e,t,n,o,r,a,i,c,l,u){switch(e){case 2:switch(t){case 2:Re(n,o,r,a,i,c,u);break;case 1:Ve(n,r);break;case 16:ye(n),L(r,o);break;default:!function(e,t,n,o,r,a){ye(e),Ee(t,n,o,r,N(e,!0),a),V(e,n)}(n,o,r,a,i,u)}break;case 1:switch(t){case 2:Te(o,r,a,i,c,u);break;case 1:break;case 16:L(r,o);break;default:Ee(o,r,a,i,c,u)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:L(n,t))}(n,o,r);break;case 2:xe(r),Te(o,r,a,i,c,u);break;case 1:xe(r);break;default:xe(r),Ee(o,r,a,i,c,u)}break;default:switch(t){case 16:_e(n),L(r,o);break;case 2:ke(r,l,n),Te(o,r,a,i,c,u);break;case 1:ke(r,l,n);break;default:var d=0|n.length,s=0|o.length;0===d?s>0&&Ee(o,r,a,i,c,u):0===s?ke(r,l,n):8===t&&8===e?function(e,t,n,o,r,a,i,c,l,u){var d,s,p=a-1,m=i-1,f=0,h=e[f],C=t[f];e:{for(;h.key===C.key;){if(16384&C.flags&&(t[f]=C=M(C)),Re(h,C,n,o,r,c,u),e[f]=C,++f>p||f>m)break e;h=e[f],C=t[f]}for(h=e[p],C=t[m];h.key===C.key;){if(16384&C.flags&&(t[m]=C=M(C)),Re(h,C,n,o,r,c,u),e[p]=C,p--,m--,f>p||f>m)break e;h=e[p],C=t[m]}}if(f>p){if(f<=m)for(s=(d=m+1)m)for(;f<=p;)Ve(e[f++],n);else!function(e,t,n,o,r,a,i,c,l,u,d,s,p){var m,f,h,C=0,g=c,b=c,v=a-c+1,V=i-c+1,_=new Int32Array(V+1),x=v===o,k=!1,L=0,w=0;if(r<4||(v|V)<32)for(C=g;C<=a;++C)if(m=e[C],wc?k=!0:L=c,16384&f.flags&&(t[c]=f=M(f)),Re(m,f,l,n,u,d,p),++w;break}!x&&c>i&&Ve(m,l)}else x||Ve(m,l);else{var B={};for(C=b;C<=i;++C)B[t[C].key]=C;for(C=g;C<=a;++C)if(m=e[C],wg;)Ve(e[g++],l);_[c-b]=C+1,L>c?k=!0:L=c,16384&(f=t[c]).flags&&(t[c]=f=M(f)),Re(m,f,l,n,u,d,p),++w}else x||Ve(m,l);else x||Ve(m,l)}if(x)ke(l,s,e),Ee(t,l,n,u,d,p);else if(k){var S=function(e){var t=0,n=0,o=0,r=0,a=0,i=0,c=0,l=e.length;l>je&&(je=l,se=new Int32Array(l),pe=new Int32Array(l));for(;n>1]]0&&(pe[n]=se[a-1]),se[a]=n)}a=r+1;var u=new Int32Array(a);i=se[a-1];for(;a-- >0;)u[a]=i,i=pe[i],se[a]=0;return u}(_);for(c=S.length-1,C=V-1;C>=0;C--)0===_[C]?(16384&(f=t[L=C+b]).flags&&(t[L]=f=M(f)),Te(f,l,n,u,(h=L+1)=0;C--)0===_[C]&&(16384&(f=t[L=C+b]).flags&&(t[L]=f=M(f)),Te(f,l,n,u,(h=L+1)i?i:a,p=0;pi)for(p=s;p0&&b(r),x.v=!1,c(n)&&n(),c(k.renderComplete)&&k.renderComplete(i,t)}function He(e,t,n,o){void 0===n&&(n=null),void 0===o&&(o=p),ze(e,t,n,o)}"undefined"!=typeof document&&window.Node&&(Node.prototype.$EV=null,Node.prototype.$V=null);var Ge=[],Ue="undefined"!=typeof Promise?Promise.resolve().then.bind(Promise.resolve()):function(e){window.setTimeout(e,0)},Ke=!1;function Ye(e,t,n,o){var r=e.$PS;if(c(t)&&(t=t(r?d(e.state,r):e.state,e.props,e.context)),a(r))e.$PS=t;else for(var i in t)r[i]=t[i];if(e.$BR)c(n)&&e.$L.push(n.bind(e));else{if(!x.v&&0===Ge.length)return void $e(e,o,n);if(-1===Ge.indexOf(e)&&Ge.push(e),Ke||(Ke=!0,Ue(We)),c(n)){var l=e.$QU;l||(l=e.$QU=[]),l.push(n)}}}function qe(e){for(var t=e.$QU,n=0,o=t.length;n0&&b(r),x.v=!1}else e.state=e.$PS,e.$PS=null;c(n)&&n.call(e)}}var Qe=function(e,t){this.state=null,this.$BR=!1,this.$BS=!0,this.$PS=null,this.$LI=null,this.$UN=!1,this.$CX=null,this.$QU=null,this.$N=!1,this.$L=null,this.$SVG=!1,this.props=e||p,this.context=t||p};t.Component=Qe,Qe.prototype.forceUpdate=function(e){this.$UN||Ye(this,{},e,!0)},Qe.prototype.setState=function(e,t){this.$UN||this.$BS||Ye(this,e,t,!1)},Qe.prototype.render=function(e,t,n){return null};t.version="7.3.3"},function(e,t,n){"use strict";var o=function(e){var t,n=Object.prototype,o=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",c=r.toStringTag||"@@toStringTag";function l(e,t,n,o){var r=t&&t.prototype instanceof h?t:h,a=Object.create(r.prototype),i=new w(o||[]);return a._invoke=function(e,t,n){var o=d;return function(r,a){if(o===p)throw new Error("Generator is already running");if(o===m){if("throw"===r)throw a;return S()}for(n.method=r,n.arg=a;;){var i=n.delegate;if(i){var c=x(i,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=p;var l=u(e,t,n);if("normal"===l.type){if(o=n.done?m:s,l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=m,n.method="throw",n.arg=l.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(o){return{type:"throw",arg:o}}}e.wrap=l;var d="suspendedStart",s="suspendedYield",p="executing",m="completed",f={};function h(){}function C(){}function g(){}var b={};b[a]=function(){return this};var v=Object.getPrototypeOf,N=v&&v(v(B([])));N&&N!==n&&o.call(N,a)&&(b=N);var V=g.prototype=h.prototype=Object.create(b);function y(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function _(e){var t;this._invoke=function(n,r){function a(){return new Promise((function(t,a){!function i(t,n,r,a){var c=u(e[t],e,n);if("throw"!==c.type){var l=c.arg,d=l.value;return d&&"object"==typeof d&&o.call(d,"__await")?Promise.resolve(d.__await).then((function(e){i("next",e,r,a)}),(function(e){i("throw",e,r,a)})):Promise.resolve(d).then((function(e){l.value=e,r(l)}),(function(e){return i("throw",e,r,a)}))}a(c.arg)}(n,r,t,a)}))}return t=t?t.then(a,a):a()}}function x(e,n){var o=e.iterator[n.method];if(o===t){if(n.delegate=null,"throw"===n.method){if(e.iterator["return"]&&(n.method="return",n.arg=t,x(e,n),"throw"===n.method))return f;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var r=u(o,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,f;var a=r.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,f):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function B(e){if(e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function n(){for(;++r=0;--a){var i=this.tryEntries[a],c=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=o.call(i,"catchLoc"),u=o.call(i,"finallyLoc");if(l&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),f}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,o){return this.delegate={iterator:B(e),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=t),f}},e}(e.exports);try{regeneratorRuntime=o}catch(r){Function("r","regeneratorRuntime = r")(o)}},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},function(e,t,n){"use strict";(function(e){
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
-var n;n=void 0!==e?e:void 0,t.loadCSS=function(e,t,o,r){var a,i=n.document,c=i.createElement("link");if(t)a=t;else{var l=(i.body||i.getElementsByTagName("head")[0]).childNodes;a=l[l.length-1]}var u=i.styleSheets;if(r)for(var d in r)r.hasOwnProperty(d)&&c.setAttribute(d,r[d]);c.rel="stylesheet",c.href=e,c.media="only x",function m(e){if(i.body)return e();setTimeout((function(){m(e)}))}((function(){a.parentNode.insertBefore(c,t?a:a.nextSibling)}));var s=function f(e){for(var t=c.href,n=u.length;n--;)if(u[n].href===t)return e();setTimeout((function(){f(e)}))};function p(){c.addEventListener&&c.removeEventListener("load",p),c.media=o||"all"}return c.addEventListener&&c.addEventListener("load",p),c.onloadcssdefined=s,s(p),c}}).call(this,n(118))},function(e,t,n){"use strict";t.__esModule=!0,t.Achievements=t.Score=t.Achievement=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=e.name,n=e.desc,r=e.icon_class,i=e.value;return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Box,{className:r}),2,{style:{padding:"6px"}}),(0,o.createVNode)(1,"td",null,[(0,o.createVNode)(1,"h1",null,t,0),n,(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",content:i?"Unlocked":"Locked"})],0,{style:{"vertical-align":"top"}})],4,null,t)};t.Achievement=i;var c=function(e){var t=e.name,n=e.desc,r=e.icon_class,i=e.value;return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Box,{className:r}),2,{style:{padding:"6px"}}),(0,o.createVNode)(1,"td",null,[(0,o.createVNode)(1,"h1",null,t,0),n,(0,o.createComponentVNode)(2,a.Box,{color:i>0?"good":"bad",content:i>0?"Earned "+i+" times":"Locked"})],0,{style:{"vertical-align":"top"}})],4,null,t)};t.Score=c;t.Achievements=function(e){var t=(0,r.useBackend)(e).data;return(0,o.createComponentVNode)(2,a.Tabs,{children:[t.categories.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e,children:(0,o.createComponentVNode)(2,a.Box,{as:"Table",children:t.achievements.filter((function(t){return t.category===e})).map((function(e){return e.score?(0,o.createComponentVNode)(2,c,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name):(0,o.createComponentVNode)(2,i,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name)}))})},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"High Scores",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:t.highscore.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e.name,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Score"})]}),Object.keys(e.scores).map((function(n,r){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:r+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:n===t.user_ckey&&"green",textAlign:"center",children:[0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",mr:2}),n,0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.scores[n]})]},n)}))]})},e.name)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.BlockQuote=void 0;var o=n(1),r=n(12),a=n(17);t.BlockQuote=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var o,r;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=o,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(o||(t.VNodeFlags=o={})),t.ChildFlags=r,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(r||(t.ChildFlags=r={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(1),r=n(12),a=n(17);var i=function(e){var t=e.color,n=e.content,i=e.className,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["color","content","className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["ColorBox",i]),color:n?null:"transparent",backgroundColor:t,content:n||"."},c)))};t.ColorBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Collapsible=void 0;var o=n(1),r=n(17),a=n(114);var i=function(e){var t,n;function i(t){var n;n=e.call(this,t)||this;var o=t.open;return n.state={open:o||!1},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.props,n=this.state.open,i=t.children,c=t.color,l=void 0===c?"default":c,u=t.title,d=t.buttons,s=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(t,["children","color","title","buttons"]);return(0,o.createComponentVNode)(2,r.Box,{mb:1,children:[(0,o.createVNode)(1,"div","Table",[(0,o.createVNode)(1,"div","Table__cell",(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({fluid:!0,color:l,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},s,{children:u}))),2),d&&(0,o.createVNode)(1,"div","Table__cell Table__cell--collapsing",d,0)],0),n&&(0,o.createComponentVNode)(2,r.Box,{mt:1,children:i})]})},i}(o.Component);t.Collapsible=i},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var o=n(1),r=n(17);t.Dimmer=function(e){var t=e.style,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Box,Object.assign({style:Object.assign({position:"absolute",top:0,bottom:0,left:0,right:0,"background-color":"rgba(0, 0, 0, 0.75)","z-index":1},t)},n)))}},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(1),r=n(12),a=n(17),i=n(87);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t,n;function l(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},u.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},u.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},u.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(n){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},u.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,u=t.over,d=t.width,s=(t.onClick,t.selected,c(t,["color","over","width","onClick","selected"])),p=s.className,m=c(s,["className"]),f=u?!this.state.open:this.state.open,h=this.state.open?(0,o.createVNode)(1,"div",(0,r.classes)(["Dropdown__menu",u&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({width:d,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,p])},m,{onClick:function(t){e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,i.Icon,{name:f?"chevron-up":"chevron-down"}),2)]}))),h],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var o=n(1),r=n(12),a=n(17);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.className,n=e.direction,o=e.wrap,a=e.align,c=e.justify,l=e.spacing,u=void 0===l?0:l,d=i(e,["className","direction","wrap","align","justify","spacing"]);return Object.assign({className:(0,r.classes)(["Flex",u>0&&"Flex--spacing--"+u,t]),style:Object.assign({},d.style,{"flex-direction":n,"flex-wrap":o,"align-items":a,"justify-content":c})},d)};t.computeFlexProps=c;var l=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},c(e))))};t.Flex=l,l.defaultHooks=r.pureComponentHooks;var u=function(e){var t=e.className,n=e.grow,o=e.order,a=e.align,c=i(e,["className","grow","order","align"]);return Object.assign({className:(0,r.classes)(["Flex__item",t]),style:Object.assign({},c.style,{"flex-grow":n,order:o,"align-self":a})},c)};t.computeFlexItemProps=u;var d=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},u(e))))};t.FlexItem=d,d.defaultHooks=r.pureComponentHooks,l.Item=d},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(1),r=n(12),a=n(17);var i=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["NoticeBox",t])},n)))};t.NoticeBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var o=n(1),r=n(20),a=n(12),i=n(19),c=n(158),l=n(17);var u=function(e){var t,n;function u(t){var n;n=e.call(this,t)||this;var a=t.value;return n.inputRef=(0,o.createRef)(),n.state={value:a,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,o=t.dragging,r=t.value,a=n.props.onDrag;o&&a&&a(e,r)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,o=t.minValue,a=t.maxValue,i=t.step,c=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),l=n.origin-e.screenY;if(t.dragging){var u=Number.isFinite(o)?o%i:0;n.internalValue=(0,r.clamp)(n.internalValue+l*i/c,o-i,a+i),n.value=(0,r.clamp)(n.internalValue-n.internalValue%i+u,o,a),n.origin=e.screenY}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,o=t.onChange,r=t.onDrag,a=n.state,i=a.dragging,c=a.value,l=a.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!i,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),i)n.suppressFlicker(),o&&o(e,c),r&&r(e,c);else if(n.inputRef){var u=n.inputRef.current;u.value=l;try{u.focus(),u.select()}catch(d){}}},n}return n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,u.prototype.render=function(){var e=this,t=this.state,n=t.dragging,u=t.editing,d=t.value,s=t.suppressingFlicker,p=this.props,m=p.className,f=p.fluid,h=p.animated,C=p.value,g=p.unit,b=p.minValue,v=p.maxValue,N=p.height,V=p.width,y=p.lineHeight,_=p.fontSize,x=p.format,k=p.onChange,L=p.onDrag,w=C;(n||s)&&(w=d);var B=function(e){return(0,o.createVNode)(1,"div","NumberInput__content",e+(g?" "+g:""),0,{unselectable:i.tridentVersion<=4})},S=h&&!n&&!s&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:w,format:x,children:B})||B(x?x(w):w);return(0,o.createComponentVNode)(2,l.Box,{className:(0,a.classes)(["NumberInput",f&&"NumberInput--fluid",m]),minWidth:V,minHeight:N,lineHeight:y,fontSize:_,onMouseDown:this.handleDragStart,children:[(0,o.createVNode)(1,"div","NumberInput__barContainer",(0,o.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,r.clamp)((w-b)/(v-b)*100,0,100)+"%"}}),2),S,(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:u?undefined:"none",height:N,"line-height":y,"font-size":_},onBlur:function(t){if(u){var n=(0,r.clamp)(t.target.value,b,v);e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),L&&L(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,r.clamp)(t.target.value,b,v);return e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),void(L&&L(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},u}(o.Component);t.NumberInput=u,u.defaultHooks=a.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var o=n(1),r=n(12),a=n(20),i=function(e){var t=e.value,n=e.minValue,i=void 0===n?0:n,c=e.maxValue,l=void 0===c?1:c,u=e.ranges,d=void 0===u?{}:u,s=e.content,p=e.children,m=(t-i)/(l-i),f=s!==undefined||p!==undefined,h=e.color;if(!h)for(var C=0,g=Object.keys(d);C=v[0]&&t<=v[1]){h=b;break}}return h||(h="default"),(0,o.createVNode)(1,"div",(0,r.classes)(["ProgressBar","ProgressBar--color--"+h]),[(0,o.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,a.clamp)(m,0,1)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",[f&&s,f&&p,!f&&(0,a.toFixed)(100*m)+"%"],0)],4)};t.ProgressBar=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(1),r=n(12),a=n(17);var i=function(e){var t=e.className,n=e.title,i=e.level,c=void 0===i?1:i,l=e.buttons,u=e.content,d=e.children,s=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","content","children"]),p=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),m=!(0,r.isFalsy)(u)||!(0,r.isFalsy)(d);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Section","Section--level--"+c,t])},s,{children:[p&&(0,o.createVNode)(1,"div","Section__title",[(0,o.createVNode)(1,"span","Section__titleText",n,0),(0,o.createVNode)(1,"div","Section__buttons",l,0)],4),m&&(0,o.createVNode)(1,"div","Section__content",[u,d],0)]})))};t.Section=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Tab=t.Tabs=void 0;var o=n(1),r=n(12),a=n(17),i=n(114);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e,n=Array.isArray(t),o=0;for(t=n?t:t[Symbol.iterator]();;){var r;if(n){if(o>=t.length)break;r=t[o++]}else{if((o=t.next()).done)break;r=o.value}var a=r;if(!a.props||"Tab"!==a.props.__type__){var i=JSON.stringify(a,null,2);throw new Error(" only accepts children of type .This is what we received: "+i)}}},u=function(e){var t,n;function u(t){var n;return(n=e.call(this,t)||this).state={activeTabKey:null},n}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=u.prototype;return d.getActiveTab=function(){var e=this.state,t=this.props,n=(0,r.normalizeChildren)(t.children);l(n);var o=t.activeTab||e.activeTabKey,a=n.find((function(e){return(e.key||e.props.label)===o}));return a||(a=n[0],o=a&&(a.key||a.props.label)),{tabs:n,activeTab:a,activeTabKey:o}},d.render=function(){var e=this,t=this.props,n=t.className,l=t.vertical,u=(t.children,c(t,["className","vertical","children"])),d=this.getActiveTab(),s=d.tabs,p=d.activeTab,m=d.activeTabKey,f=null;return p&&(f=p.props.content||p.props.children),"function"==typeof f&&(f=f(m)),(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Tabs",l&&"Tabs--vertical",n])},u,{children:[(0,o.createVNode)(1,"div","Tabs__tabBox",s.map((function(t){var n=t.props,a=n.className,l=n.label,u=(n.content,n.children,n.onClick),d=n.highlight,s=c(n,["className","label","content","children","onClick","highlight"]),p=t.key||t.props.label,f=t.active||p===m;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",f&&"Tabs__tab--active",d&&!f&&"color-yellow",a]),selected:f,color:"transparent",onClick:function(n){e.setState({activeTabKey:p}),u&&u(n,t)}},s,{children:l}),p))})),0),(0,o.createVNode)(1,"div","Tabs__content",f||null,0)]})))},u}(o.Component);t.Tabs=u;var d=function(e){return null};t.Tab=d,d.defaultProps={__type__:"Tab"},u.Tab=d},function(e,t,n){"use strict";t.__esModule=!0,t.TitleBar=void 0;var o=n(1),r=n(12),a=n(29),i=n(19),c=n(37),l=n(87),u=function(e){switch(e){case c.UI_INTERACTIVE:return"good";case c.UI_UPDATE:return"average";case c.UI_DISABLED:default:return"bad"}},d=function(e){var t=e.className,n=e.title,c=e.status,d=e.fancy,s=e.onDragStart,p=e.onClose;return(0,o.createVNode)(1,"div",(0,r.classes)(["TitleBar",t]),[(0,o.createComponentVNode)(2,l.Icon,{className:"TitleBar__statusIcon",color:u(c),name:"eye"}),(0,o.createVNode)(1,"div","TitleBar__title",n===n.toLowerCase()?(0,a.toTitleCase)(n):n,0),(0,o.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return d&&s(e)}}),!!d&&(0,o.createVNode)(1,"div","TitleBar__close TitleBar__clickable",i.tridentVersion<=4?"x":"\xd7",0,{onclick:p})],0)};t.TitleBar=d,d.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Chart=void 0;var o=n(1),r=n(23),a=n(17),i=n(12),c=n(19);var l=function(e,t,n,o){if(0===e.length)return[];var a=(0,r.zipWith)(Math.min).apply(void 0,e),i=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(a[0]=n[0],i[0]=n[1]),o!==undefined&&(a[1]=o[0],i[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,a,i,t)}))(e)},u=function(e){for(var t="",n=0;n=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),g=this.state.viewBox,b=l(r,g,i,c);if(b.length>0){var v=b[0],N=b[b.length-1];b.push([g[0]+h,N[1]]),b.push([g[0]+h,-h]),b.push([-h,-h]),b.push([-h,v[1]])}var V=u(b);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({position:"relative"},C,{children:function(t){return(0,o.normalizeProps)((0,o.createVNode)(1,"div",null,(0,o.createVNode)(32,"svg",null,(0,o.createVNode)(32,"polyline",null,null,1,{transform:"scale(1, -1) translate(0, -"+g[1]+")",fill:s,stroke:m,"stroke-width":h,points:V}),2,{viewBox:"0 0 "+g[0]+" "+g[1],preserveAspectRatio:"none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"hidden"}}),2,Object.assign({},t),null,e.ref))}})))},r}(o.Component);d.defaultHooks=i.pureComponentHooks;var s={Line:c.tridentVersion<=4?function(e){return null}:d};t.Chart=s},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(1),r=n(3),a=n(2);t.AiAirlock=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}},l=c[i.power.main]||c[0],u=c[i.power.backup]||c[0],d=c[i.shock]||c[0];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:l.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.main,content:"Disrupt",onClick:function(){return n("disrupt-main")}}),children:[i.power.main?"Online":"Offline"," ",i.wires.main_1&&i.wires.main_2?i.power.main_timeleft>0&&"["+i.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.backup,content:"Disrupt",onClick:function(){return n("disrupt-backup")}}),children:[i.power.backup?"Online":"Offline"," ",i.wires.backup_1&&i.wires.backup_2?i.power.backup_timeleft>0&&"["+i.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:d.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(i.wires.shock&&0===i.shock),content:"Restore",onClick:function(){return n("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Temporary",onClick:function(){return n("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Permanent",onClick:function(){return n("shock-perm")}})],4),children:[2===i.shock?"Safe":"Electrified"," ",(i.wires.shock?i.shock_timeleft>0&&"["+i.shock_timeleft+"s]":"[Wires have been cut!]")||-1===i.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.id_scanner?"power-off":"times",content:i.id_scanner?"Enabled":"Disabled",selected:i.id_scanner,disabled:!i.wires.id_scanner,onClick:function(){return n("idscan-toggle")}}),children:!i.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.emergency?"power-off":"times",content:i.emergency?"Enabled":"Disabled",selected:i.emergency,onClick:function(){return n("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.locked?"lock":"unlock",content:i.locked?"Lowered":"Raised",selected:i.locked,disabled:!i.wires.bolts,onClick:function(){return n("bolt-toggle")}}),children:!i.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.lights?"power-off":"times",content:i.lights?"Enabled":"Disabled",selected:i.lights,disabled:!i.wires.lights,onClick:function(){return n("light-toggle")}}),children:!i.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.safe?"power-off":"times",content:i.safe?"Enabled":"Disabled",selected:i.safe,disabled:!i.wires.safe,onClick:function(){return n("safe-toggle")}}),children:!i.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.speed?"power-off":"times",content:i.speed?"Enabled":"Disabled",selected:i.speed,disabled:!i.wires.timing,onClick:function(){return n("speed-toggle")}}),children:!i.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.opened?"sign-out-alt":"sign-in-alt",content:i.opened?"Open":"Closed",selected:i.opened,disabled:i.locked||i.welded,onClick:function(){return n("open-close")}}),children:!(!i.locked&&!i.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),i.locked?"bolted":"",i.locked&&i.welded?" and ":"",i.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(1),r=n(20),a=n(29),i=n(3),c=n(2),l=n(37),u=n(69);t.AirAlarm=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.data,c=a.locked&&!a.siliconUser;return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.InterfaceLockNoticeBox,{siliconUser:a.siliconUser,locked:a.locked,onLockStatusChange:function(){return r("lock")}}),(0,o.createComponentVNode)(2,d,{state:t}),!c&&(0,o.createComponentVNode)(2,p,{state:t})],0)};var d=function(e){var t=(0,i.useBackend)(e).data,n=(t.environment_data||[]).filter((function(e){return e.value>=.01})),a={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},l=a[t.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[n.length>0&&(0,o.createFragment)([n.map((function(e){var t=a[e.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:l.color,children:l.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:t.atmos_alarm||t.fire_alarm?"bad":"good",children:(t.atmos_alarm?"Atmosphere Alarm":t.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!t.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return m}},vents:{title:"Vent Controls",component:function(){return f}},scrubbers:{title:"Scrubber Controls",component:function(){return C}},modes:{title:"Operating Mode",component:function(){return b}},thresholds:{title:"Alarm Thresholds",component:function(){return v}}},p=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.config,l=s[a.screen]||s.home,u=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:"home"!==a.screen&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("tgui:view",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,u,{state:t})})},m=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data,a=r.mode,l=r.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:l?"exclamation-triangle":"exclamation",color:l&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return n(l?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===a?"exclamation-triangle":"exclamation",color:3===a&&"danger",content:"Panic Siphon",onClick:function(){return n("mode",{mode:3===a?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return n("tgui:view",{screen:"vents"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return n("tgui:view",{screen:"scrubbers"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return n("tgui:view",{screen:"modes"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return n("tgui:view",{screen:"thresholds"})}})],4)},f=function(e){var t=e.state,n=(0,i.useBackend)(e).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},h=function(e){var t=e.id_tag,n=e.long_name,r=e.power,l=e.checks,u=e.excheck,d=e.incheck,s=e.direction,p=e.external,m=e.internal,f=e.extdefault,h=e.intdefault,C=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(n),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:r?"power-off":"times",selected:r,content:r?"On":"Off",onClick:function(){return C("power",{id_tag:t,val:Number(!r)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:"release"===s?"Pressurizing":"Releasing"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:d,onClick:function(){return C("incheck",{id_tag:t,val:l})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:u,onClick:function(){return C("excheck",{id_tag:t,val:l})}})]}),!!d&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(m),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_internal_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:h,content:"Reset",onClick:function(){return C("reset_internal_pressure",{id_tag:t})}})]}),!!u&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(p),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_external_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:f,content:"Reset",onClick:function(){return C("reset_external_pressure",{id_tag:t})}})]})]})})},C=function(e){var t=e.state,n=(0,i.useBackend)(e).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,g,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},g=function(e){var t=e.long_name,n=e.power,r=e.scrubbing,u=e.id_tag,d=e.widenet,s=e.filter_types,p=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(t),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:n?"power-off":"times",content:n?"On":"Off",selected:n,onClick:function(){return p("power",{id_tag:u,val:Number(!n)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:r?"filter":"sign-in-alt",color:r||"danger",content:r?"Scrubbing":"Siphoning",onClick:function(){return p("scrubbing",{id_tag:u,val:Number(!r)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:d?"expand":"compress",selected:d,content:d?"Expanded range":"Normal range",onClick:function(){return p("widenet",{id_tag:u,val:Number(!d)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:r&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,l.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return p("toggle_filter",{id_tag:u,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})},b=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data.modes;return r&&0!==r.length?r.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return n("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},v=function(e){var t=(0,i.useBackend)(e),n=t.act,a=t.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,a.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return n("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(1),r=n(3),a=n(2);t.AirlockElectronics=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.regions||[],l={0:{icon:"times-circle"},1:{icon:"stop-circle"},2:{icon:"check-circle"}};return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Main",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access Required",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.oneAccess?"unlock":"lock",content:i.oneAccess?"One":"All",onClick:function(){return n("one_access")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mass Modify",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"check-double",content:"Grant All",onClick:function(){return n("grant_all")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Clear All",onClick:function(){return n("clear_all")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unrestricted Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:1&i.unres_direction?"check-square-o":"square-o",content:"North",selected:1&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"1"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:2&i.unres_direction?"check-square-o":"square-o",content:"East",selected:2&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"2"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:4&i.unres_direction?"check-square-o":"square-o",content:"South",selected:4&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"4"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:8&i.unres_direction?"check-square-o":"square-o",content:"West",selected:8&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"8"})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access",children:(0,o.createComponentVNode)(2,a.Box,{height:"261px",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:c.map((function(e){var t=e.name,r=e.accesses||[],i=l[function(e){var t=!1,n=!1;return e.forEach((function(e){e.req?t=!0:n=!0})),!t&&n?0:t&&n?1:2}(r)].icon;return(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:i,label:t,children:function(){return r.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:e.req?"check-square-o":"square-o",content:e.name,selected:e.req,onClick:function(){return n("set",{access:e.id})}})},e.id)}))}},t)}))})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(1),r=n(3),a=n(2),i=n(69);t.Apc=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.locked&&!c.siliconUser,u={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},s=u[c.externalPower]||u[0],p=u[c.chargingStatus]||u[0],m=c.powerChannels||[],f=d[c.malfStatus]||d[0],h=c.powerCellStatus/100;return c.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",c.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return n("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{siliconUser:c.siliconUser,locked:c.locked,onLockStatusChange:function(){return n("lock")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",content:c.isOperating?"On":"Off",selected:c.isOperating&&!l,disabled:l,onClick:function(){return n("breaker")}}),children:["[ ",s.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.chargeMode?"sync":"close",content:c.chargeMode?"Auto":"Off",disabled:l,onClick:function(){return n("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[m.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!l&&(1===e.status||3===e.status),disabled:l,onClick:function(){return n("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!l&&2===e.status,disabled:l,onClick:function(){return n("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!l&&0===e.status,disabled:l,onClick:function(){return n("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,c.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!c.siliconUser&&(0,o.createFragment)([!!c.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:f.icon,content:f.content,color:"bad",onClick:function(){return n(f.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return n("overload")}})],0),children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.coverLocked?"lock":"unlock",content:c.coverLocked?"Engaged":"Disengaged",disabled:l,onClick:function(){return n("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.emergencyLights?"Enabled":"Disabled",disabled:l,onClick:function(){return n("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.nightshiftLights?"Enabled":"Disabled",disabled:l,onClick:function(){return n("toggle_nightshift")}})})]}),c.hijackable&&(0,o.createComponentVNode)(2,a.Section,{title:"Hijacking",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"unlock",content:"Hijack",disabled:c.hijacker,onClick:function(){return n("hijack")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lockdown",disabled:!c.lockdownavail,onClick:function(){return n("lockdown")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Drain",disabled:!c.drainavail,onClick:function(){return n("drain")}})],4)})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(1),r=n(3),a=n(2);t.AtmosAlertConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.priority||[],l=i.minor||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[c.length>0?c.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),l.length>0?l.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16)],0)})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(1),r=n(23),a=n(20),i=n(3),c=n(2);t.AtmosControlConsole=function(e){var t=(0,i.useBackend)(e),n=t.act,l=t.data,u=l.sensors||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:!!l.tank&&u[0].long_name,children:u.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,c.Section,{title:!l.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),l.tank&&(0,o.createComponentVNode)(2,c.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"undo",content:"Reconnect",onClick:function(){return n("reconnect")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.inputting?"power-off":"times",content:l.inputting?"Injecting":"Off",selected:l.inputting,onClick:function(){return n("input")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:l.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return n("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.outputting?"power-off":"times",content:l.outputting?"Open":"Closed",selected:l.outputting,onClick:function(){return n("output")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:parseFloat(l.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return n("pressure",{pressure:t})}})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(1),r=n(3),a=n(2),i=n(37);t.AtmosFilter=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.filter_types||[];return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.on?"power-off":"times",content:c.on?"On":"Off",selected:c.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(c.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:c.rate===c.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,i.getGasLabel)(e.id,e.name),onClick:function(){return n("filter",{mode:e.id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(1),r=n(3),a=n(2);t.AtmosMixer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.set_pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node2",{concentration:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(1),r=n(3),a=n(2);t.AtmosPump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),i.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.rate===i.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(1),r=n(3),a=n(2);t.BankMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.current_balance,l=i.siphoning,u=i.station_name;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:u+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"times":"sync",content:l?"Stop Siphoning":"Siphon Credits",selected:l,onClick:function(){return n(l?"halt":"siphon")}}),children:c+" cr"})})}),(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Authorized personnel only"})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BluespaceArtillery=void 0;var o=n(1),r=n(3),a=n(2);t.BluespaceArtillery=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.notice,l=i.connected,u=i.unlocked,d=i.target;return(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c}),l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Target",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"crosshairs",disabled:!u,onClick:function(){return n("recalibrate")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:d?"average":"bad",fontSize:"25px",children:d||"No Target Set"})}),(0,o.createComponentVNode)(2,a.Section,{children:u?(0,o.createComponentVNode)(2,a.Box,{style:{margin:"auto"},children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"FIRE",color:"bad",disabled:!d,fontSize:"30px",textAlign:"center",lineHeight:"46px",onClick:function(){return n("fire")}})}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"bad",fontSize:"18px",children:"Bluespace artillery is currently locked."}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"Awaiting authorization via keycard reader from at minimum two station heads."})],4)})],4):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:"Complete Deployment",onClick:function(){return n("build")}})})})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(1),r=(n(29),n(19)),a=n(2);t.Bepis=function(e){var t=e.state,n=t.config,i=t.data,c=n.ref,l=i.amount;return(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.manual_power?"Off":"On",selected:!i.manual_power,onClick:function(){return(0,r.act)(c,"toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return(0,r.act)(c,"account_reset")}}),children:["Console is currently being operated by ",i.account_owner?i.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:i.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[i.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:i.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:i.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return(0,r.act)(c,"amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===i.manual_power||1===i.silicon_check,onClick:function(){return(0,r.act)(c,"deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",i.mean_value]}),i.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"begin_experiment")},content:"Begin Testing"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.BorgPanel=void 0;var o=n(1),r=n(3),a=n(2);t.BorgPanel=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.borg||{},l=i.cell||{},u=l.charge/l.maxcharge,d=i.channels||[],s=i.modules||[],p=i.upgrades||[],m=i.ais||[],f=i.laws||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:c.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Rename",onClick:function(){return n("rename")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.emagged?"check-square-o":"square-o",content:"Emagged",selected:c.emagged,onClick:function(){return n("toggle_emagged")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.lockdown?"check-square-o":"square-o",content:"Locked Down",selected:c.lockdown,onClick:function(){return n("toggle_lockdown")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.scrambledcodes?"check-square-o":"square-o",content:"Scrambled Codes",selected:c.scrambledcodes,onClick:function(){return n("toggle_scrambledcodes")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:[l.missing?(0,o.createVNode)(1,"span","color-bad","No cell installed",16):(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,content:l.charge+" / "+l.maxcharge}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("set_charge")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Change",onClick:function(){return n("change_cell")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Remove",color:"bad",onClick:function(){return n("remove_cell")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radio Channels",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_radio",{channel:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:c.active_module===e.type?"check-square-o":"square-o",content:e.name,selected:c.active_module===e.type,onClick:function(){return n("setmodule",{module:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_upgrade",{upgrade:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"check-square-o":"square-o",content:e.name,selected:e.connected,onClick:function(){return n("slavetoai",{slavetoai:e.ref})}},e.ref)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.lawupdate?"check-square-o":"square-o",content:"Lawsync",selected:c.lawupdate,onClick:function(){return n("toggle_lawupdate")}}),children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(1),r=n(3),a=n(2);t.BrigTimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Cell Timer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:i.timing?"Stop":"Start",selected:i.timing,onClick:function(){return n(i.timing?"stop":"start")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:i.flash_charging?"Recharging":"Flash",disabled:i.flash_charging,onClick:function(){return n("flash")}})],4),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("time",{adjust:-600})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("time",{adjust:-100})}})," ",String(i.minutes).padStart(2,"0"),":",String(i.seconds).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("time",{adjust:100})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("time",{adjust:600})}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Short",onClick:function(){return n("preset",{preset:"short"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Medium",onClick:function(){return n("preset",{preset:"medium"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Long",onClick:function(){return n("preset",{preset:"long"})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Canister=void 0;var o=n(1),r=n(3),a=n(2);t.Canister=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:["The regulator ",i.hasHoldingTank?"is":"is not"," connected to a tank."]}),(0,o.createComponentVNode)(2,a.Section,{title:"Canister",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Relabel",onClick:function(){return n("relabel")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.tankPressure})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:i.portConnected?"good":"average",content:i.portConnected?"Connected":"Not Connected"}),!!i.isPrototype&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.restricted?"lock":"unlock",color:"caution",content:i.restricted?"Restricted to Engineering":"Public",onClick:function(){return n("restricted")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Valve",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Release Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.releasePressure/(i.maxReleasePressure-i.minReleasePressure),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.releasePressure})," kPa"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:i.releasePressure===i.defaultReleasePressure,content:"Reset",onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:i.releasePressure<=i.minReleasePressure,content:"Min",onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("pressure",{pressure:"input"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:i.releasePressure>=i.maxReleasePressure,content:"Max",onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Valve",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.valveOpen?"unlock":"lock",color:i.valveOpen?i.hasHoldingTank?"caution":"danger":null,content:i.valveOpen?"Open":"Closed",onClick:function(){return n("valve")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",buttons:!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",color:i.valveOpen&&"danger",content:"Eject",onClick:function(){return n("eject")}}),children:[!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:i.holdingTank.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.holdingTank.tankPressure})," kPa"]})]}),!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Holding Tank"})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=t.Cargo=void 0;var o=n(1),r=n(23),a=n(19),i=n(2),c=n(69);t.Cargo=function(e){var t=e.state,n=t.config,r=t.data,c=n.ref,s=r.supplies||{},p=r.requests||[],m=r.cart||[],f=m.reduce((function(e,t){return e+t.cost}),0),h=!r.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:[0===m.length&&"Cart is empty",1===m.length&&"1 item",m.length>=2&&m.length+" items"," ",f>0&&"("+f+" cr)"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return(0,a.act)(c,"clear")}})],4);return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle",children:r.docked&&!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{content:r.location,onClick:function(){return(0,a.act)(c,"send")}})||r.location}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"CentCom Message",children:r.message}),r.loan&&!r.requestonly?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loan",children:r.loan_dispatched?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Loaned to Centcom"}):(0,o.createComponentVNode)(2,i.Button,{content:"Loan Shuttle",disabled:!(r.away&&r.docked),onClick:function(){return(0,a.act)(c,"loan")}})}):""]})}),(0,o.createComponentVNode)(2,i.Tabs,{mt:2,children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Catalog",icon:"list",lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Catalog",buttons:h,children:(0,o.createComponentVNode)(2,l,{state:t,supplies:s})})}},"catalog"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Requests ("+p.length+")",icon:"envelope",highlight:p.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Active Requests",buttons:!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return(0,a.act)(c,"denyall")}}),children:(0,o.createComponentVNode)(2,u,{state:t,requests:p})})}},"requests"),!r.requestonly&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Checkout ("+m.length+")",icon:"shopping-cart",highlight:m.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Current Cart",buttons:h,children:(0,o.createComponentVNode)(2,d,{state:t,cart:m})})}},"cart")]})],4)};var l=function(e){var t=e.state,n=e.supplies,c=t.config,l=t.data,u=c.ref,d=function(e){var t=n[e].packs;return(0,o.createVNode)(1,"table","LabeledList",t.map((function(e){return(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[e.name,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.small_item&&(0,o.createFragment)([(0,o.createTextVNode)("Small Item")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.access&&(0,o.createFragment)([(0,o.createTextVNode)("Restrictions Apply")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:(l.self_paid?Math.round(1.1*e.cost):e.cost)+" credits",tooltip:e.desc,tooltipPosition:"left",onClick:function(){return(0,a.act)(u,"add",{id:e.id})}}),2)],4,null,e.name)})),0)};return(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e){var t=e.name;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:t,children:d},t)}))(n)})},u=function(e){var t=e.state,n=e.requests,r=t.config,c=t.data,l=r.ref;return 0===n.length?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"No Requests"}):(0,o.createVNode)(1,"table","LabeledList",n.map((function(e){return(0,o.createFragment)([(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[(0,o.createTextVNode)("#"),e.id,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__content",e.object,0),(0,o.createVNode)(1,"td","LabeledList__cell",[(0,o.createTextVNode)("By "),(0,o.createVNode)(1,"b",null,e.orderer,0)],4),(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createVNode)(1,"i",null,e.reason,0),2),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",[e.cost,(0,o.createTextVNode)(" credits"),(0,o.createTextVNode)(" "),!c.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"check",color:"good",onClick:function(){return(0,a.act)(l,"approve",{id:e.id})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"bad",onClick:function(){return(0,a.act)(l,"deny",{id:e.id})}})],4)],0)],4)],4,e.id)})),0)},d=function(e){var t=e.state,n=e.cart,r=t.config,c=t.data,l=r.ref;return(0,o.createFragment)([0===n.length&&"Nothing in cart",n.length>0&&(0,o.createComponentVNode)(2,i.LabeledList,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{className:"candystripe",label:"#"+e.id,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:2,children:[!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)," ",e.cost," credits"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus",onClick:function(){return(0,a.act)(l,"remove",{id:e.id})}})],4),children:e.object},e.id)}))}),n.length>0&&!c.requestonly&&(0,o.createComponentVNode)(2,i.Box,{mt:2,children:1===c.away&&1===c.docked&&(0,o.createComponentVNode)(2,i.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return(0,a.act)(l,"send")}})||(0,o.createComponentVNode)(2,i.Box,{opacity:.5,children:["Shuttle in ",c.location,"."]})})],0)};t.CargoExpress=function(e){var t=e.state,n=t.config,r=t.data,u=n.ref,d=r.supplies||{};return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{siliconUser:r.siliconUser,locked:r.locked,onLockStatusChange:function(){return(0,a.act)(u,"lock")},accessText:"a QM-level ID card"}),!r.locked&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Cargo Bay",selected:!r.usingBeacon,onClick:function(){return(0,a.act)(u,"LZCargo")}}),(0,o.createComponentVNode)(2,i.Button,{selected:r.usingBeacon,disabled:!r.hasBeacon,onClick:function(){return(0,a.act)(u,"LZBeacon")},children:[r.beaconzone," (",r.beaconName,")"]}),(0,o.createComponentVNode)(2,i.Button,{content:r.printMsg,disabled:!r.canBuyBeacon,onClick:function(){return(0,a.act)(u,"printBeacon")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Notice",children:r.message})]})}),(0,o.createComponentVNode)(2,l,{state:t,supplies:d})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(1),r=n(3),a=n(2);t.CellularEmporium=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.abilities;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!i.can_readapt,onClick:function(){return n("readapt")}}),children:i.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return n("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncher=void 0;var o=n(1),r=(n(29),n(3)),a=n(2);t.CentcomPodLauncher=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return n("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return n("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return n("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return n("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return n("bay5")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return n("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return n("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Clone Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:"Launch Clones",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return n("launchClone")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return n("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return n("launchRandom")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return n("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return n("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return n("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return n("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return n("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return n("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return n("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return n("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return n("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return n("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return n("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return n("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return n("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return n("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return n("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return n("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return n("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return n("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return n("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return n("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return n("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return n("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return n("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return n("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return n("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return n("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return n("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return n("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return n("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return n("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return n("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return n("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return n("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return n("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return n("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return n("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return n("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gondola",selected:13===i.styleChoice,tooltip:"This gondola can control when he wants to deliver his supplies\nif he has a smart enough mind, so offer up his body to ghosts\nfor maximum enjoyment. (Make sure to turn off bluespace and\nset a arbitrarily high open-time if you do!",onClick:function(){return n("styleGondola")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return n("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pody Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return n("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return n("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return n("clearBay")}})],4)})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(1),r=n(3),a=n(2);t.ChemAcclimator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[i.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return n("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:i.target_temperature,stepPixelSize:2,onChange:function(e,t){n("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.enabled?"On":"Off",selected:i.enabled,onClick:function(){return n("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.max_volume,unit:"u",width:"50px",minValue:i.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return n("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:i.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:i.emptying?"Emptying":"Filling"})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(1),r=n(3),a=n(2);t.ChemDebugSynthesizer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.amount,l=i.beakerCurrentVolume,u=i.beakerMaxVolume,d=i.isBeakerLoaded,s=i.beakerContents,p=void 0===s?[]:s;return(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",minValue:1,maxValue:u,step:1,stepPixelSize:2,onChange:function(e,t){return n("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return n("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return n("makecup")}}),children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})," / "+u+" u"]}),p.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(1),r=n(3),a=n(2);var i=function(e){var t=(0,r.useBackend)(e).act,n=e.title,i=e.list,c=e.reagentName,l=e.onReagentInput,u=n.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:n,minHeight:40,ml:.5,mr:.5,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return l(t)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return t("add",{which:u,name:c})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return t("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={leftReagentName:"",rightReagentName:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setLeftReagentName=function(e){this.setState({leftReagentName:e})},c.setRightReagentName=function(e){this.setState({rightReagentName:e})},c.render=function(){var e=this,t=this.props.state,n=t.data,r=n.left,c=void 0===r?[]:r,l=n.right,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Left",list:c,reagentName:this.state.leftReagentName,onReagentInput:function(t){return e.setLeftReagentName(t)},state:t})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Right",list:u,reagentName:this.state.rightReagentName,onReagentInput:function(t){return e.setRightReagentName(t)},state:t})})]})},r}(o.Component);t.ChemFilter=c},function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(1),r=n(3),a=n(2);t.ChemPress=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.pill_size,l=i.pill_name,u=i.pill_style,d=i.pill_styles,s=void 0===d?[]:d;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",width:"43px",minValue:5,maxValue:50,step:1,stepPixelSize:2,onChange:function(e,t){return n("change_pill_size",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Name",children:(0,o.createComponentVNode)(2,a.Input,{value:l,onChange:function(e,t){return n("change_pill_name",{name:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Style",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:5,selected:e.id===u,textAlign:"center",color:"transparent",onClick:function(){return n("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(1),r=n(19),a=n(2),i=n(23),c=n(12);var l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).state={reagentName:"",reagentQuantity:1},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.setReagentName=function(e){this.setState({reagentName:e})},u.setReagentQuantity=function(e){this.setState({reagentQuantity:e})},u.render=function(){var e=this,t=this.props.state,n=t.config,l=t.data,u=n.ref,d=l.emptying,s=l.reagents||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:d?"bad":"good",children:d?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(t,n){return e.setReagentName(n)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,c.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,a.NumberInput,{value:this.state.reagentQuantity,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(t,n){return e.setReagentQuantity(n)}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return(0,r.act)(u,"add",{chem:e.state.reagentName,amount:e.state.reagentQuantity})}})],4)],4),(0,i.map)((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return(0,r.act)(u,"remove",{chem:t})}}),children:e},t)}))(s)]})})},l}(o.Component);t.ChemReactionChamber=l},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(1),r=n(20),a=n(3),i=n(2);t.ChemSplitter=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.straight,u=c.side,d=c.max_transfer;return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:l,unit:"u",width:"55px",minValue:1,maxValue:d,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:d,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"side",amount:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(1),r=n(20),a=n(3),i=n(2);t.ChemSynthesizer=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.amount,u=c.current_reagent,d=c.chemicals,s=void 0===d?[]:d,p=c.possible_amounts,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===l,onClick:function(){return n("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===u,onClick:function(){return n("select",{reagent:e.id})}},e.id)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(1),r=n(3),a=n(2);t.CodexGigas=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[i.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==i.currentSection,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>2,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>4,onClick:function(){return n(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:["the Red","the Soulless","the Master","the Lord of all things","Jr."].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==i.currentSection,onClick:function(){return n(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:i.currentSection<4,onClick:function(){return n("search")}})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(1),r=(n(29),n(3)),a=n(2);t.ComputerFabricator=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==l.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return c("clean_order")}}),(0,o.createComponentVNode)(2,i,{state:t})],0)};var i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return 0===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:51,children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"2"})}})})]})})]}):1===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:47,buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a slot that allows you to manipulate RFID cards.\nPlease note that this is not necessary to allow the device\nto read your identification, it is just necessary to\nmanipulate other cards.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return n("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return n("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:"26px",onClick:function(){return n("confirm_order")}})]}):2===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:47,children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?i.COLORS.department.security:e>=20&&e<30?i.COLORS.department.medbay:e>=30&&e<40?i.COLORS.department.science:e>=40&&e<50?i.COLORS.department.engineering:e>=50&&e<60?i.COLORS.department.cargo:e>=200&&e<230?i.COLORS.department.centcom:i.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:4,color:i.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,d=i.sensors||[];return(0,o.createComponentVNode)(2,a.Section,{minHeight:90,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(f=e.ijob,f%10==0),color:l(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,r=e.toxdam,d=e.burndam,s=e.brutedam,p=t+r+d+s,m=Math.min(Math.max(Math.ceil(p/25),0),5),c[m])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return n("select_person",{name:e.name})}})})]},e.name);var t,r,d,s,p,m,f}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(1),r=n(3),a=n(2),i=n(435);t.Cryo=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",content:c.occupant.name?c.occupant.name:"No Occupant"}),!!c.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",content:c.occupant.stat,color:c.occupant.statstate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:c.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant.health/c.occupant.maxHealth,color:c.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",content:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",disabled:c.isOpen,onClick:function(){return n("power")},color:c.isOperating&&"green",children:c.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.isOpen?"unlock":"lock",onClick:function(){return n("door")},content:c.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:c.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return n("autoeject")},content:c.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c.isBeakerLoaded,onClick:function(){return n("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:c.isBeakerLoaded,beakerContents:c.beakerContents})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(1),r=n(2);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[e.volume," units of ",e.name]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(1),r=n(23),a=n(3),i=n(2),c=function(e){var t=e.craftables,n=void 0===t?[]:t,r=(0,a.useBackend)(e),c=r.act,l=r.data,u=l.craftability,d=void 0===u?{}:u,s=l.display_compact,p=l.display_craftable_only;return n.map((function(e){return p&&!d[e.ref]?null:s?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,className:"candystripe",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!d[e.ref],tooltip:e.tool_text&&"Tools needed: "+e.tool_text,tooltipPosition:"left",onClick:function(){return c("make",{recipe:e.ref})}}),children:e.req_text},e.name):(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!d[e.ref],onClick:function(){return c("make",{recipe:e.ref})}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.req_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Required",children:e.req_text}),!!e.catalyst_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Catalyst",children:e.catalyst_text}),!!e.tool_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)}))};t.PersonalCrafting=function(e){var t=e.state,n=(0,a.useBackend)(e),l=n.act,u=n.data,d=u.busy,s=u.display_craftable_only,p=u.display_compact,m=(0,r.map)((function(e,t){return{category:t,subcategory:e,hasSubcats:"has_subcats"in e,firstSubcatName:Object.keys(e).find((function(e){return"has_subcats"!==e}))}}))(u.crafting_recipes||{}),f=!!d&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"40px",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Box,{mt:30,children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Crafting..."]})});return(0,o.createFragment)([f,(0,o.createComponentVNode)(2,i.Section,{title:"Personal Crafting",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:p?"check-square-o":"square-o",content:"Compact",selected:p,onClick:function(){return l("toggle_compact")}}),(0,o.createComponentVNode)(2,i.Button,{icon:s?"check-square-o":"square-o",content:"Craftable Only",selected:s,onClick:function(){return l("toggle_recipes")}})],4),children:(0,o.createComponentVNode)(2,i.Tabs,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.category,onClick:function(){return l("set_category",{category:e.category,subcategory:e.firstSubcatName})},children:function(){return!e.hasSubcats&&(0,o.createComponentVNode)(2,c,{craftables:e.subcategory,state:t})||(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,n){if("has_subcats"!==n)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n,onClick:function(){return l("set_category",{subcategory:n})},children:function(){return(0,o.createComponentVNode)(2,c,{craftables:e,state:t})}})}))(e.subcategory)})}},e.category)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(1),r=n(3),a=n(2);t.DecalPainter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.decal_list||[],l=i.color_list||[],u=i.dir_list||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===i.decal_style,onClick:function(){return n("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===i.decal_color,onClick:function(){return n("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===i.decal_direction,onClick:function(){return n("selected direction",{dirs:e.dirs})}},e.dirs)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(1),r=n(3),a=n(2);t.DisposalUnit=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return l.full_pressure?(t="good",n="Ready"):l.panel_open?(t="bad",n="Power Disabled"):l.pressure_charging?(t="average",n="Pressurizing"):(t="bad",n="Off"),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:t,children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.flush?"toggle-on":"toggle-off",disabled:l.isai||l.panel_open,content:l.flush?"Disengage":"Engage",onClick:function(){return c(l.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:l.isai,content:"Eject Contents",onClick:function(){return c("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:l.panel_open,selected:l.pressure_charging,onClick:function(){return c(l.pressure_charging?"pump-0":"pump-1")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(1),r=n(3),a=n(2);t.DnaVault=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.completed,l=i.used,u=i.choiceA,d=i.choiceB,s=i.dna,p=i.dna_max,m=i.plants,f=i.plants_max,h=i.animals,C=i.animals_max;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s/p,content:s+" / "+p+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m/f,content:m+" / "+f+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/h,content:h+" / "+C+" Samples"})})]})}),!(!c||l)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:u,textAlign:"center",onClick:function(){return n("gene",{choice:u})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:d,textAlign:"center",onClick:function(){return n("gene",{choice:d})}})})]})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(1),r=n(3),a=n(2),i=n(29);t.EightBallVote=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.question,u=c.shaking,d=c.answers,s=void 0===d?[]:d;return u?(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',l,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,i.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return n("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(1),r=n(2),a=n(3);t.EmergencyShuttleConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.timer_str,l=i.enabled,u=i.emagged,d=i.engines_started,s=i.authorizations_remaining,p=i.authorizations,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:c}),(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,r.Box,{inline:!0,color:d?"good":"average",ml:1,children:d?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!l,onClick:function(){return n("abort")}}),children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!l,onClick:function(){return n("authorize")}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!l,onClick:function(){return n("repeal")}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,color:u?"bad":"good",children:u?"ERROR":"Remaining: "+s}),children:[m.length>0?m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,r.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"}),m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)}))]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(1),r=n(29),a=n(3),i=n(2);t.EngravedMessage=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.admin_mode,u=c.creator_key,d=c.creator_name,s=c.has_liked,p=c.has_disliked,m=c.hidden_message,f=c.is_creator,h=c.num_likes,C=c.num_dislikes,g=c.realdate;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(m)}),(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-up",content:" "+h,disabled:f,selected:s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("like")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"circle",disabled:f,selected:!p&&!s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("neutral")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-down",content:" "+C,disabled:f,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("dislike")}})})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Created On",children:g})})}),(0,o.createComponentVNode)(2,i.Section),!!l&&(0,o.createComponentVNode)(2,i.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return n("delete")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Ckey",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Character Name",children:d})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(1),r=n(23),a=n(70),i=n(20),c=n(156),l=n(3),u=n(2),d=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e){var t=(0,l.useBackend)(e),n=t.act,s=t.data,p=s.currentArea,m=s.currentCoords,f=s.globalmode,h=s.power,C=s.tag,g=s.updating,b=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,c.vecLength)((0,c.vecSubtract)(d(m),d(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(s.signals||[]);return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,u.Button,{icon:"power-off",content:h?"On":"Off",selected:h,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,u.Button,{icon:"pencil-alt",content:C,onClick:function(){return n("rename")}})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,u.Button,{icon:g?"unlock":"lock",content:g?"AUTO":"MANUAL",color:!g&&"bad",onClick:function(){return n("updating")}})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,u.Button,{icon:"sync",content:f?"MAXIMUM":"LOCAL",selected:!f,onClick:function(){return n("globalmode")}})})]})}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,u.Box,{fontSize:"18px",children:[p," (",m,")"]})}),(0,o.createComponentVNode)(2,u.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,u.Table,{children:[(0,o.createComponentVNode)(2,u.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,u.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),b.map((function(e){return(0,o.createComponentVNode)(2,u.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,u.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,i.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,u.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(1),r=n(3),a=n(2);t.GravityGenerator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.breaker,l=i.charge_count,u=i.charging_state,d=i.on,s=i.operational;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No data available"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Breaker",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,disabled:!s,onClick:function(){return n("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(d&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})}),s&&0!==u&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"WARNING - Radiation detected"}),s&&0===u&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No radiation detected"})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(1),r=n(3),a=n(2);t.GulagTeleporterConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.teleporter,l=i.teleporter_lock,u=i.teleporter_state_open,d=i.teleporter_location,s=i.beacon,p=i.beacon_location,m=i.id,f=i.id_name,h=i.can_teleport,C=i.goal,g=void 0===C?0:C,b=i.prisoner,v=void 0===b?{}:b;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:u?"Open":"Closed",disabled:l,selected:u,onClick:function(){return n("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l?"lock":"unlock",content:l?"Locked":"Unlocked",selected:l,disabled:u,onClick:function(){return n("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:c?"good":"bad",buttons:!c&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_teleporter")}}),children:c?d:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:s?"good":"bad",buttons:!s&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_beacon")}}),children:s?p:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:m?f:"No ID",onClick:function(){return n("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:g,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return n("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:v.name?v.name:"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:v.crimstat?v.crimstat:"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!h,textAlign:"center",color:"bad",onClick:function(){return n("teleport")}})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(1),r=n(3),a=n(2);t.GulagItemReclaimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.mobs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!i.can_reclaim,onClick:function(){return n("release_items",{mobref:e.mob})}})})]},e.mob)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(1),r=n(3),a=n(2);t.Holodeck=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_toggle_safety,l=i.default_programs,u=void 0===l?[]:l,d=i.emag_programs,s=void 0===d?[]:d,p=i.emagged,m=i.program;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:p?"unlock":"lock",content:"Safeties",color:"bad",disabled:!c,selected:!p,onClick:function(){return n("safety")}}),children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))}),!!p&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),color:"bad",textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(1),r=n(3),a=n(2);t.ImplantChair=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.occupant.name?i.occupant.name:"No Occupant"}),!!i.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===i.occupant.stat?"good":1===i.occupant.stat?"average":"bad",children:0===i.occupant.stat?"Conscious":1===i.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.open?"unlock":"lock",color:i.open?"default":"red",content:i.open?"Open":"Closed",onClick:function(){return n("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:i.ready?i.special_name||"Implant":"Recharging",onClick:function(){return n("implant")}}),0===i.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[i.ready_implants,1===i.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(1),r=n(3),a=n(2);t.Intellicard=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=u||d,l=i.name,u=i.isDead,d=i.isBraindead,s=i.health,p=i.wireless,m=i.radio,f=i.wiping,h=i.laws,C=void 0===h?[]:h;return(0,o.createComponentVNode)(2,a.Section,{title:l||"Empty Card",buttons:!!l&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:f?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return n("wipe")}}),children:!!l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:c?"bad":"good",children:c?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return n("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:m,onClick:function(){return n("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(1),r=n(3),a=n(2);t.KeycardAuth=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===i.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===i.waiting&&(0,o.createFragment)([!!i.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return n("auth_swipe")},content:"Authorize"}),0===i.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return n("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return n("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return n("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(1),r=n(29),a=n(3),i=n(2);t.LaborClaimConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.can_go_home,u=c.id_points,d=c.ores,s=c.status_info,p=c.unclaimed_points;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,i.Button,{content:"Move shuttle",disabled:!l,onClick:function(){return n("move_shuttle")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Points",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Claim points",disabled:!p,onClick:function(){return n("claim_points")}}),children:p})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(1),r=n(3),a=n(2);t.LanguageMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.admin_mode,l=i.is_living,u=i.omnitongue,d=i.languages,s=void 0===d?[]:d,p=i.unknown_languages,m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!l&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return n("select_default",{language_name:e.name})}}),!!c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return n("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!c&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(u?"Enabled":"Disabled"),selected:u,onClick:function(){return n("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadRemote=t.LaunchpadControl=t.LaunchpadButtonPad=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return t("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return t("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return t("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return t("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return t("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:-1})}})]})]})};t.LaunchpadButtonPad=i;var c=function(e){var t=e.topLevel,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.x,d=l.y,s=l.pad_name,p=l.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:s,width:"170px",onChange:function(e,t){return c("rename",{name:t})}}),level:t?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return c("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i,{state:e.state})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return c("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return c("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return c("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return c("pull")}})})]})]})};t.LaunchpadControl=c;t.LaunchpadRemote=function(e){var t=(0,r.useBackend)(e).data,n=t.has_pad,i=t.pad_closed;return n?i?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"}):(0,o.createComponentVNode)(2,c,{topLevel:!0,state:e.state}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})};t.LaunchpadConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.launchpads,u=void 0===l?[]:l,d=i.selected_id;return u.length<=0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"}):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.Box,{style:{"border-right":"2px solid rgba(255, 255, 255, 0.1)"},minHeight:"190px",mr:1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name,selected:d===e.id,color:"transparent",onClick:function(){return n("select_pad",{id:e.id})}},e.name)}))})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:d?(0,o.createComponentVNode)(2,c,{state:e.state}):(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(1),r=n(3),a=n(2);t.MechBayPowerConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.recharge_port,c=i&&i.mech,l=c&&c.cell;return(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return n("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.health/c.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.charge/l.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l.charge})," / "+l.maxcharge]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControl=void 0;var o=n(1),r=n(3),a=n(2);t.NaniteChamberControl=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.status_msg,l=i.locked,u=i.occupant_name,d=i.has_nanites,s=i.nanite_volume,p=i.regen_rate,m=i.safety_threshold,f=i.cloud_id,h=i.scan_level;if(c)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:c});var C=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+u,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"lock":"lock-open",content:l?"Locked":"Unlocked",color:l?"bad":"default",onClick:function(){return n("toggle_lock")}}),children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return n("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return n("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return n("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:C.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),h>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),h>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),h>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),h>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("nanite_injection")}})],4)})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=e.state.data,n=t.has_disk,r=t.has_program,i=t.disk;return n?r?(0,o.createComponentVNode)(2,c,{program:i}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var c=function(e){var t=e.program,n=t.name,r=t.desc,i=t.activated,c=t.use_rate,l=t.can_trigger,u=t.trigger_cost,d=t.trigger_cooldown,s=t.activation_code,p=t.deactivation_code,m=t.kill_code,f=t.trigger_code,h=t.timer_restart,C=t.timer_shutdown,g=t.timer_trigger,b=t.timer_trigger_delay,v=t.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:n,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:r}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:c}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:d})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:m}),!!l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:f})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[h," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[C," s"]}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[g," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[b," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:v.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=c;var l=function(e){var t=(0,r.useBackend)(e),n=t.act;return(t.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return n("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=l;var u=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.current_view,u=i.disk,d=i.has_program,s=i.cloud_backup,p=u&&u.can_rule||!1;if(!s)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var m=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+l,level:2,buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return n("upload_program")}}),children:m.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,c,{program:e}),!!p&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return n("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_rule",{program_id:e.id,rule_id:t.id})}}),t.display],0,t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,d=n.data,s=d.has_disk,p=d.current_view,m=d.new_backup_id;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s,onClick:function(){return c("eject")}}),children:(0,o.createComponentVNode)(2,i,{state:t})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return c("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return c("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return c("create_backup")}})],0),children:d.current_view?(0,o.createComponentVNode)(2,u,{state:t}):(0,o.createComponentVNode)(2,l,{state:t})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(1),r=n(23),a=n(3),i=n(2);t.NaniteProgramHub=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.detail_view,u=c.disk,d=c.has_disk,s=c.has_program,p=c.programs,m=void 0===p?{}:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return n("clear")}})],4),children:d?s?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Program Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:u.desc})]}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:l?"info":"list",content:l?"Detailed":"Compact",onClick:function(){return n("toggle_details")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Sync Research",onClick:function(){return n("refresh")}})],4),children:null!==m?(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var r=e||[],a=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:a,children:l?r.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!d,onClick:function(){return n("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,i.LabeledList,{children:r.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!d,onClick:function(){return n("download",{program_id:e.id})}})},e.id)}))})},t)}))(m)}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No nanite programs are currently researched."})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=c;var l=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.type,c={number:(0,o.createComponentVNode)(2,u,{act:t,extra_setting:n}),text:(0,o.createComponentVNode)(2,d,{act:t,extra_setting:n}),type:(0,o.createComponentVNode)(2,s,{act:t,extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{act:t,extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:c[i]})};t.NaniteExtraEntry=l;var u=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.min,l=n.max,u=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:i,width:"64px",minValue:c,maxValue:l,unit:u,onChange:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraNumber=u;var d=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:i,width:"200px",onInput:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraText=d;var s=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:i,width:"150px",options:c,onSelected:function(e){return t("set_extra_setting",{target_setting:r,value:e})}})};t.NaniteExtraType=s;var p=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.true_text,l=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:i?c:l,checked:i,onClick:function(){return t("set_extra_setting",{target_setting:r})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e){var t=(0,r.useBackend)(e),n=t.act,u=t.data,d=u.has_disk,s=u.has_program,p=u.name,m=u.desc,f=u.use_rate,h=u.can_trigger,C=u.trigger_cost,g=u.trigger_cooldown,b=u.activated,v=u.has_extra_settings,N=u.extra_settings,V=void 0===N?{}:N;return d?s?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:m}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:f}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:C}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:g})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:b?"power-off":"times",content:b?"Active":"Inactive",selected:b,color:"bad",bold:!0,onClick:function(){return n("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{state:e.state})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,c,{state:e.state})})]}),!!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:V.map((function(e){return(0,o.createComponentVNode)(2,l,{act:n,extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemote=void 0;var o=n(1),r=n(3),a=n(2);t.NaniteRemote=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.code,l=i.locked,u=i.mode,d=i.program_name,s=i.relay_code,p=i.comms,m=i.message,f=i.saved_settings,h=void 0===f?[]:f;return l?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return n("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:d,maxLength:14,width:"130px",onChange:function(e,t){return n("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return n("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"270px",onChange:function(e,t){return n("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return n("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:h.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return n("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return n("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(1),r=n(3),a=n(2),i=n(69);t.Mule=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.locked&&!c.siliconUser,u=c.siliconUser,d=c.on,s=c.cell,p=c.cellPercent,m=c.load,f=c.mode,h=c.modeStatus,C=c.haspai,g=c.autoReturn,b=c.autoPickup,v=c.reportDelivery,N=c.destination,V=c.home,y=c.id,_=c.destinations,x=void 0===_?[]:_;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{siliconUser:u,locked:l}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!l&&(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return n("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?p/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Grid,{mt:1,children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:f})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:m?"good":"average",children:m||"None"})})})]})]}),!l&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!m&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return n("unload")}}),!!C&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return n("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:y,onChange:function(e,t){return n("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:N||"None",options:x,width:"150px",onSelected:function(e){return n("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return n("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return n("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:V,options:x,width:"150px",onSelected:function(e){return n("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return n("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:g,content:"Auto-Return",onClick:function(){return n("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Pickup",onClick:function(){return n("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:v,content:"Report Delivery",onClick:function(){return n("report")}})]})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(1),r=n(3),a=n(2);t.NotificationPreferences=function(e){var t=(0,r.useBackend)(e),n=t.act,i=(t.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return n("toggle_ignore",{key:e.key})}},e.key)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(1),r=n(3),a=n(2);t.NtnetRelay=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.enabled,l=i.dos_capacity,u=i.dos_overload,d=i.dos_crashed;return(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:c,content:c?"ENABLED":"DISABLED",onClick:function(){return n("toggle")}}),children:d?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return n("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:l,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," GQ"," / ",l," GQ"]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(1),r=n(3),a=n(2);t.NtosArcade=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[i.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[i.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Section,{backgroundColor:1===i.PauseState?"#1b3622":"#471915",children:i.Status})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.Hitpoints/45,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Section,{inline:!0,width:26,textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:i.BossID})})]})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,a.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,a.Box,{color:i.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",i.TicketCount]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(1),r=n(3),a=n(2);t.NtosConfiguration=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.power_usage,l=i.battery_exists,u=i.battery,d=void 0===u?{}:u,s=i.disk_size,p=i.disk_used,m=i.hardware,f=void 0===m?[]:m;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",c,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!l&&"average",children:l?(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.charge,minValue:0,maxValue:d.max,ranges:{good:[d.max/2,Infinity],average:[d.max/4,d.max/2],bad:[-Infinity,d.max/4]},children:[d.charge," / ",d.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p,minValue:0,maxValue:s,color:"good",children:[p," GQ / ",s," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return n("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(1),r=n(3),a=n(2),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug"};t.NtosMain=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.programs,u=void 0===l?[]:l,d=c.has_light,s=c.light_on,p=c.comp_light_color;return(0,o.createFragment)([!!d&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:s,onClick:function(){return n("PC_toggle_light")},children:["Flashlight: ",s?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return n("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:p})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,lineHeight:"24px",color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return n("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:3,children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{lineHeight:"24px",color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return n("PC_killprogram",{name:e.name})}})})]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(1),r=n(3),a=n(2);(0,n(51).createLogger)("ntos chat");t.NtosNetChat=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_admin,l=i.adminmode,u=i.authed,d=i.username,s=i.active_channel,p=i.is_operator,m=i.all_channels,f=void 0===m?[]:m,h=i.clients,C=void 0===h?[]:h,g=i.messages,b=void 0===g?[]:g,v=null!==s,N=u||l;return(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return n("PRG_newchannel",{new_channel_name:t})}}),f.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===s,color:"transparent",onClick:function(){return n("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:d+"...",currentValue:d,onCommit:function(e,t){return n("PRG_changename",{new_name:t})}}),!!c&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(l?"ON":"OFF"),color:l?"bad":"good",onClick:function(){return n("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:v&&(N?b.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return n("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),v&&N&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return n("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return n("PRG_leavechannel")}})],4),!!p&&u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return n("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return n("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return n("PRG_setpassword",{new_password:t})}})],4)]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(1),r=n(3),a=n(2);t.NtosNetDownloader=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.disk_size,d=l.disk_used,s=l.downloadable_programs,p=void 0===s?[]:s,m=l.error,f=l.hacked_programs,h=void 0===f?[]:f,C=l.hackedavailable;return(0,o.createFragment)([!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:m}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return c("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d,minValue:0,maxValue:u,children:d+" GQ / "+u+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),h.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))]})],0)};var i=function(e){var t=e.program,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.disk_size,u=c.disk_used,d=c.downloadcompletion,s=c.downloading,p=c.downloadname,m=c.downloadsize,f=l-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:t.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[t.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:t.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:m,value:d})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:s||t.size>f,onClick:function(){return i("PRG_downloadfile",{filename:t.filename})}})})]}),"Compatible"!==t.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),t.size>f&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:t.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitor=void 0;var o=n(1),r=n(23),a=n(70),i=n(20),c=n(3),l=n(2),u=n(37),d=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e){var t=e.state,n=(0,c.useBackend)(e),p=n.act,m=n.data,f=m.active,h=m.SM_integrity,C=m.SM_power,g=m.SM_ambienttemp,b=m.SM_ambientpressure;if(!f)return(0,o.createComponentVNode)(2,s,{state:t});var v=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),N=Math.max.apply(Math,[1].concat(v.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:C,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,i.toFixed)(C)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:d(g),minValue:0,maxValue:d(1e4),ranges:{teal:[-Infinity,d(80)],good:[d(80),d(373)],average:[d(373),d(1e3)],bad:[d(1e3),Infinity]},children:(0,i.toFixed)(g)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:d(b),minValue:0,maxValue:d(5e4),ranges:{good:[d(1),d(300)],average:[-Infinity,d(1e3)],bad:[d(1e3),+Infinity]},children:(0,i.toFixed)(b)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return p("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.Box.Forced,{height:24*v.length+"px",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:v.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,u.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,u.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:N,children:(0,i.toFixed)(e.amount,2)+"%"})},e.name)}))})})})})]})};var s=function(e){var t=(0,c.useBackend)(e),n=t.act,r=t.data.supermatters,a=void 0===r?[]:r;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return n("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:a.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return n("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWrapper=void 0;var o=n(1),r=n(3),a=n(2),i=n(116);t.NtosWrapper=function(e){var t=e.children,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.PC_batteryicon,d=l.PC_showbatteryicon,s=l.PC_batterypercent,p=l.PC_ntneticon,m=l.PC_apclinkicon,f=l.PC_stationtime,h=l.PC_programheaders,C=void 0===h?[]:h,g=l.PC_showexitprogram;return(0,o.createVNode)(1,"div","NtosWrapper",[(0,o.createVNode)(1,"div","NtosWrapper__header NtosHeader",[(0,o.createVNode)(1,"div","NtosHeader__left",[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:f}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:"NtOS"})],4),(0,o.createVNode)(1,"div","NtosHeader__right",[C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:e.icon})},e.icon)})),(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:p&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:p})}),!!d&&u&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[u&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:u}),s&&s]}),m&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:m})}),!!g&&(0,o.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return c("PC_minimize")}}),!!g&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return c("PC_exit")}}),!g&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-left",onClick:function(){return c("PC_shutdown")}})],0)],4,{onMouseDown:function(){(0,i.refocusLayout)()}}),(0,o.createVNode)(1,"div","NtosWrapper__content",t,0)],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(1),r=n(12),a=n(3),i=n(2),c=function(e){var t=(0,a.useBackend)(e).act;return(0,o.createComponentVNode)(2,i.Box,{width:"185px",children:(0,o.createComponentVNode)(2,i.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,mb:1,content:e,textAlign:"center",fontSize:"40px",lineHeight:"50px",width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return t("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e){var t=e.state,n=(0,a.useBackend)(e),r=n.act,l=n.data,u=(l.anchored,l.disk_present,l.status1),d=l.status2;return(0,o.createComponentVNode)(2,i.Box,{m:1,children:[(0,o.createComponentVNode)(2,i.Box,{mb:1,className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,i.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Box,{className:"NuclearBomb__displayBox",children:d})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",fontSize:"24px",lineHeight:"23px",textAlign:"center",width:"43px",ml:1,mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,i.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,c,{state:t})}),(0,o.createComponentVNode)(2,i.Flex.Item,{ml:1,width:"129px",children:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:"32px",mb:1,className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:"32px",className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,i.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,i.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(1),r=n(3),a=n(2);t.OperatingComputer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.table,l=i.surgeries,u=void 0===l?[]:l,d=i.procedures,s=void 0===d?[]:d,p=i.patient,m=void 0===p?{}:p;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Patient State",children:[!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"}),(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",level:2,children:m?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]}):"No Patient Detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"Initiated Procedures",level:2,children:s.length?s.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!i.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)})):"No Active Procedures"})]})]},"state"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Surgery Procedures",children:(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return n("sync")}}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})},"procedures")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(1),r=n(29),a=n(19),i=n(2);t.OreBox=function(e){var t=e.state,n=t.config,c=t.data,l=n.ref,u=c.materials;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Empty",onClick:function(){return(0,a.act)(l,"removeall")}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(1),r=n(29),a=n(3),i=n(2);t.OreRedemptionMachine=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,l=r.unclaimedPoints,u=r.materials,d=r.alloys,s=r.diskDesigns,p=r.hasDisk;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),l,(0,o.createComponentVNode)(2,i.Button,{ml:2,content:"Claim",disabled:0===l,onClick:function(){return n("Claim")}})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{mb:1,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return n("diskEject")}})}),(0,o.createComponentVNode)(2,i.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return n("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,i.Button,{icon:"save",content:"Insert design disk",onClick:function(){return n("diskInsert")}})}),(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,i.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,i.Table,{children:d.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Smelt",{id:e.id,sheets:t})}},e.id)}))})})],4)};var c=function(e){var t,n;function a(){var t;return(t=e.call(this)||this).state={amount:1},t}return n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,a.prototype.render=function(){var e=this,t=this.state.amount,n=this.props,a=n.material,c=n.onRelease,l=Math.floor(a.amount);return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(a.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:a.value&&a.value+" cr"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:[l," sheets"]})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:t,onChange:function(t,n){return e.setState({amount:n})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:l<1,content:"Release",onClick:function(){return c(t)}})]})]})},a}(o.Component)},function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(1),r=n(23),a=n(3),i=n(2),c=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.has_beaker,l=r.beaker_empty,u=r.has_blood,d=r.blood,s=!c||l;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:s,onClick:function(){return n("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"trash",content:"Empty",disabled:s,onClick:function(){return n("empty_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!c,onClick:function(){return n("eject_beaker")}})],4),children:c?l?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood DNA",children:d&&d.dna||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:d&&d.type||"Unknown"})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=c;var l=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.is_ready;return(r.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,i.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,i.Input,{value:e.name,onChange:function(t,o){return n("rename_disease",{index:e.index,name:o})}}):e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"flask",content:"Create culture bottle",disabled:!c,onClick:function(){return n("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,i.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=l;var u=function(e){var t=e.symptom,n=t.name,a=t.desc,c=t.stealth,l=t.resistance,u=t.stage_speed,d=t.transmission,s=t.level,p=t.neutered,m=(0,r.map)((function(e,t){return{desc:e,label:t}}))(t.threshold_desc||{});return(0,o.createComponentVNode)(2,i.Section,{title:n,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{size:2,children:a}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Level",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:c}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmission",children:d})]})})]}),m.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var d=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.resistances||[];return(0,o.createComponentVNode)(2,i.Section,{title:"Antibodies",children:c.length>0?(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!r.is_ready,onClick:function(){return n("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=d;t.Pandemic=function(e){var t=(0,a.useBackend)(e).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),!!t.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{state:e.state}),(0,o.createComponentVNode)(2,d,{state:e.state})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableGenerator=void 0;var o=n(1),r=n(3),a=n(2);t.PortableGenerator=function(e){var t,n=(0,r.useBackend)(e),i=n.act,c=n.data;return t=c.stack_percent>50?"good":c.stack_percent>15?"average":"bad",(0,o.createFragment)([!c.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!c.ready_to_boot,children:c.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:c.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t,children:c.sheets}),c.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:c.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:c.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):c.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:c.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:c.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:c.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!c.connected&&"bad",children:c.connected?c.power_available:"Unconnected"})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=t.PortablePump=t.PortableBasicInfo=void 0;var o=n(1),r=n(3),a=n(2),i=n(37),c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.connected,l=i.holding,u=i.on,d=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:c?"good":"average",children:c?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return n("eject")}}),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:l.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)};t.PortableBasicInfo=c;t.PortablePump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.direction,u=(i.holding,i.target_pressure),d=i.default_pressure,s=i.min_pressure,p=i.max_pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-in-alt":"sign-out-alt",content:l?"In":"Out",selected:l,onClick:function(){return n("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:u,unit:"kPa",width:"75px",minValue:s,maxValue:p,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:u===s,onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:u===d,onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:u===p,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})],4)};t.PortableScrubber=function(e){var t=(0,r.useBackend)(e),n=t.act,l=t.data.filter_types||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return n("toggle_filter",{val:e.gas_id})}},e.id)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.PowerMonitor=void 0;var o=n(1),r=n(23),a=n(70),i=n(20),c=n(12),l=n(2);var u=5e5,d=function(e){var t=String(e.split(" ")[1]).toLowerCase();return["w","kw","mw","gw"].indexOf(t)},s=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).state={sortByField:null},t}return n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,c.prototype.render=function(){var e=this,t=this.props.state.data,n=t.history,c=this.state.sortByField,s=n.supply[n.supply.length-1]||0,f=n.demand[n.demand.length-1]||0,h=n.supply.map((function(e,t){return[t,e]})),C=n.demand.map((function(e,t){return[t,e]})),g=Math.max.apply(Math,[u].concat(n.supply,n.demand)),b=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===c&&(0,r.sortBy)((function(e){return e.name})),"charge"===c&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===c&&(0,r.sortBy)((function(e){return-d(e.load)}),(function(e){return-parseFloat(e.load)}))])(t.areas);return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"200px",children:(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Supply",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s,minValue:0,maxValue:g,color:"teal",content:(0,i.toFixed)(s/1e3)+" kW"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Draw",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:f,minValue:0,maxValue:g,color:"pink",content:(0,i.toFixed)(f/1e3)+" kW"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{position:"relative",height:"100%",children:[(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:h,rangeX:[0,h.length-1],rangeY:[0,g],strokeColor:"rgba(0, 181, 173, 1)",fillColor:"rgba(0, 181, 173, 0.25)"}),(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:C,rangeX:[0,C.length-1],rangeY:[0,g],strokeColor:"rgba(224, 57, 151, 1)",fillColor:"rgba(224, 57, 151, 0.25)"})]})})]}),(0,o.createComponentVNode)(2,l.Section,{children:[(0,o.createComponentVNode)(2,l.Box,{mb:1,children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===c,content:"Name",onClick:function(){return e.setState({sortByField:"name"!==c&&"name"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===c,content:"Charge",onClick:function(){return e.setState({sortByField:"charge"!==c&&"charge"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===c,content:"Draw",onClick:function(){return e.setState({sortByField:"draw"!==c&&"draw"})}})]}),(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),b.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,e.name,0),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,p,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.eqp}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.lgt}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.env}),2)],4,null,e.id)}))]})]})],4)},c}(o.Component);t.PowerMonitor=s;var p=function(e){var t=e.charging,n=e.charge;return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Icon,{width:"18px",textAlign:"center",name:0===t&&(n>50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,l.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,i.toFixed)(n)+"%"})],4)};p.defaultHooks=c.pureComponentHooks;var m=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,l.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};m.defaultHooks=c.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(1),r=n(23),a=n(20),i=n(3),c=n(2),l=n(37);t.Radio=function(e){var t=(0,i.useBackend)(e),n=t.act,u=t.data,d=u.freqlock,s=u.frequency,p=u.minFrequency,m=u.maxFrequency,f=u.listening,h=u.broadcasting,C=u.command,g=u.useCommand,b=u.subspace,v=u.subspaceSwitchable,N=l.RADIO_CHANNELS.find((function(e){return e.freq===s})),V=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(u.channels);return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",children:[d&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(s/10,1)+" kHz"})||(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:p/10,maxValue:m/10,value:s/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return n("frequency",{adjust:t-s/10})}}),N&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:N.color,ml:2,children:["[",N.name,"]"]})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:f?"volume-up":"volume-mute",selected:f,onClick:function(){return n("listen")}}),(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:h?"microphone":"microphone-slash",selected:h,onClick:function(){return n("broadcast")}}),!!C&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:g,content:"High volume "+(g?"ON":"OFF"),onClick:function(){return n("command")}}),!!v&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:b,content:"Subspace Tx "+(b?"ON":"OFF"),onClick:function(){return n("subspace")}})]}),!!b&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Channels",children:[0===V.length&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),V.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return n("channel",{channel:e.name})}})},e.name)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(1),r=n(12),a=n(3),i=n(2),c=["Atmospherics","Disposals","Transit Tubes"],l={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},d=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e){var t=(0,a.useBackend)(e),n=t.act,s=t.data,p=s.category,m=s.categories,f=void 0===m?[]:m,h=s.selected_color,C=s.piping_layer,g=s.mode,b=s.preview_rows.flatMap((function(e){return e.previews}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Category",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{selected:p===t,icon:l[e],color:"transparent",content:e,onClick:function(){return n("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Modes",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:g&e.bitmask,content:e.name,onClick:function(){return n("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,width:"64px",color:u[h],content:h}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,i.ColorBox,{ml:1,color:u[e],onClick:function(){return n("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,i.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,i.Section,{children:[0===p&&(0,o.createComponentVNode)(2,i.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:e===C,content:"Layer "+e,onClick:function(){return n("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,i.Box,{width:"108px",children:b.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return n("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,i.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:f.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{fluid:!0,icon:l[e.cat_name],label:e.cat_name,children:function(){return e.recipes.map((function(t){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:t.selected,content:t.pipe_name,title:t.pipe_name,onClick:function(){return n("pipe_type",{pipe_type:t.pipe_index,category:e.cat_name})}},t.pipe_index)}))}},e.cat_name)}))})})})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(1),r=n(3),a=n(2),i=n(163);t.SatelliteControl=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.satellites||[];return(0,o.createFragment)([c.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.meteor_shield_coverage/c.meteor_shield_coverage_max,content:100*c.meteor_shield_coverage/c.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return n("toggle",{id:e.id})}},e.id)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(1),r=n(3),a=n(2),i=n(69),c=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],l=[{name:"Human",value:"human"},{name:"Lizardperson",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e){var t=e.state,n=(0,r.useBackend)(e),a=n.act,c=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{locked:c.locked,onLockedStatusChange:function(){return a("toggle_lock")}}),!c.locked&&(0,o.createComponentVNode)(2,s,{state:t})],0)};var d={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return m}},Guns:{title:"Scanner Mode: Guns",component:function(){return f}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return h}},Disease:{title:"Scanner Mode: Disease",component:function(){return C}},Species:{title:"Scanner Mode: Species",component:function(){return g}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return b}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return v}}},s=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data.scan_mode,l=d[c]||d.off,u=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==c&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return i("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,u,{state:t})})},p=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return t("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return t("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return t("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return t("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return t("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return t("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return t("set_mode",{new_mode:"Nanites"})}})]})],4)},m=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,N,{state:t})],4)},f=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,N,{state:t})],4)},h=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,N,{state:t})],4)},C=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,l=n.data,u=l.reverse,d=l.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",u?"does not have":"has"," ","a disease equal or worse than ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===d,content:e,onClick:function(){return i("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,N,{state:t})],4)},g=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,u=c.reverse,d=c.target_species,s=l.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",u?"not":""," ","of the ",s.name," species.","zombie"===d&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return i("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,N,{state:t})],4)},b=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,d=c.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return i("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,N,{state:t})],4)},v=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,u=c.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:u,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return i("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,N,{state:t})],4)},N=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return n("toggle_reverse")},color:i?"bad":"good"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulator=void 0;var o=n(1),r=n(23),a=n(3),i=n(2);t.ShuttleManipulator=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.shuttles||[],u=c.templates||{},d=c.selected||{},s=c.existing_shuttle||{};return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Status",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"JMP",onClick:function(){return n("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return n("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,i.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return n("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})}},"status"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Templates",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:(0,r.map)((function(e,t){var r=e.templates||[];return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.port_id,children:r.map((function(e){var t=e.shuttle_id===d.shuttle_id;return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return n("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))},t)}))(u)})})}},"templates"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Modification",children:(0,o.createComponentVNode)(2,i.Section,{children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{level:2,title:d.name,children:(!!d.description||!!d.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!d.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:d.description}),!!d.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:d.admin_notes})]})}),s?(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: "+s.name,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Jump To",onClick:function(){return n("jump_to",{type:"mobile",id:s.id})}}),children:[s.status,!!s.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),s.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Preview",onClick:function(){return n("preview",{shuttle_id:d.shuttle_id})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Load",color:"bad",onClick:function(){return n("load",{shuttle_id:d.shuttle_id})}})]})],0):"No shuttle selected"})},"modification")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=e.body,n=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t.htmlcolor,children:t.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:{owner:"You Are Here",stranger:"Occupied",available:"Swap"}[t.occupied],selected:"owner"===t.occupied,color:"stranger"===t.occupied&&"bad",onClick:function(){return n()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:{Dead:"bad",Unconscious:"average",Conscious:"good"}[t.status],children:t.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:t.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:t.area})]})})};t.BodyEntry=i;t.SlimeBodySwapper=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data.bodies,l=void 0===c?[]:c;return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i,{body:e,swapFunc:function(){return n("swap",{ref:e.ref})}},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(1),r=n(2),a=n(3),i=n(20);t.Signaler=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.code,u=c.frequency,d=c.minFrequency,s=c.maxFrequency;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:d/10,maxValue:s/10,value:u/10,format:function(e){return(0,i.toFixed)(e,1)},width:13,onDrag:function(e,t){return n("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:l,width:13,onDrag:function(e,t){return n("code",{code:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return n("signal")}})})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(1),r=n(23),a=n(3),i=n(2);t.SmartVend=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",buttons:!!c.isdryer&&(0,o.createComponentVNode)(2,i.Button,{icon:c.drying?"stop":"tint",onClick:function(){return n("Dry")},children:c.drying?"Stop drying":"Dry"}),children:0===c.contents.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Unfortunately, this ",c.name," is empty."]})||(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"center",children:c.verb?c.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.Button,{content:"One",disabled:e.amount<1,onClick:function(){return n("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return n("Release",{name:e.name})}})]})]},t)}))(c.contents)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(1),r=n(3),a=n(2);t.Smes=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return t=l.capacityPercent>=100?"good":l.inputting?"average":"bad",n=l.outputting?"good":l.charge>0?"average":"bad",(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*l.capacityPercent,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.inputAttempt?"sync-alt":"times",selected:l.inputAttempt,onClick:function(){return c("tryinput")},children:l.inputAttempt?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:t,children:l.capacityPercent>=100?"Fully Charged":l.inputting?"Charging":"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.inputLevel/l.inputLevelMax,content:l.inputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Input",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.inputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.inputLevelMax/1e3,onChange:function(e,t){return c("input",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:l.inputAvailable})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.outputAttempt?"power-off":"times",selected:l.outputAttempt,onClick:function(){return c("tryoutput")},children:l.outputAttempt?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:n,children:l.outputting?"Sending":l.charge>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.outputLevel/l.outputLevelMax,content:l.outputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.outputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.outputLevelMax/1e3,onChange:function(e,t){return c("output",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:l.outputUsed})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(1),r=n(3),a=n(2);t.SmokeMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.TankContents,l=(i.isTankLoaded,i.TankCurrentVolume),u=i.TankMaxVolume,d=i.active,s=i.setting,p=(i.screen,i.maxSetting),m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",selected:d,content:d?"On":"Off",onClick:function(){return n("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/u,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:l||0})," / "+u]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:s===e,icon:"plus",content:3*e,disabled:m0?"good":"bad",children:m})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:l,content:c+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===p,onClick:function(){return n("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===p,onClick:function(){return n("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===p,disabled:!f,onClick:function(){return n("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===p||1===p)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:u,onDrag:function(e,t){return n("azimuth",{value:t})}}),1===p&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-s-.01,maxValue:s+.01,value:d,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return n("azimuth_rate",{value:t})}}),2===p&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[u+" \xb0"," (auto)"]})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(1),r=n(3),a=n(2);t.SpaceHeater=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!i.hasPowercell||!i.open,onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,disabled:!i.hasPowercell,onClick:function(){return n("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!i.hasPowercell&&"bad",children:i.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.powerLevel/100,content:i.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(i.targetTemp-i.currentTemp)>50?"bad":Math.abs(i.targetTemp-i.currentTemp)>20?"average":"good",children:[i.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:i.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.targetTemp),width:"65px",unit:"\xb0C",minValue:i.minTemp,maxValue:i.maxTemp,onChange:function(e,t){return n("target",{target:t})}})||i.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:i.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===i.mode,onClick:function(){return n("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===i.mode,onClick:function(){return n("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===i.mode,onClick:function(){return n("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(1),r=n(3),a=n(2);t.SpawnersMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.spawners||[];return(0,o.createComponentVNode)(2,a.Section,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return n("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return n("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsole=void 0;var o=n(1),r=n(3),a=n(2);t.StationAlertConsole=function(e){var t=(0,r.useBackend)(e).data.alarms||[],n=t.Fire||[],i=t.Atmosphere||[],c=t.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===n.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),n.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(1),r=n(3),a=n(2);t.SuitStorageUnit=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.locked,l=i.open,u=i.safeties,d=i.uv_active,s=i.occupied,p=i.suit,m=i.helmet,f=i.mask,h=i.storage;return(0,o.createFragment)([!(!s||!u)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.Button,{icon:c?"unlock":"lock",content:c?"Unlock":"Lock",onClick:function(){return n("lock")}}),!c&&(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-out-alt":"sign-in-alt",content:l?"Close":"Open",onClick:function(){return n("door")}})],0),children:c&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"square":"square-o",content:m||"Empty",disabled:!m,onClick:function(){return n("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:p?"square":"square-o",content:p||"Empty",disabled:!p,onClick:function(){return n("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:f?"square":"square-o",content:f||"Empty",disabled:!f,onClick:function(){return n("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return n("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:s&&u,textAlign:"center",onClick:function(){return n("uv")}})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Tank=void 0;var o=n(1),r=n(3),a=n(2);t.Tank=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.tankPressure/1013,content:i.tankPressure+" kPa",ranges:{good:[.35,Infinity],average:[.15,.35],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:i.ReleasePressure===i.minReleasePressure,onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.releasePressure),width:"65px",unit:"kPa",minValue:i.minReleasePressure,maxValue:i.maxReleasePressure,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:i.ReleasePressure===i.maxReleasePressure,onClick:function(){return n("pressure",{pressure:"max"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"",disabled:i.ReleasePressure===i.defaultReleasePressure,onClick:function(){return n("pressure",{pressure:"reset"})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TankDispenser=void 0;var o=n(1),r=n(3),a=n(2);t.TankDispenser=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plasma",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.plasma?"square":"square-o",content:"Dispense",disabled:!i.plasma,onClick:function(){return n("plasma")}}),children:i.plasma}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.oxygen?"square":"square-o",content:"Dispense",disabled:!i.oxygen,onClick:function(){return n("oxygen")}}),children:i.oxygen})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Teleporter=void 0;var o=n(1),r=n(3),a=n(2);t.Teleporter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.calibrated,l=i.calibrating,u=i.power_station,d=i.regime_set,s=i.teleporter_hub,p=i.target;return(0,o.createComponentVNode)(2,a.Section,{children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No power station linked."})||!s&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No hub linked."})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Regime",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Change Regime",onClick:function(){return n("regimeset")}}),children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Target",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Set Target",onClick:function(){return n("settarget")}}),children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Calibration",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Calibrate Hub",onClick:function(){return n("calibrate")}}),children:l&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"In Progress"})||c&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Optimal"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Sub-Optimal"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ThermoMachine=void 0;var o=n(1),r=n(20),a=n(3),i=n(2);t.ThermoMachine=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:c.temperature,format:function(e){return(0,r.toFixed)(e,2)}})," K"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:c.pressure,format:function(e){return(0,r.toFixed)(e,2)}})," kPa"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:c.on?"power-off":"times",content:c.on?"On":"Off",selected:c.on,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:Math.round(c.target),unit:"K",width:"62px",minValue:Math.round(c.min),maxValue:Math.round(c.max),step:5,stepPixelSize:3,onDrag:function(e,t){return n("target",{target:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:c.target===c.min,title:"Minimum temperature",onClick:function(){return n("target",{target:c.min})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",disabled:c.target===c.initial,title:"Room Temperature",onClick:function(){return n("target",{target:c.initial})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:c.target===c.max,title:"Maximum Temperature",onClick:function(){return n("target",{target:c.max})}})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.TurbineComputer=void 0;var o=n(1),r=n(3),a=n(2);t.TurbineComputer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=Boolean(i.compressor&&!i.compressor_broke&&i.turbine&&!i.turbine_broke);return(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:i.online?"power-off":"times",content:i.online?"Online":"Offline",selected:i.online,disabled:!c,onClick:function(){return n("toggle_power")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reconnect",onClick:function(){return n("reconnect")}})],4),children:!c&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Compressor Status",color:!i.compressor||i.compressor_broke?"bad":"good",children:i.compressor_broke?i.compressor?"Offline":"Missing":"Online"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Status",color:!i.turbine||i.turbine_broke?"bad":"good",children:i.turbine_broke?i.turbine?"Offline":"Missing":"Online"})]})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Speed",children:[i.rpm," RPM"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Temp",children:[i.temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Generated Power",children:i.power})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Uplink=void 0;var o=n(1),r=n(29),a=n(19),i=n(2);var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={hoveredItem:{},currentSearch:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setHoveredItem=function(e){this.setState({hoveredItem:e})},c.setSearchText=function(e){this.setState({currentSearch:e})},c.render=function(){var e=this,t=this.props.state,n=t.config,r=t.data,c=n.ref,u=r.compact_mode,d=r.lockable,s=r.telecrystals,p=r.categories,m=void 0===p?[]:p,f=this.state,h=f.hoveredItem,C=f.currentSearch;return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:s>0?"good":"bad",children:[s," TC"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{value:C,onInput:function(t,n){return e.setSearchText(n)},ml:1,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:u?"list":"info",content:u?"Compact":"Detailed",onClick:function(){return(0,a.act)(c,"compact_toggle")}}),!!d&&(0,o.createComponentVNode)(2,i.Button,{icon:"lock",content:"Lock",onClick:function(){return(0,a.act)(c,"lock")}})],0),children:C.length>0?(0,o.createVNode)(1,"table","Table",(0,o.createComponentVNode)(2,l,{compact:!0,items:m.flatMap((function(e){return e.items||[]})).filter((function(e){var t=C.toLowerCase();return String(e.name+e.desc).toLowerCase().includes(t)})),hoveredItem:h,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}}),2):(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:m.map((function(t){var n=t.name,r=t.items;if(null!==r)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n+" ("+r.length+")",children:function(){return(0,o.createComponentVNode)(2,l,{compact:u,items:r,hoveredItem:h,telecrystals:s,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}})}},n)}))})})},r}(o.Component);t.Uplink=c;var l=function(e){var t=e.items,n=e.hoveredItem,a=e.telecrystals,c=e.compact,l=e.onBuy,u=e.onBuyMouseOver,d=e.onBuyMouseOut,s=n&&n.cost||0;return c?(0,o.createComponentVNode)(2,i.Table,{children:t.map((function(e){var t=n&&n.name!==e.name,c=a-s1?r-1:0),i=1;i1?t-1:0),o=1;o0?"good":"bad",content:i>0?"Earned "+i+" times":"Locked"})],0,{style:{"vertical-align":"top"}})],4,null,t)};t.Score=c;t.Achievements=function(e){var t=(0,r.useBackend)(e).data;return(0,o.createComponentVNode)(2,a.Tabs,{children:[t.categories.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e,children:(0,o.createComponentVNode)(2,a.Box,{as:"Table",children:t.achievements.filter((function(t){return t.category===e})).map((function(e){return e.score?(0,o.createComponentVNode)(2,c,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name):(0,o.createComponentVNode)(2,i,{name:e.name,desc:e.desc,icon_class:e.icon_class,value:e.value},e.name)}))})},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"High Scores",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:t.highscore.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:e.name,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:"Score"})]}),Object.keys(e.scores).map((function(n,r){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:r+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:n===t.user_ckey&&"green",textAlign:"center",children:[0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",mr:2}),n,0===r&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"gold",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.scores[n]})]},n)}))]})},e.name)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.BlockQuote=void 0;var o=n(1),r=n(12),a=n(19);t.BlockQuote=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var o,r;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=o,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(o||(t.VNodeFlags=o={})),t.ChildFlags=r,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(r||(t.ChildFlags=r={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(1),r=n(12),a=n(19);var i=function(e){var t=e.color,n=e.content,i=e.className,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["color","content","className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["ColorBox",i]),color:n?null:"transparent",backgroundColor:t,content:n||"."},c)))};t.ColorBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Collapsible=void 0;var o=n(1),r=n(19),a=n(114);var i=function(e){var t,n;function i(t){var n;n=e.call(this,t)||this;var o=t.open;return n.state={open:o||!1},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.props,n=this.state.open,i=t.children,c=t.color,l=void 0===c?"default":c,u=t.title,d=t.buttons,s=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(t,["children","color","title","buttons"]);return(0,o.createComponentVNode)(2,r.Box,{mb:1,children:[(0,o.createVNode)(1,"div","Table",[(0,o.createVNode)(1,"div","Table__cell",(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({fluid:!0,color:l,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},s,{children:u}))),2),d&&(0,o.createVNode)(1,"div","Table__cell Table__cell--collapsing",d,0)],0),n&&(0,o.createComponentVNode)(2,r.Box,{mt:1,children:i})]})},i}(o.Component);t.Collapsible=i},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var o=n(1),r=n(19);t.Dimmer=function(e){var t=e.style,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Box,Object.assign({style:Object.assign({position:"absolute",top:0,bottom:0,left:0,right:0,"background-color":"rgba(0, 0, 0, 0.75)","z-index":1},t)},n)))}},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(1),r=n(12),a=n(19),i=n(87);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t,n;function l(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},u.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},u.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},u.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(n){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},u.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,u=t.over,d=t.width,s=(t.onClick,t.selected,c(t,["color","over","width","onClick","selected"])),p=s.className,m=c(s,["className"]),f=u?!this.state.open:this.state.open,h=this.state.open?(0,o.createVNode)(1,"div",(0,r.classes)(["Dropdown__menu",u&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({width:d,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,p])},m,{onClick:function(t){e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,i.Icon,{name:f?"chevron-up":"chevron-down"}),2)]}))),h],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var o=n(1),r=n(12),a=n(19);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.className,n=e.direction,o=e.wrap,a=e.align,c=e.justify,l=e.spacing,u=void 0===l?0:l,d=i(e,["className","direction","wrap","align","justify","spacing"]);return Object.assign({className:(0,r.classes)(["Flex",u>0&&"Flex--spacing--"+u,t]),style:Object.assign({},d.style,{"flex-direction":n,"flex-wrap":o,"align-items":a,"justify-content":c})},d)};t.computeFlexProps=c;var l=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},c(e))))};t.Flex=l,l.defaultHooks=r.pureComponentHooks;var u=function(e){var t=e.className,n=e.grow,o=e.order,a=e.align,c=i(e,["className","grow","order","align"]);return Object.assign({className:(0,r.classes)(["Flex__item",t]),style:Object.assign({},c.style,{"flex-grow":n,order:o,"align-self":a})},c)};t.computeFlexItemProps=u;var d=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({},u(e))))};t.FlexItem=d,d.defaultHooks=r.pureComponentHooks,l.Item=d},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(1),r=n(12),a=n(19);var i=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["NoticeBox",t])},n)))};t.NoticeBox=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var o=n(1),r=n(18),a=n(12),i=n(16),c=n(158),l=n(19);var u=function(e){var t,n;function u(t){var n;n=e.call(this,t)||this;var a=t.value;return n.inputRef=(0,o.createRef)(),n.state={value:a,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,o=t.dragging,r=t.value,a=n.props.onDrag;o&&a&&a(e,r)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,o=t.minValue,a=t.maxValue,i=t.step,c=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),l=n.origin-e.screenY;if(t.dragging){var u=Number.isFinite(o)?o%i:0;n.internalValue=(0,r.clamp)(n.internalValue+l*i/c,o-i,a+i),n.value=(0,r.clamp)(n.internalValue-n.internalValue%i+u,o,a),n.origin=e.screenY}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,o=t.onChange,r=t.onDrag,a=n.state,i=a.dragging,c=a.value,l=a.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!i,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),i)n.suppressFlicker(),o&&o(e,c),r&&r(e,c);else if(n.inputRef){var u=n.inputRef.current;u.value=l;try{u.focus(),u.select()}catch(d){}}},n}return n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,u.prototype.render=function(){var e=this,t=this.state,n=t.dragging,u=t.editing,d=t.value,s=t.suppressingFlicker,p=this.props,m=p.className,f=p.fluid,h=p.animated,C=p.value,g=p.unit,b=p.minValue,v=p.maxValue,N=p.height,V=p.width,y=p.lineHeight,_=p.fontSize,x=p.format,k=p.onChange,L=p.onDrag,w=C;(n||s)&&(w=d);var B=function(e){return(0,o.createVNode)(1,"div","NumberInput__content",e+(g?" "+g:""),0,{unselectable:i.tridentVersion<=4})},S=h&&!n&&!s&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:w,format:x,children:B})||B(x?x(w):w);return(0,o.createComponentVNode)(2,l.Box,{className:(0,a.classes)(["NumberInput",f&&"NumberInput--fluid",m]),minWidth:V,minHeight:N,lineHeight:y,fontSize:_,onMouseDown:this.handleDragStart,children:[(0,o.createVNode)(1,"div","NumberInput__barContainer",(0,o.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,r.clamp)((w-b)/(v-b)*100,0,100)+"%"}}),2),S,(0,o.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:u?undefined:"none",height:N,"line-height":y,"font-size":_},onBlur:function(t){if(u){var n=(0,r.clamp)(t.target.value,b,v);e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),L&&L(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,r.clamp)(t.target.value,b,v);return e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),void(L&&L(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},u}(o.Component);t.NumberInput=u,u.defaultHooks=a.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var o=n(1),r=n(12),a=n(18),i=function(e){var t=e.value,n=e.minValue,i=void 0===n?0:n,c=e.maxValue,l=void 0===c?1:c,u=e.ranges,d=void 0===u?{}:u,s=e.content,p=e.children,m=(t-i)/(l-i),f=s!==undefined||p!==undefined,h=e.color;if(!h)for(var C=0,g=Object.keys(d);C=v[0]&&t<=v[1]){h=b;break}}return h||(h="default"),(0,o.createVNode)(1,"div",(0,r.classes)(["ProgressBar","ProgressBar--color--"+h]),[(0,o.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,a.clamp)(m,0,1)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",[f&&s,f&&p,!f&&(0,a.toFixed)(100*m)+"%"],0)],4)};t.ProgressBar=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(1),r=n(12),a=n(19);var i=function(e){var t=e.className,n=e.title,i=e.level,c=void 0===i?1:i,l=e.buttons,u=e.content,d=e.children,s=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","content","children"]),p=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),m=!(0,r.isFalsy)(u)||!(0,r.isFalsy)(d);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Section","Section--level--"+c,t])},s,{children:[p&&(0,o.createVNode)(1,"div","Section__title",[(0,o.createVNode)(1,"span","Section__titleText",n,0),(0,o.createVNode)(1,"div","Section__buttons",l,0)],4),m&&(0,o.createVNode)(1,"div","Section__content",[u,d],0)]})))};t.Section=i,i.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Tab=t.Tabs=void 0;var o=n(1),r=n(12),a=n(19),i=n(114);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e,n=Array.isArray(t),o=0;for(t=n?t:t[Symbol.iterator]();;){var r;if(n){if(o>=t.length)break;r=t[o++]}else{if((o=t.next()).done)break;r=o.value}var a=r;if(!a.props||"Tab"!==a.props.__type__){var i=JSON.stringify(a,null,2);throw new Error(" only accepts children of type .This is what we received: "+i)}}},u=function(e){var t,n;function u(t){var n;return(n=e.call(this,t)||this).state={activeTabKey:null},n}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=u.prototype;return d.getActiveTab=function(){var e=this.state,t=this.props,n=(0,r.normalizeChildren)(t.children);l(n);var o=t.activeTab||e.activeTabKey,a=n.find((function(e){return(e.key||e.props.label)===o}));return a||(a=n[0],o=a&&(a.key||a.props.label)),{tabs:n,activeTab:a,activeTabKey:o}},d.render=function(){var e=this,t=this.props,n=t.className,l=t.vertical,u=(t.children,c(t,["className","vertical","children"])),d=this.getActiveTab(),s=d.tabs,p=d.activeTab,m=d.activeTabKey,f=null;return p&&(f=p.props.content||p.props.children),"function"==typeof f&&(f=f(m)),(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Tabs",l&&"Tabs--vertical",n])},u,{children:[(0,o.createVNode)(1,"div","Tabs__tabBox",s.map((function(t){var n=t.props,a=n.className,l=n.label,u=(n.content,n.children,n.onClick),d=n.highlight,s=c(n,["className","label","content","children","onClick","highlight"]),p=t.key||t.props.label,f=t.active||p===m;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",f&&"Tabs__tab--active",d&&!f&&"color-yellow",a]),selected:f,color:"transparent",onClick:function(n){e.setState({activeTabKey:p}),u&&u(n,t)}},s,{children:l}),p))})),0),(0,o.createVNode)(1,"div","Tabs__content",f||null,0)]})))},u}(o.Component);t.Tabs=u;var d=function(e){return null};t.Tab=d,d.defaultProps={__type__:"Tab"},u.Tab=d},function(e,t,n){"use strict";t.__esModule=!0,t.TitleBar=void 0;var o=n(1),r=n(12),a=n(23),i=n(16),c=n(37),l=n(87),u=function(e){switch(e){case c.UI_INTERACTIVE:return"good";case c.UI_UPDATE:return"average";case c.UI_DISABLED:default:return"bad"}},d=function(e){var t=e.className,n=e.title,c=e.status,d=e.fancy,s=e.onDragStart,p=e.onClose;return(0,o.createVNode)(1,"div",(0,r.classes)(["TitleBar",t]),[(0,o.createComponentVNode)(2,l.Icon,{className:"TitleBar__statusIcon",color:u(c),name:"eye"}),(0,o.createVNode)(1,"div","TitleBar__title",n===n.toLowerCase()?(0,a.toTitleCase)(n):n,0),(0,o.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return d&&s(e)}}),!!d&&(0,o.createVNode)(1,"div","TitleBar__close TitleBar__clickable",i.tridentVersion<=4?"x":"\xd7",0,{onclick:p})],0)};t.TitleBar=d,d.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Chart=void 0;var o=n(1),r=n(24),a=n(19),i=n(12),c=n(16);var l=function(e,t,n,o){if(0===e.length)return[];var a=(0,r.zipWith)(Math.min).apply(void 0,e),i=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(a[0]=n[0],i[0]=n[1]),o!==undefined&&(a[1]=o[0],i[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,a,i,t)}))(e)},u=function(e){for(var t="",n=0;n=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),g=this.state.viewBox,b=l(r,g,i,c);if(b.length>0){var v=b[0],N=b[b.length-1];b.push([g[0]+h,N[1]]),b.push([g[0]+h,-h]),b.push([-h,-h]),b.push([-h,v[1]])}var V=u(b);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({position:"relative"},C,{children:function(t){return(0,o.normalizeProps)((0,o.createVNode)(1,"div",null,(0,o.createVNode)(32,"svg",null,(0,o.createVNode)(32,"polyline",null,null,1,{transform:"scale(1, -1) translate(0, -"+g[1]+")",fill:s,stroke:m,"stroke-width":h,points:V}),2,{viewBox:"0 0 "+g[0]+" "+g[1],preserveAspectRatio:"none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"hidden"}}),2,Object.assign({},t),null,e.ref))}})))},r}(o.Component);d.defaultHooks=i.pureComponentHooks;var s={Line:c.tridentVersion<=4?function(e){return null}:d};t.Chart=s},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(1),r=n(3),a=n(2);t.AiAirlock=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}},l=c[i.power.main]||c[0],u=c[i.power.backup]||c[0],d=c[i.shock]||c[0];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:l.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.main,content:"Disrupt",onClick:function(){return n("disrupt-main")}}),children:[i.power.main?"Online":"Offline"," ",i.wires.main_1&&i.wires.main_2?i.power.main_timeleft>0&&"["+i.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!i.power.backup,content:"Disrupt",onClick:function(){return n("disrupt-backup")}}),children:[i.power.backup?"Online":"Offline"," ",i.wires.backup_1&&i.wires.backup_2?i.power.backup_timeleft>0&&"["+i.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:d.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(i.wires.shock&&0===i.shock),content:"Restore",onClick:function(){return n("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Temporary",onClick:function(){return n("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!i.wires.shock,content:"Permanent",onClick:function(){return n("shock-perm")}})],4),children:[2===i.shock?"Safe":"Electrified"," ",(i.wires.shock?i.shock_timeleft>0&&"["+i.shock_timeleft+"s]":"[Wires have been cut!]")||-1===i.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.id_scanner?"power-off":"times",content:i.id_scanner?"Enabled":"Disabled",selected:i.id_scanner,disabled:!i.wires.id_scanner,onClick:function(){return n("idscan-toggle")}}),children:!i.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.emergency?"power-off":"times",content:i.emergency?"Enabled":"Disabled",selected:i.emergency,onClick:function(){return n("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.locked?"lock":"unlock",content:i.locked?"Lowered":"Raised",selected:i.locked,disabled:!i.wires.bolts,onClick:function(){return n("bolt-toggle")}}),children:!i.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.lights?"power-off":"times",content:i.lights?"Enabled":"Disabled",selected:i.lights,disabled:!i.wires.lights,onClick:function(){return n("light-toggle")}}),children:!i.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.safe?"power-off":"times",content:i.safe?"Enabled":"Disabled",selected:i.safe,disabled:!i.wires.safe,onClick:function(){return n("safe-toggle")}}),children:!i.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.speed?"power-off":"times",content:i.speed?"Enabled":"Disabled",selected:i.speed,disabled:!i.wires.timing,onClick:function(){return n("speed-toggle")}}),children:!i.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.opened?"sign-out-alt":"sign-in-alt",content:i.opened?"Open":"Closed",selected:i.opened,disabled:i.locked||i.welded,onClick:function(){return n("open-close")}}),children:!(!i.locked&&!i.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),i.locked?"bolted":"",i.locked&&i.welded?" and ":"",i.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(1),r=n(18),a=n(23),i=n(3),c=n(2),l=n(37),u=n(69);t.AirAlarm=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.data,c=a.locked&&!a.siliconUser;return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.InterfaceLockNoticeBox,{siliconUser:a.siliconUser,locked:a.locked,onLockStatusChange:function(){return r("lock")}}),(0,o.createComponentVNode)(2,d,{state:t}),!c&&(0,o.createComponentVNode)(2,p,{state:t})],0)};var d=function(e){var t=(0,i.useBackend)(e).data,n=(t.environment_data||[]).filter((function(e){return e.value>=.01})),a={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},l=a[t.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[n.length>0&&(0,o.createFragment)([n.map((function(e){var t=a[e.danger_level]||a[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:l.color,children:l.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:t.atmos_alarm||t.fire_alarm?"bad":"good",children:(t.atmos_alarm?"Atmosphere Alarm":t.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!t.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return m}},vents:{title:"Vent Controls",component:function(){return f}},scrubbers:{title:"Scrubber Controls",component:function(){return C}},modes:{title:"Operating Mode",component:function(){return b}},thresholds:{title:"Alarm Thresholds",component:function(){return v}}},p=function(e){var t=e.state,n=(0,i.useBackend)(e),r=n.act,a=n.config,l=s[a.screen]||s.home,u=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:"home"!==a.screen&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("tgui:view",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,u,{state:t})})},m=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data,a=r.mode,l=r.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:l?"exclamation-triangle":"exclamation",color:l&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return n(l?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===a?"exclamation-triangle":"exclamation",color:3===a&&"danger",content:"Panic Siphon",onClick:function(){return n("mode",{mode:3===a?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return n("tgui:view",{screen:"vents"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return n("tgui:view",{screen:"scrubbers"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return n("tgui:view",{screen:"modes"})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return n("tgui:view",{screen:"thresholds"})}})],4)},f=function(e){var t=e.state,n=(0,i.useBackend)(e).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,h,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},h=function(e){var t=e.id_tag,n=e.long_name,r=e.power,l=e.checks,u=e.excheck,d=e.incheck,s=e.direction,p=e.external,m=e.internal,f=e.extdefault,h=e.intdefault,C=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(n),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:r?"power-off":"times",selected:r,content:r?"On":"Off",onClick:function(){return C("power",{id_tag:t,val:Number(!r)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:"release"===s?"Pressurizing":"Releasing"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:d,onClick:function(){return C("incheck",{id_tag:t,val:l})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:u,onClick:function(){return C("excheck",{id_tag:t,val:l})}})]}),!!d&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(m),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_internal_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:h,content:"Reset",onClick:function(){return C("reset_internal_pressure",{id_tag:t})}})]}),!!u&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(p),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,n){return C("set_external_pressure",{id_tag:t,value:n})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:f,content:"Reset",onClick:function(){return C("reset_external_pressure",{id_tag:t})}})]})]})})},C=function(e){var t=e.state,n=(0,i.useBackend)(e).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,g,Object.assign({state:t},e),e.id_tag))})):"Nothing to show"},g=function(e){var t=e.long_name,n=e.power,r=e.scrubbing,u=e.id_tag,d=e.widenet,s=e.filter_types,p=(0,i.useBackend)(e).act;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,a.decodeHtmlEntities)(t),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:n?"power-off":"times",content:n?"On":"Off",selected:n,onClick:function(){return p("power",{id_tag:u,val:Number(!n)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:r?"filter":"sign-in-alt",color:r||"danger",content:r?"Scrubbing":"Siphoning",onClick:function(){return p("scrubbing",{id_tag:u,val:Number(!r)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:d?"expand":"compress",selected:d,content:d?"Expanded range":"Normal range",onClick:function(){return p("widenet",{id_tag:u,val:Number(!d)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:r&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,l.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return p("toggle_filter",{id_tag:u,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})},b=function(e){var t=(0,i.useBackend)(e),n=t.act,r=t.data.modes;return r&&0!==r.length?r.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return n("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},v=function(e){var t=(0,i.useBackend)(e),n=t.act,a=t.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,a.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return n("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(1),r=n(3),a=n(2);t.AirlockElectronics=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.regions||[],l={0:{icon:"times-circle"},1:{icon:"stop-circle"},2:{icon:"check-circle"}};return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Main",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access Required",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.oneAccess?"unlock":"lock",content:i.oneAccess?"One":"All",onClick:function(){return n("one_access")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mass Modify",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"check-double",content:"Grant All",onClick:function(){return n("grant_all")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Clear All",onClick:function(){return n("clear_all")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unrestricted Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:1&i.unres_direction?"check-square-o":"square-o",content:"North",selected:1&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"1"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:2&i.unres_direction?"check-square-o":"square-o",content:"East",selected:2&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"2"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:4&i.unres_direction?"check-square-o":"square-o",content:"South",selected:4&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"4"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:8&i.unres_direction?"check-square-o":"square-o",content:"West",selected:8&i.unres_direction,onClick:function(){return n("direc_set",{unres_direction:"8"})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access",children:(0,o.createComponentVNode)(2,a.Box,{height:"261px",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:c.map((function(e){var t=e.name,r=e.accesses||[],i=l[function(e){var t=!1,n=!1;return e.forEach((function(e){e.req?t=!0:n=!0})),!t&&n?0:t&&n?1:2}(r)].icon;return(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:i,label:t,children:function(){return r.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:e.req?"check-square-o":"square-o",content:e.name,selected:e.req,onClick:function(){return n("set",{access:e.id})}})},e.id)}))}},t)}))})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(1),r=n(3),a=n(2),i=n(69);t.Apc=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.locked&&!c.siliconUser,u={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},s=u[c.externalPower]||u[0],p=u[c.chargingStatus]||u[0],m=c.powerChannels||[],f=d[c.malfStatus]||d[0],h=c.powerCellStatus/100;return c.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",c.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return n("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{siliconUser:c.siliconUser,locked:c.locked,onLockStatusChange:function(){return n("lock")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",content:c.isOperating?"On":"Off",selected:c.isOperating&&!l,disabled:l,onClick:function(){return n("breaker")}}),children:["[ ",s.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.chargeMode?"sync":"close",content:c.chargeMode?"Auto":"Off",disabled:l,onClick:function(){return n("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[m.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!l&&(1===e.status||3===e.status),disabled:l,onClick:function(){return n("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!l&&2===e.status,disabled:l,onClick:function(){return n("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!l&&0===e.status,disabled:l,onClick:function(){return n("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,c.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!c.siliconUser&&(0,o.createFragment)([!!c.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:f.icon,content:f.content,color:"bad",onClick:function(){return n(f.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return n("overload")}})],0),children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.coverLocked?"lock":"unlock",content:c.coverLocked?"Engaged":"Disengaged",disabled:l,onClick:function(){return n("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.emergencyLights?"Enabled":"Disabled",disabled:l,onClick:function(){return n("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:c.nightshiftLights?"Enabled":"Disabled",disabled:l,onClick:function(){return n("toggle_nightshift")}})})]}),c.hijackable&&(0,o.createComponentVNode)(2,a.Section,{title:"Hijacking",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"unlock",content:"Hijack",disabled:c.hijacker,onClick:function(){return n("hijack")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lockdown",disabled:!c.lockdownavail,onClick:function(){return n("lockdown")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Drain",disabled:!c.drainavail,onClick:function(){return n("drain")}})],4)})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(1),r=n(3),a=n(2);t.AtmosAlertConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.priority||[],l=i.minor||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[c.length>0?c.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),l.length>0?l.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return n("clear",{zone:e})}}),2,null,e)})):(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16)],0)})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(1),r=n(24),a=n(18),i=n(3),c=n(2);t.AtmosControlConsole=function(e){var t=(0,i.useBackend)(e),n=t.act,l=t.data,u=l.sensors||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:!!l.tank&&u[0].long_name,children:u.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,c.Section,{title:!l.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),l.tank&&(0,o.createComponentVNode)(2,c.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"undo",content:"Reconnect",onClick:function(){return n("reconnect")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.inputting?"power-off":"times",content:l.inputting?"Injecting":"Off",selected:l.inputting,onClick:function(){return n("input")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:l.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return n("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,c.Button,{icon:l.outputting?"power-off":"times",content:l.outputting?"Open":"Closed",selected:l.outputting,onClick:function(){return n("output")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:parseFloat(l.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return n("pressure",{pressure:t})}})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(1),r=n(3),a=n(2),i=n(37);t.AtmosFilter=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.filter_types||[];return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.on?"power-off":"times",content:c.on?"On":"Off",selected:c.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(c.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:c.rate===c.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,i.getGasLabel)(e.id,e.name),onClick:function(){return n("filter",{mode:e.id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(1),r=n(3),a=n(2);t.AtmosMixer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.set_pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:i.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return n("node2",{concentration:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(1),r=n(3),a=n(2);t.AtmosPump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,onClick:function(){return n("power")}})}),i.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return n("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.rate===i.max_rate,onClick:function(){return n("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:i.pressure===i.max_pressure,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(1),r=n(3),a=n(2);t.BankMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.current_balance,l=i.siphoning,u=i.station_name;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:u+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"times":"sync",content:l?"Stop Siphoning":"Siphon Credits",selected:l,onClick:function(){return n(l?"halt":"siphon")}}),children:c+" cr"})})}),(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Authorized personnel only"})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BluespaceArtillery=void 0;var o=n(1),r=n(3),a=n(2);t.BluespaceArtillery=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.notice,l=i.connected,u=i.unlocked,d=i.target;return(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c}),l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Target",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"crosshairs",disabled:!u,onClick:function(){return n("recalibrate")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:d?"average":"bad",fontSize:"25px",children:d||"No Target Set"})}),(0,o.createComponentVNode)(2,a.Section,{children:u?(0,o.createComponentVNode)(2,a.Box,{style:{margin:"auto"},children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"FIRE",color:"bad",disabled:!d,fontSize:"30px",textAlign:"center",lineHeight:"46px",onClick:function(){return n("fire")}})}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"bad",fontSize:"18px",children:"Bluespace artillery is currently locked."}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"Awaiting authorization via keycard reader from at minimum two station heads."})],4)})],4):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:"Complete Deployment",onClick:function(){return n("build")}})})})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(1),r=(n(23),n(16)),a=n(2);t.Bepis=function(e){var t=e.state,n=t.config,i=t.data,c=n.ref,l=i.amount;return(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.manual_power?"Off":"On",selected:!i.manual_power,onClick:function(){return(0,r.act)(c,"toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return(0,r.act)(c,"account_reset")}}),children:["Console is currently being operated by ",i.account_owner?i.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:i.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[i.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:i.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:i.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return(0,r.act)(c,"amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===i.manual_power||1===i.silicon_check,onClick:function(){return(0,r.act)(c,"deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",i.mean_value]}),i.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===i.manual_power,onClick:function(){return(0,r.act)(c,"begin_experiment")},content:"Begin Testing"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.BorgPanel=void 0;var o=n(1),r=n(3),a=n(2);t.BorgPanel=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.borg||{},l=i.cell||{},u=l.charge/l.maxcharge,d=i.channels||[],s=i.modules||[],p=i.upgrades||[],m=i.ais||[],f=i.laws||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:c.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Rename",onClick:function(){return n("rename")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.emagged?"check-square-o":"square-o",content:"Emagged",selected:c.emagged,onClick:function(){return n("toggle_emagged")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.lockdown?"check-square-o":"square-o",content:"Locked Down",selected:c.lockdown,onClick:function(){return n("toggle_lockdown")}}),(0,o.createComponentVNode)(2,a.Button,{icon:c.scrambledcodes?"check-square-o":"square-o",content:"Scrambled Codes",selected:c.scrambledcodes,onClick:function(){return n("toggle_scrambledcodes")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:[l.missing?(0,o.createVNode)(1,"span","color-bad","No cell installed",16):(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,content:l.charge+" / "+l.maxcharge}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("set_charge")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Change",onClick:function(){return n("change_cell")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Remove",color:"bad",onClick:function(){return n("remove_cell")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radio Channels",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_radio",{channel:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:c.active_module===e.type?"check-square-o":"square-o",content:e.name,selected:c.active_module===e.type,onClick:function(){return n("setmodule",{module:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.installed?"check-square-o":"square-o",content:e.name,selected:e.installed,onClick:function(){return n("toggle_upgrade",{upgrade:e.type})}},e.type)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"check-square-o":"square-o",content:e.name,selected:e.connected,onClick:function(){return n("slavetoai",{slavetoai:e.ref})}},e.ref)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:c.lawupdate?"check-square-o":"square-o",content:"Lawsync",selected:c.lawupdate,onClick:function(){return n("toggle_lawupdate")}}),children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(1),r=n(3),a=n(2);t.BrigTimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Cell Timer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:i.timing?"Stop":"Start",selected:i.timing,onClick:function(){return n(i.timing?"stop":"start")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:i.flash_charging?"Recharging":"Flash",disabled:i.flash_charging,onClick:function(){return n("flash")}})],4),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return n("time",{adjust:-600})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return n("time",{adjust:-100})}})," ",String(i.minutes).padStart(2,"0"),":",String(i.seconds).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return n("time",{adjust:100})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return n("time",{adjust:600})}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Short",onClick:function(){return n("preset",{preset:"short"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Medium",onClick:function(){return n("preset",{preset:"medium"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"hourglass-start",content:"Long",onClick:function(){return n("preset",{preset:"long"})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Canister=void 0;var o=n(1),r=n(3),a=n(2);t.Canister=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:["The regulator ",i.hasHoldingTank?"is":"is not"," connected to a tank."]}),(0,o.createComponentVNode)(2,a.Section,{title:"Canister",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Relabel",onClick:function(){return n("relabel")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.tankPressure})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:i.portConnected?"good":"average",content:i.portConnected?"Connected":"Not Connected"}),!!i.isPrototype&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.restricted?"lock":"unlock",color:"caution",content:i.restricted?"Restricted to Engineering":"Public",onClick:function(){return n("restricted")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Valve",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Release Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.releasePressure/(i.maxReleasePressure-i.minReleasePressure),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.releasePressure})," kPa"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:i.releasePressure===i.defaultReleasePressure,content:"Reset",onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:i.releasePressure<=i.minReleasePressure,content:"Min",onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set",onClick:function(){return n("pressure",{pressure:"input"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:i.releasePressure>=i.maxReleasePressure,content:"Max",onClick:function(){return n("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Valve",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.valveOpen?"unlock":"lock",color:i.valveOpen?i.hasHoldingTank?"caution":"danger":null,content:i.valveOpen?"Open":"Closed",onClick:function(){return n("valve")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",buttons:!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",color:i.valveOpen&&"danger",content:"Eject",onClick:function(){return n("eject")}}),children:[!!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:i.holdingTank.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.holdingTank.tankPressure})," kPa"]})]}),!i.hasHoldingTank&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Holding Tank"})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=t.Cargo=void 0;var o=n(1),r=n(24),a=n(16),i=n(2),c=n(69);t.Cargo=function(e){var t=e.state,n=t.config,r=t.data,c=n.ref,s=r.supplies||{},p=r.requests||[],m=r.cart||[],f=m.reduce((function(e,t){return e+t.cost}),0),h=!r.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:[0===m.length&&"Cart is empty",1===m.length&&"1 item",m.length>=2&&m.length+" items"," ",f>0&&"("+f+" cr)"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return(0,a.act)(c,"clear")}})],4);return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle",children:r.docked&&!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{content:r.location,onClick:function(){return(0,a.act)(c,"send")}})||r.location}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"CentCom Message",children:r.message}),r.loan&&!r.requestonly?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loan",children:r.loan_dispatched?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Loaned to Centcom"}):(0,o.createComponentVNode)(2,i.Button,{content:"Loan Shuttle",disabled:!(r.away&&r.docked),onClick:function(){return(0,a.act)(c,"loan")}})}):""]})}),(0,o.createComponentVNode)(2,i.Tabs,{mt:2,children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Catalog",icon:"list",lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Catalog",buttons:h,children:(0,o.createComponentVNode)(2,l,{state:t,supplies:s})})}},"catalog"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Requests ("+p.length+")",icon:"envelope",highlight:p.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Active Requests",buttons:!r.requestonly&&(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return(0,a.act)(c,"denyall")}}),children:(0,o.createComponentVNode)(2,u,{state:t,requests:p})})}},"requests"),!r.requestonly&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Checkout ("+m.length+")",icon:"shopping-cart",highlight:m.length>0,lineHeight:"23px",children:function(){return(0,o.createComponentVNode)(2,i.Section,{title:"Current Cart",buttons:h,children:(0,o.createComponentVNode)(2,d,{state:t,cart:m})})}},"cart")]})],4)};var l=function(e){var t=e.state,n=e.supplies,c=t.config,l=t.data,u=c.ref,d=function(e){var t=n[e].packs;return(0,o.createVNode)(1,"table","LabeledList",t.map((function(e){return(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[e.name,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.small_item&&(0,o.createFragment)([(0,o.createTextVNode)("Small Item")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell",!!e.access&&(0,o.createFragment)([(0,o.createTextVNode)("Restrictions Apply")],4),0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:(l.self_paid?Math.round(1.1*e.cost):e.cost)+" credits",tooltip:e.desc,tooltipPosition:"left",onClick:function(){return(0,a.act)(u,"add",{id:e.id})}}),2)],4,null,e.name)})),0)};return(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e){var t=e.name;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:t,children:d},t)}))(n)})},u=function(e){var t=e.state,n=e.requests,r=t.config,c=t.data,l=r.ref;return 0===n.length?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"No Requests"}):(0,o.createVNode)(1,"table","LabeledList",n.map((function(e){return(0,o.createFragment)([(0,o.createVNode)(1,"tr","LabeledList__row candystripe",[(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__label",[(0,o.createTextVNode)("#"),e.id,(0,o.createTextVNode)(":")],0),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__content",e.object,0),(0,o.createVNode)(1,"td","LabeledList__cell",[(0,o.createTextVNode)("By "),(0,o.createVNode)(1,"b",null,e.orderer,0)],4),(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createVNode)(1,"i",null,e.reason,0),2),(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",[e.cost,(0,o.createTextVNode)(" credits"),(0,o.createTextVNode)(" "),!c.requestonly&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"check",color:"good",onClick:function(){return(0,a.act)(l,"approve",{id:e.id})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"bad",onClick:function(){return(0,a.act)(l,"deny",{id:e.id})}})],4)],0)],4)],4,e.id)})),0)},d=function(e){var t=e.state,n=e.cart,r=t.config,c=t.data,l=r.ref;return(0,o.createFragment)([0===n.length&&"Nothing in cart",n.length>0&&(0,o.createComponentVNode)(2,i.LabeledList,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{className:"candystripe",label:"#"+e.id,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:2,children:[!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)," ",e.cost," credits"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus",onClick:function(){return(0,a.act)(l,"remove",{id:e.id})}})],4),children:e.object},e.id)}))}),n.length>0&&!c.requestonly&&(0,o.createComponentVNode)(2,i.Box,{mt:2,children:1===c.away&&1===c.docked&&(0,o.createComponentVNode)(2,i.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return(0,a.act)(l,"send")}})||(0,o.createComponentVNode)(2,i.Box,{opacity:.5,children:["Shuttle in ",c.location,"."]})})],0)};t.CargoExpress=function(e){var t=e.state,n=t.config,r=t.data,u=n.ref,d=r.supplies||{};return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{siliconUser:r.siliconUser,locked:r.locked,onLockStatusChange:function(){return(0,a.act)(u,"lock")},accessText:"a QM-level ID card"}),!r.locked&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(r.points)})," credits"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Cargo Bay",selected:!r.usingBeacon,onClick:function(){return(0,a.act)(u,"LZCargo")}}),(0,o.createComponentVNode)(2,i.Button,{selected:r.usingBeacon,disabled:!r.hasBeacon,onClick:function(){return(0,a.act)(u,"LZBeacon")},children:[r.beaconzone," (",r.beaconName,")"]}),(0,o.createComponentVNode)(2,i.Button,{content:r.printMsg,disabled:!r.canBuyBeacon,onClick:function(){return(0,a.act)(u,"printBeacon")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Notice",children:r.message})]})}),(0,o.createComponentVNode)(2,l,{state:t,supplies:d})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(1),r=n(3),a=n(2);t.CellularEmporium=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.abilities;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!i.can_readapt,onClick:function(){return n("readapt")}}),children:i.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return n("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncher=void 0;var o=n(1),r=(n(23),n(3)),a=n(2);t.CentcomPodLauncher=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return n("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return n("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return n("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return n("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return n("bay5")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return n("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return n("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Clone Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:"Launch Clones",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return n("launchClone")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return n("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return n("launchRandom")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return n("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return n("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return n("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return n("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return n("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return n("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return n("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return n("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return n("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return n("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return n("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return n("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return n("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return n("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return n("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return n("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return n("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return n("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return n("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return n("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return n("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return n("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return n("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return n("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return n("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return n("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return n("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return n("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return n("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return n("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return n("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return n("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return n("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return n("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return n("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return n("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return n("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gondola",selected:13===i.styleChoice,tooltip:"This gondola can control when he wants to deliver his supplies\nif he has a smart enough mind, so offer up his body to ghosts\nfor maximum enjoyment. (Make sure to turn off bluespace and\nset a arbitrarily high open-time if you do!",onClick:function(){return n("styleGondola")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return n("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pody Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return n("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return n("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return n("clearBay")}})],4)})})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(1),r=n(3),a=n(2);t.ChemAcclimator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[i.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return n("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:i.target_temperature,stepPixelSize:2,onChange:function(e,t){n("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:i.enabled?"On":"Off",selected:i.enabled,onClick:function(){return n("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.max_volume,unit:"u",width:"50px",minValue:i.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return n("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:i.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:i.emptying?"Emptying":"Filling"})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(1),r=n(3),a=n(2);t.ChemDebugSynthesizer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.amount,l=i.beakerCurrentVolume,u=i.beakerMaxVolume,d=i.isBeakerLoaded,s=i.beakerContents,p=void 0===s?[]:s;return(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",minValue:1,maxValue:u,step:1,stepPixelSize:2,onChange:function(e,t){return n("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return n("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return n("makecup")}}),children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})," / "+u+" u"]}),p.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(1),r=n(18),a=n(23),i=n(3),c=n(2);t.ChemDispenser=function(e){var t=(0,i.useBackend)(e),n=t.act,l=t.data,u=!!l.recordingRecipe,d=Object.keys(l.recipes).map((function(e){return{name:e,contents:l.recipes[e]}})),s=l.beakerTransferAmounts||[],p=u&&Object.keys(l.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:l.recordingRecipe[e]}}))||l.beakerContents||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Status",buttons:u&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:l.energy/l.maxEnergy,content:(0,r.toFixed)(l.energy)+" units"})})})}),(0,o.createComponentVNode)(2,c.Section,{title:"Recipes",buttons:(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return n("clear_recipes")}})}),!u&&(0,o.createComponentVNode)(2,c.Button,{icon:"circle",disabled:!l.isBeakerLoaded,content:"Record",onClick:function(){return n("record_recipe")}}),u&&(0,o.createComponentVNode)(2,c.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return n("cancel_recording")}}),u&&(0,o.createComponentVNode)(2,c.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return n("save_recording")}})],0),children:(0,o.createComponentVNode)(2,c.Box,{mr:-1,children:[d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",width:"129.5px",lineHeight:"21px",content:e.name,onClick:function(){return n("dispense_recipe",{recipe:e.name})}},e.name)})),0===d.length&&(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Dispense",buttons:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",selected:e===l.amount,content:e,onClick:function(){return n("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,c.Box,{mr:-1,children:l.chemicals.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",width:"129.5px",lineHeight:"21px",content:e.title,onClick:function(){return n("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"minus",disabled:u,content:e,onClick:function(){return n("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Beaker",buttons:!!l.isBeakerLoaded&&(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l.isBeakerLoaded,onClick:function(){return n("eject")}}),children:(u?"Virtual beaker":l.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.AnimatedNumber,{initial:0,value:l.beakerCurrentVolume}),(0,o.createTextVNode)("/"),l.beakerMaxVolume,(0,o.createTextVNode)(" units, "),l.beakerCurrentpH,(0,o.createTextVNode)(" pH")],0))||"No beaker"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,c.Box,{color:"label",children:l.isBeakerLoaded||u?0===p.length&&"Nothing":"N/A"}),p.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{color:"label",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(1),r=n(3),a=n(2);var i=function(e){var t=(0,r.useBackend)(e).act,n=e.title,i=e.list,c=e.reagentName,l=e.onReagentInput,u=n.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:n,minHeight:40,ml:.5,mr:.5,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return l(t)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return t("add",{which:u,name:c})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return t("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={leftReagentName:"",rightReagentName:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setLeftReagentName=function(e){this.setState({leftReagentName:e})},c.setRightReagentName=function(e){this.setState({rightReagentName:e})},c.render=function(){var e=this,t=this.props.state,n=t.data,r=n.left,c=void 0===r?[]:r,l=n.right,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Left",list:c,reagentName:this.state.leftReagentName,onReagentInput:function(t){return e.setLeftReagentName(t)},state:t})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{title:"Right",list:u,reagentName:this.state.rightReagentName,onReagentInput:function(t){return e.setRightReagentName(t)},state:t})})]})},r}(o.Component);t.ChemFilter=c},function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(1),r=n(18),a=n(3),i=n(2),c=n(164);t.ChemHeater=function(e){var t=(0,a.useBackend)(e),n=t.act,l=t.data,u=l.targetTemp,d=l.isActive,s=l.isBeakerLoaded,p=l.currentTemp,m=l.currentpH,f=l.beakerCurrentVolume,h=l.beakerMaxVolume,C=l.beakerContents,g=void 0===C?[]:C;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d?"power-off":"times",selected:d,content:d?"On":"Off",onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,i.NumberInput,{width:"65px",unit:"K",step:2,stepPixelSize:1,value:(0,r.round)(u),minValue:0,maxValue:1e3,onDrag:function(e,t){return n("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,i.Box,{width:"60px",textAlign:"right",children:s&&(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"pH",children:(0,o.createComponentVNode)(2,i.Box,{width:"60px",textAlign:"right",children:s&&(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m,format:function(e){return(0,r.toFixed)(e)+" pH"}})||"-"})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:!!s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:2,children:[f," / ",h," units"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}})],4),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:s,beakerContents:g})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(1),r=n(16),a=n(2);t.ChemMaster=function(e){var t=e.state,n=t.config,l=t.data,d=n.ref,s=(l.screen,l.beakerContents),p=void 0===s?[]:s,m=l.bufferContents,f=void 0===m?[]:m,h=l.beakerCurrentVolume,C=l.beakerMaxVolume,g=l.isBeakerLoaded,b=l.isPillBottleLoaded,v=l.pillBottleCurrentAmount,N=l.pillBottleMaxAmount;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!l.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:h,initial:0})," / "+C+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return(0,r.act)(d,"eject")}})],4),children:[!g&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!g&&0===p.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,i,{children:p.map((function(e){return(0,o.createComponentVNode)(2,c,{state:t,chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:l.mode?"good":"bad",icon:l.mode?"exchange-alt":"times",content:l.mode?"Transfer":"Destroy",onClick:function(){return(0,r.act)(d,"toggleMode")}})],4),children:[0===f.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,i,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c,{state:t,chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,u,{state:t})}),!!b&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[v," / ",N," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return(0,r.act)(d,"ejectPillBottle")}})],4)})],0)};var i=a.Table,c=function(e){var t=e.state,n=e.chemical,i=e.transferTo,c=t.config.ref;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:n.volume,initial:0})," units of "+n.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return(0,r.act)(c,"transfer",{id:n.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return(0,r.act)(c,"analyze",{id:n.id})}})]})]},n.id)},l=function(e){var t=e.label,n=e.amountUnit,r=e.amount,i=e.onChangeAmount,c=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:14,unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:i}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:c}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",content:l})]})},u=function(e){var t,n;function i(){var t;return(t=e.call(this)||this).state={pillAmount:1,patchAmount:1,bottleAmount:1,packAmount:1,vialAmount:1,dartAmount:1},t}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=(this.state,this.props),n=t.state.config.ref,i=this.state,c=i.pillAmount,u=i.patchAmount,d=i.bottleAmount,s=i.packAmount,p=i.vialAmount,m=i.dartAmount,f=t.state.data,h=f.condi,C=f.chosenPillStyle,g=f.pillStyles,b=void 0===g?[]:g;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!h&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:5,selected:e.id===C,textAlign:"center",color:"transparent",onClick:function(){return(0,r.act)(n,"pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!h&&(0,o.createComponentVNode)(2,l,{label:"Pills",amount:c,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(t,n){return e.setState({pillAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"pill",amount:c,volume:"auto"})}}),!h&&(0,o.createComponentVNode)(2,l,{label:"Patches",amount:u,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(t,n){return e.setState({patchAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"patch",amount:u,volume:"auto"})}}),!h&&(0,o.createComponentVNode)(2,l,{label:"Bottles",amount:d,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(t,n){return e.setState({bottleAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"bottle",amount:d,volume:"auto"})}}),!h&&(0,o.createComponentVNode)(2,l,{label:"Hypovials",amount:p,amountUnit:"vials",sideNote:"max 60u",onChangeAmount:function(t,n){return e.setState({vialAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"hypoVial",amount:p,volume:"auto"})}}),!h&&(0,o.createComponentVNode)(2,l,{label:"Smartdarts",amount:m,amountUnit:"darts",sideNote:"max 20u",onChangeAmount:function(t,n){return e.setState({dartAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"smartDart",amount:m,volume:"auto"})}}),!!h&&(0,o.createComponentVNode)(2,l,{label:"Packs",amount:s,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(t,n){return e.setState({packAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"condimentPack",amount:s,volume:"auto"})}}),!!h&&(0,o.createComponentVNode)(2,l,{label:"Bottles",amount:d,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(t,n){return e.setState({bottleAmount:n})},onCreate:function(){return(0,r.act)(n,"create",{type:"condimentBottle",amount:d,volume:"auto"})}})]})},i}(o.Component)},function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(1),r=n(3),a=n(2);t.ChemPress=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.pill_size,l=i.pill_name,u=i.pill_style,d=i.pill_styles,s=void 0===d?[]:d;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,unit:"u",width:"43px",minValue:5,maxValue:50,step:1,stepPixelSize:2,onChange:function(e,t){return n("change_pill_size",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Name",children:(0,o.createComponentVNode)(2,a.Input,{value:l,onChange:function(e,t){return n("change_pill_name",{name:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill Style",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:5,selected:e.id===u,textAlign:"center",color:"transparent",onClick:function(){return n("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(1),r=n(16),a=n(2),i=n(24),c=n(12);var l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).state={reagentName:"",reagentQuantity:1},t}n=e,(t=l).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=l.prototype;return u.setReagentName=function(e){this.setState({reagentName:e})},u.setReagentQuantity=function(e){this.setState({reagentQuantity:e})},u.render=function(){var e=this,t=this.props.state,n=t.config,l=t.data,u=n.ref,d=l.emptying,s=l.reagents||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:d?"bad":"good",children:d?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(t,n){return e.setReagentName(n)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,c.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,a.NumberInput,{value:this.state.reagentQuantity,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(t,n){return e.setReagentQuantity(n)}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return(0,r.act)(u,"add",{chem:e.state.reagentName,amount:e.state.reagentQuantity})}})],4)],4),(0,i.map)((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return(0,r.act)(u,"remove",{chem:t})}}),children:e},t)}))(s)]})})},l}(o.Component);t.ChemReactionChamber=l},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(1),r=n(18),a=n(3),i=n(2);t.ChemSplitter=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.straight,u=c.side,d=c.max_transfer;return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:l,unit:"u",width:"55px",minValue:1,maxValue:d,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:d,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return n("set_amount",{target:"side",amount:t})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(1),r=n(18),a=n(3),i=n(2);t.ChemSynthesizer=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.amount,u=c.current_reagent,d=c.chemicals,s=void 0===d?[]:d,p=c.possible_amounts,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===l,onClick:function(){return n("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===u,onClick:function(){return n("select",{reagent:e.id})}},e.id)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(1),r=n(3),a=n(2);t.CodexGigas=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[i.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==i.currentSection,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>2,onClick:function(){return n(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:i.currentSection>4,onClick:function(){return n(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:["the Red","the Soulless","the Master","the Lord of all things","Jr."].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==i.currentSection,onClick:function(){return n(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:i.currentSection<4,onClick:function(){return n("search")}})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(1),r=(n(23),n(3)),a=n(2);t.ComputerFabricator=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==l.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return c("clean_order")}}),(0,o.createComponentVNode)(2,i,{state:t})],0)};var i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return 0===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:51,children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("pick_device",{pick:"2"})}})})]})})]}):1===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:47,buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return n("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return n("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return n("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return n("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a slot that allows you to manipulate RFID cards.\nPlease note that this is not necessary to allow the device\nto read your identification, it is just necessary to\nmanipulate other cards.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return n("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return n("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return n("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return n("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:"26px",onClick:function(){return n("confirm_order")}})]}):2===i.state?(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:47,children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?i.COLORS.department.security:e>=20&&e<30?i.COLORS.department.medbay:e>=30&&e<40?i.COLORS.department.science:e>=40&&e<50?i.COLORS.department.engineering:e>=50&&e<60?i.COLORS.department.cargo:e>=200&&e<230?i.COLORS.department.centcom:i.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:4,color:i.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,d=i.sensors||[];return(0,o.createComponentVNode)(2,a.Section,{minHeight:90,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(f=e.ijob,f%10==0),color:l(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,r=e.toxdam,d=e.burndam,s=e.brutedam,p=t+r+d+s,m=Math.min(Math.max(Math.ceil(p/25),0),5),c[m])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return n("select_person",{name:e.name})}})})]},e.name);var t,r,d,s,p,m,f}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(1),r=n(3),a=n(2),i=n(164);t.Cryo=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",content:c.occupant.name?c.occupant.name:"No Occupant"}),!!c.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",content:c.occupant.stat,color:c.occupant.statstate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:c.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant.health/c.occupant.maxHealth,color:c.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",content:(0,o.createComponentVNode)(2,a.Button,{icon:c.isOperating?"power-off":"times",disabled:c.isOpen,onClick:function(){return n("power")},color:c.isOperating&&"green",children:c.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:c.isOpen?"unlock":"lock",onClick:function(){return n("door")},content:c.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:c.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return n("autoeject")},content:c.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c.isBeakerLoaded,onClick:function(){return n("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:c.isBeakerLoaded,beakerContents:c.beakerContents})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(1),r=n(24),a=n(3),i=n(2),c=function(e){var t=e.craftables,n=void 0===t?[]:t,r=(0,a.useBackend)(e),c=r.act,l=r.data,u=l.craftability,d=void 0===u?{}:u,s=l.display_compact,p=l.display_craftable_only;return n.map((function(e){return p&&!d[e.ref]?null:s?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,className:"candystripe",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!d[e.ref],tooltip:e.tool_text&&"Tools needed: "+e.tool_text,tooltipPosition:"left",onClick:function(){return c("make",{recipe:e.ref})}}),children:e.req_text},e.name):(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Craft",disabled:!d[e.ref],onClick:function(){return c("make",{recipe:e.ref})}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.req_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Required",children:e.req_text}),!!e.catalyst_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Catalyst",children:e.catalyst_text}),!!e.tool_text&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)}))};t.PersonalCrafting=function(e){var t=e.state,n=(0,a.useBackend)(e),l=n.act,u=n.data,d=u.busy,s=u.display_craftable_only,p=u.display_compact,m=(0,r.map)((function(e,t){return{category:t,subcategory:e,hasSubcats:"has_subcats"in e,firstSubcatName:Object.keys(e).find((function(e){return"has_subcats"!==e}))}}))(u.crafting_recipes||{}),f=!!d&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"40px",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Box,{mt:30,children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Crafting..."]})});return(0,o.createFragment)([f,(0,o.createComponentVNode)(2,i.Section,{title:"Personal Crafting",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:p?"check-square-o":"square-o",content:"Compact",selected:p,onClick:function(){return l("toggle_compact")}}),(0,o.createComponentVNode)(2,i.Button,{icon:s?"check-square-o":"square-o",content:"Craftable Only",selected:s,onClick:function(){return l("toggle_recipes")}})],4),children:(0,o.createComponentVNode)(2,i.Tabs,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.category,onClick:function(){return l("set_category",{category:e.category,subcategory:e.firstSubcatName})},children:function(){return!e.hasSubcats&&(0,o.createComponentVNode)(2,c,{craftables:e.subcategory,state:t})||(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,n){if("has_subcats"!==n)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n,onClick:function(){return l("set_category",{subcategory:n})},children:function(){return(0,o.createComponentVNode)(2,c,{craftables:e,state:t})}})}))(e.subcategory)})}},e.category)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(1),r=n(3),a=n(2);t.DecalPainter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.decal_list||[],l=i.color_list||[],u=i.dir_list||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===i.decal_style,onClick:function(){return n("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===i.decal_color,onClick:function(){return n("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===i.decal_direction,onClick:function(){return n("selected direction",{dirs:e.dirs})}},e.dirs)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(1),r=n(3),a=n(2);t.DisposalUnit=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return l.full_pressure?(t="good",n="Ready"):l.panel_open?(t="bad",n="Power Disabled"):l.pressure_charging?(t="average",n="Pressurizing"):(t="bad",n="Off"),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:t,children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.flush?"toggle-on":"toggle-off",disabled:l.isai||l.panel_open,content:l.flush?"Disengage":"Engage",onClick:function(){return c(l.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:l.isai,content:"Eject Contents",onClick:function(){return c("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:l.panel_open,selected:l.pressure_charging,onClick:function(){return c(l.pressure_charging?"pump-0":"pump-1")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(1),r=n(3),a=n(2);t.DnaVault=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.completed,l=i.used,u=i.choiceA,d=i.choiceB,s=i.dna,p=i.dna_max,m=i.plants,f=i.plants_max,h=i.animals,C=i.animals_max;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s/p,content:s+" / "+p+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m/f,content:m+" / "+f+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/h,content:h+" / "+C+" Samples"})})]})}),!(!c||l)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:u,textAlign:"center",onClick:function(){return n("gene",{choice:u})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:d,textAlign:"center",onClick:function(){return n("gene",{choice:d})}})})]})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(1),r=n(3),a=n(2),i=n(23);t.EightBallVote=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.question,u=c.shaking,d=c.answers,s=void 0===d?[]:d;return u?(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',l,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,i.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return n("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(1),r=n(2),a=n(3);t.EmergencyShuttleConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,i=t.data,c=i.timer_str,l=i.enabled,u=i.emagged,d=i.engines_started,s=i.authorizations_remaining,p=i.authorizations,m=void 0===p?[]:p;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:c}),(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,r.Box,{inline:!0,color:d?"good":"average",ml:1,children:d?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,r.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!l,onClick:function(){return n("abort")}}),children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!l,onClick:function(){return n("authorize")}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!l,onClick:function(){return n("repeal")}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,r.Box,{inline:!0,bold:!0,color:u?"bad":"good",children:u?"ERROR":"Remaining: "+s}),children:[m.length>0?m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,r.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"}),m.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)}))]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(1),r=n(23),a=n(3),i=n(2);t.EngravedMessage=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.admin_mode,u=c.creator_key,d=c.creator_name,s=c.has_liked,p=c.has_disliked,m=c.hidden_message,f=c.is_creator,h=c.num_likes,C=c.num_dislikes,g=c.realdate;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(m)}),(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-up",content:" "+h,disabled:f,selected:s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("like")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"circle",disabled:f,selected:!p&&!s,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("neutral")}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"arrow-down",content:" "+C,disabled:f,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return n("dislike")}})})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Created On",children:g})})}),(0,o.createComponentVNode)(2,i.Section),!!l&&(0,o.createComponentVNode)(2,i.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return n("delete")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Ckey",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Creator Character Name",children:d})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(1),r=n(24),a=n(70),i=n(18),c=n(156),l=n(3),u=n(2),d=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e){var t=(0,l.useBackend)(e),n=t.act,s=t.data,p=s.currentArea,m=s.currentCoords,f=s.globalmode,h=s.power,C=s.tag,g=s.updating,b=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,c.vecLength)((0,c.vecSubtract)(d(m),d(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(s.signals||[]);return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,u.Button,{icon:"power-off",content:h?"On":"Off",selected:h,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,u.Button,{icon:"pencil-alt",content:C,onClick:function(){return n("rename")}})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,u.Button,{icon:g?"unlock":"lock",content:g?"AUTO":"MANUAL",color:!g&&"bad",onClick:function(){return n("updating")}})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,u.Button,{icon:"sync",content:f?"MAXIMUM":"LOCAL",selected:!f,onClick:function(){return n("globalmode")}})})]})}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,u.Box,{fontSize:"18px",children:[p," (",m,")"]})}),(0,o.createComponentVNode)(2,u.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,u.Table,{children:[(0,o.createComponentVNode)(2,u.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,u.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),b.map((function(e){return(0,o.createComponentVNode)(2,u.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,u.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,i.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,u.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,u.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(1),r=n(3),a=n(2);t.GravityGenerator=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.breaker,l=i.charge_count,u=i.charging_state,d=i.on,s=i.operational;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No data available"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Breaker",children:(0,o.createComponentVNode)(2,a.Button,{icon:c?"power-off":"times",content:c?"On":"Off",selected:c,disabled:!s,onClick:function(){return n("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(d&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})}),s&&0!==u&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"WARNING - Radiation detected"}),s&&0===u&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"No radiation detected"})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(1),r=n(3),a=n(2);t.GulagTeleporterConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.teleporter,l=i.teleporter_lock,u=i.teleporter_state_open,d=i.teleporter_location,s=i.beacon,p=i.beacon_location,m=i.id,f=i.id_name,h=i.can_teleport,C=i.goal,g=void 0===C?0:C,b=i.prisoner,v=void 0===b?{}:b;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:u?"Open":"Closed",disabled:l,selected:u,onClick:function(){return n("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l?"lock":"unlock",content:l?"Locked":"Unlocked",selected:l,disabled:u,onClick:function(){return n("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:c?"good":"bad",buttons:!c&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_teleporter")}}),children:c?d:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:s?"good":"bad",buttons:!s&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return n("scan_beacon")}}),children:s?p:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:m?f:"No ID",onClick:function(){return n("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:g,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return n("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:v.name?v.name:"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:v.crimstat?v.crimstat:"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!h,textAlign:"center",color:"bad",onClick:function(){return n("teleport")}})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(1),r=n(3),a=n(2);t.GulagItemReclaimer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.mobs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!i.can_reclaim,onClick:function(){return n("release_items",{mobref:e.mob})}})})]},e.mob)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(1),r=n(3),a=n(2);t.Holodeck=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_toggle_safety,l=i.default_programs,u=void 0===l?[]:l,d=i.emag_programs,s=void 0===d?[]:d,p=i.emagged,m=i.program;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:p?"unlock":"lock",content:"Safeties",color:"bad",disabled:!c,selected:!p,onClick:function(){return n("safety")}}),children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))}),!!p&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),color:"bad",textAlign:"center",selected:e.type===m,onClick:function(){return n("load_program",{type:e.type})}},e.type)}))})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(1),r=n(3),a=n(2);t.ImplantChair=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:i.occupant.name?i.occupant.name:"No Occupant"}),!!i.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===i.occupant.stat?"good":1===i.occupant.stat?"average":"bad",children:0===i.occupant.stat?"Conscious":1===i.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:i.open?"unlock":"lock",color:i.open?"default":"red",content:i.open?"Open":"Closed",onClick:function(){return n("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:i.ready?i.special_name||"Implant":"Recharging",onClick:function(){return n("implant")}}),0===i.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[i.ready_implants,1===i.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(1),r=n(3),a=n(2);t.Intellicard=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=u||d,l=i.name,u=i.isDead,d=i.isBraindead,s=i.health,p=i.wireless,m=i.radio,f=i.wiping,h=i.laws,C=void 0===h?[]:h;return(0,o.createComponentVNode)(2,a.Section,{title:l||"Empty Card",buttons:!!l&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:f?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return n("wipe")}}),children:!!l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:c?"bad":"good",children:c?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return n("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:m,onClick:function(){return n("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(1),r=n(3),a=n(2);t.KeycardAuth=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===i.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===i.waiting&&(0,o.createFragment)([!!i.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return n("auth_swipe")},content:"Authorize"}),0===i.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return n("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return n("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return n("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(1),r=n(23),a=n(3),i=n(2);t.LaborClaimConsole=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.can_go_home,u=c.id_points,d=c.ores,s=c.status_info,p=c.unclaimed_points;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,i.Button,{content:"Move shuttle",disabled:!l,onClick:function(){return n("move_shuttle")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Points",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Claim points",disabled:!p,onClick:function(){return n("claim_points")}}),children:p})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(1),r=n(3),a=n(2);t.LanguageMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.admin_mode,l=i.is_living,u=i.omnitongue,d=i.languages,s=void 0===d?[]:d,p=i.unknown_languages,m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!l&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return n("select_default",{language_name:e.name})}}),!!c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return n("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!c&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(u?"Enabled":"Disabled"),selected:u,onClick:function(){return n("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return n("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadRemote=t.LaunchpadControl=t.LaunchpadButtonPad=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return t("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return t("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return t("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return t("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return t("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return t("move_pos",{x:1,y:-1})}})]})]})};t.LaunchpadButtonPad=i;var c=function(e){var t=e.topLevel,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.x,d=l.y,s=l.pad_name,p=l.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:s,width:"170px",onChange:function(e,t){return c("rename",{name:t})}}),level:t?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return c("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i,{state:e.state})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return c("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return c("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return c("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return c("pull")}})})]})]})};t.LaunchpadControl=c;t.LaunchpadRemote=function(e){var t=(0,r.useBackend)(e).data,n=t.has_pad,i=t.pad_closed;return n?i?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"}):(0,o.createComponentVNode)(2,c,{topLevel:!0,state:e.state}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})};t.LaunchpadConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.launchpads,u=void 0===l?[]:l,d=i.selected_id;return u.length<=0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"}):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.Box,{style:{"border-right":"2px solid rgba(255, 255, 255, 0.1)"},minHeight:"190px",mr:1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name,selected:d===e.id,color:"transparent",onClick:function(){return n("select_pad",{id:e.id})}},e.name)}))})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:d?(0,o.createComponentVNode)(2,c,{state:e.state}):(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(1),r=n(3),a=n(2);t.MechBayPowerConsole=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.recharge_port,c=i&&i.mech,l=c&&c.cell;return(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return n("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.health/c.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.charge/l.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l.charge})," / "+l.maxcharge]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControl=void 0;var o=n(1),r=n(3),a=n(2);t.NaniteChamberControl=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.status_msg,l=i.locked,u=i.occupant_name,d=i.has_nanites,s=i.nanite_volume,p=i.regen_rate,m=i.safety_threshold,f=i.cloud_id,h=i.scan_level;if(c)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:c});var C=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+u,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"lock":"lock-open",content:l?"Locked":"Unlocked",color:l?"bad":"default",onClick:function(){return n("toggle_lock")}}),children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return n("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return n("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return n("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:C.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),h>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),h>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),h>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),h>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return n("nanite_injection")}})],4)})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=e.state.data,n=t.has_disk,r=t.has_program,i=t.disk;return n?r?(0,o.createComponentVNode)(2,c,{program:i}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var c=function(e){var t=e.program,n=t.name,r=t.desc,i=t.activated,c=t.use_rate,l=t.can_trigger,u=t.trigger_cost,d=t.trigger_cooldown,s=t.activation_code,p=t.deactivation_code,m=t.kill_code,f=t.trigger_code,h=t.timer_restart,C=t.timer_shutdown,g=t.timer_trigger,b=t.timer_trigger_delay,v=t.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:n,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:r}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:c}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:d})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:m}),!!l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:f})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[h," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[C," s"]}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[g," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[b," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:v.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=c;var l=function(e){var t=(0,r.useBackend)(e),n=t.act;return(t.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return n("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=l;var u=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.current_view,u=i.disk,d=i.has_program,s=i.cloud_backup,p=u&&u.can_rule||!1;if(!s)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var m=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+l,level:2,buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return n("upload_program")}}),children:m.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,c,{program:e}),!!p&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return n("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return n("remove_rule",{program_id:e.id,rule_id:t.id})}}),t.display],0,t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,d=n.data,s=d.has_disk,p=d.current_view,m=d.new_backup_id;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s,onClick:function(){return c("eject")}}),children:(0,o.createComponentVNode)(2,i,{state:t})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return c("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return c("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return c("create_backup")}})],0),children:d.current_view?(0,o.createComponentVNode)(2,u,{state:t}):(0,o.createComponentVNode)(2,l,{state:t})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(1),r=n(24),a=n(3),i=n(2);t.NaniteProgramHub=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.detail_view,u=c.disk,d=c.has_disk,s=c.has_program,p=c.programs,m=void 0===p?{}:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return n("clear")}})],4),children:d?s?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Program Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:u.desc})]}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:l?"info":"list",content:l?"Detailed":"Compact",onClick:function(){return n("toggle_details")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Sync Research",onClick:function(){return n("refresh")}})],4),children:null!==m?(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var r=e||[],a=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:a,children:l?r.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!d,onClick:function(){return n("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,i.LabeledList,{children:r.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Download",disabled:!d,onClick:function(){return n("download",{program_id:e.id})}})},e.id)}))})},t)}))(m)}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No nanite programs are currently researched."})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return n("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return n("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=c;var l=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.type,c={number:(0,o.createComponentVNode)(2,u,{act:t,extra_setting:n}),text:(0,o.createComponentVNode)(2,d,{act:t,extra_setting:n}),type:(0,o.createComponentVNode)(2,s,{act:t,extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{act:t,extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:c[i]})};t.NaniteExtraEntry=l;var u=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.min,l=n.max,u=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:i,width:"64px",minValue:c,maxValue:l,unit:u,onChange:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraNumber=u;var d=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:i,width:"200px",onInput:function(e,n){return t("set_extra_setting",{target_setting:r,value:n})}})};t.NaniteExtraText=d;var s=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:i,width:"150px",options:c,onSelected:function(e){return t("set_extra_setting",{target_setting:r,value:e})}})};t.NaniteExtraType=s;var p=function(e){var t=e.act,n=e.extra_setting,r=n.name,i=n.value,c=n.true_text,l=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:i?c:l,checked:i,onClick:function(){return t("set_extra_setting",{target_setting:r})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e){var t=(0,r.useBackend)(e),n=t.act,u=t.data,d=u.has_disk,s=u.has_program,p=u.name,m=u.desc,f=u.use_rate,h=u.can_trigger,C=u.trigger_cost,g=u.trigger_cooldown,b=u.activated,v=u.has_extra_settings,N=u.extra_settings,V=void 0===N?{}:N;return d?s?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:m}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:f}),!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:C}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:g})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:b?"power-off":"times",content:b?"Active":"Inactive",selected:b,color:"bad",bold:!0,onClick:function(){return n("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i,{state:e.state})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,c,{state:e.state})})]}),!!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:V.map((function(e){return(0,o.createComponentVNode)(2,l,{act:n,extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return n("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemote=void 0;var o=n(1),r=n(3),a=n(2);t.NaniteRemote=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.code,l=i.locked,u=i.mode,d=i.program_name,s=i.relay_code,p=i.comms,m=i.message,f=i.saved_settings,h=void 0===f?[]:f;return l?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return n("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:d,maxLength:14,width:"130px",onChange:function(e,t){return n("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return n("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:c,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"270px",onChange:function(e,t){return n("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return n("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return n("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:h.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return n("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return n("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(1),r=n(3),a=n(2),i=n(69);t.Mule=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.locked&&!c.siliconUser,u=c.siliconUser,d=c.on,s=c.cell,p=c.cellPercent,m=c.load,f=c.mode,h=c.modeStatus,C=c.haspai,g=c.autoReturn,b=c.autoPickup,v=c.reportDelivery,N=c.destination,V=c.home,y=c.id,_=c.destinations,x=void 0===_?[]:_;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{siliconUser:u,locked:l}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!l&&(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return n("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?p/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Grid,{mt:1,children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:f})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:m?"good":"average",children:m||"None"})})})]})]}),!l&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!m&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return n("unload")}}),!!C&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return n("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:y,onChange:function(e,t){return n("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:N||"None",options:x,width:"150px",onSelected:function(e){return n("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return n("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return n("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:V,options:x,width:"150px",onSelected:function(e){return n("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return n("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:g,content:"Auto-Return",onClick:function(){return n("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Pickup",onClick:function(){return n("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:v,content:"Report Delivery",onClick:function(){return n("report")}})]})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(1),r=n(3),a=n(2);t.NotificationPreferences=function(e){var t=(0,r.useBackend)(e),n=t.act,i=(t.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return n("toggle_ignore",{key:e.key})}},e.key)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(1),r=n(3),a=n(2);t.NtnetRelay=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.enabled,l=i.dos_capacity,u=i.dos_overload,d=i.dos_crashed;return(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:c,content:c?"ENABLED":"DISABLED",onClick:function(){return n("toggle")}}),children:d?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return n("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:l,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," GQ"," / ",l," GQ"]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(1),r=n(3),a=n(2);t.NtosArcade=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[i.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[i.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Section,{backgroundColor:1===i.PauseState?"#1b3622":"#471915",children:i.Status})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.Hitpoints/45,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Section,{inline:!0,width:26,textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:i.BossID})})]})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===i.GameActive||1===i.PauseState,onClick:function(){return n("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,a.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===i.GameActive,onClick:function(){return n("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,a.Box,{color:i.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",i.TicketCount]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(1),r=n(3),a=n(2);t.NtosConfiguration=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.power_usage,l=i.battery_exists,u=i.battery,d=void 0===u?{}:u,s=i.disk_size,p=i.disk_used,m=i.hardware,f=void 0===m?[]:m;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",c,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!l&&"average",children:l?(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.charge,minValue:0,maxValue:d.max,ranges:{good:[d.max/2,Infinity],average:[d.max/4,d.max/2],bad:[-Infinity,d.max/4]},children:[d.charge," / ",d.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p,minValue:0,maxValue:s,color:"good",children:[p," GQ / ",s," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:f.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return n("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(1),r=n(3),a=n(2),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug"};t.NtosMain=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.programs,u=void 0===l?[]:l,d=c.has_light,s=c.light_on,p=c.comp_light_color;return(0,o.createFragment)([!!d&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:s,onClick:function(){return n("PC_toggle_light")},children:["Flashlight: ",s?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return n("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:p})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,lineHeight:"24px",color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return n("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:3,children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{lineHeight:"24px",color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return n("PC_killprogram",{name:e.name})}})})]},e.name)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(1),r=n(3),a=n(2);(0,n(51).createLogger)("ntos chat");t.NtosNetChat=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.can_admin,l=i.adminmode,u=i.authed,d=i.username,s=i.active_channel,p=i.is_operator,m=i.all_channels,f=void 0===m?[]:m,h=i.clients,C=void 0===h?[]:h,g=i.messages,b=void 0===g?[]:g,v=null!==s,N=u||l;return(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return n("PRG_newchannel",{new_channel_name:t})}}),f.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===s,color:"transparent",onClick:function(){return n("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:d+"...",currentValue:d,onCommit:function(e,t){return n("PRG_changename",{new_name:t})}}),!!c&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(l?"ON":"OFF"),color:l?"bad":"good",onClick:function(){return n("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:v&&(N?b.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return n("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),v&&N&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return n("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return n("PRG_leavechannel")}})],4),!!p&&u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return n("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return n("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return n("PRG_setpassword",{new_password:t})}})],4)]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(1),r=n(3),a=n(2);t.NtosNetDownloader=function(e){var t=e.state,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.disk_size,d=l.disk_used,s=l.downloadable_programs,p=void 0===s?[]:s,m=l.error,f=l.hacked_programs,h=void 0===f?[]:f,C=l.hackedavailable;return(0,o.createFragment)([!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:m}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return c("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d,minValue:0,maxValue:u,children:d+" GQ / "+u+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),h.map((function(e){return(0,o.createComponentVNode)(2,i,{state:t,program:e},e.filename)}))]})],0)};var i=function(e){var t=e.program,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.disk_size,u=c.disk_used,d=c.downloadcompletion,s=c.downloading,p=c.downloadname,m=c.downloadsize,f=l-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:t.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[t.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:t.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:m,value:d})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:s||t.size>f,onClick:function(){return i("PRG_downloadfile",{filename:t.filename})}})})]}),"Compatible"!==t.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),t.size>f&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:t.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitor=void 0;var o=n(1),r=n(24),a=n(70),i=n(18),c=n(3),l=n(2),u=n(37),d=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e){var t=e.state,n=(0,c.useBackend)(e),p=n.act,m=n.data,f=m.active,h=m.SM_integrity,C=m.SM_power,g=m.SM_ambienttemp,b=m.SM_ambientpressure;if(!f)return(0,o.createComponentVNode)(2,s,{state:t});var v=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),N=Math.max.apply(Math,[1].concat(v.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:C,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,i.toFixed)(C)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:d(g),minValue:0,maxValue:d(1e4),ranges:{teal:[-Infinity,d(80)],good:[d(80),d(373)],average:[d(373),d(1e3)],bad:[d(1e3),Infinity]},children:(0,i.toFixed)(g)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:d(b),minValue:0,maxValue:d(5e4),ranges:{good:[d(1),d(300)],average:[-Infinity,d(1e3)],bad:[d(1e3),+Infinity]},children:(0,i.toFixed)(b)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return p("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.Box.Forced,{height:24*v.length+"px",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:v.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,u.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,u.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:N,children:(0,i.toFixed)(e.amount,2)+"%"})},e.name)}))})})})})]})};var s=function(e){var t=(0,c.useBackend)(e),n=t.act,r=t.data.supermatters,a=void 0===r?[]:r;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return n("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:a.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return n("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWrapper=void 0;var o=n(1),r=n(3),a=n(2),i=n(116);t.NtosWrapper=function(e){var t=e.children,n=(0,r.useBackend)(e),c=n.act,l=n.data,u=l.PC_batteryicon,d=l.PC_showbatteryicon,s=l.PC_batterypercent,p=l.PC_ntneticon,m=l.PC_apclinkicon,f=l.PC_stationtime,h=l.PC_programheaders,C=void 0===h?[]:h,g=l.PC_showexitprogram;return(0,o.createVNode)(1,"div","NtosWrapper",[(0,o.createVNode)(1,"div","NtosWrapper__header NtosHeader",[(0,o.createVNode)(1,"div","NtosHeader__left",[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:f}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:"NtOS"})],4),(0,o.createVNode)(1,"div","NtosHeader__right",[C.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:e.icon})},e.icon)})),(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:p&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:p})}),!!d&&u&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[u&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:u}),s&&s]}),m&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:m})}),!!g&&(0,o.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return c("PC_minimize")}}),!!g&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return c("PC_exit")}}),!g&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-left",onClick:function(){return c("PC_shutdown")}})],0)],4,{onMouseDown:function(){(0,i.refocusLayout)()}}),(0,o.createVNode)(1,"div","NtosWrapper__content",t,0)],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(1),r=n(12),a=n(3),i=n(2),c=function(e){var t=(0,a.useBackend)(e).act;return(0,o.createComponentVNode)(2,i.Box,{width:"185px",children:(0,o.createComponentVNode)(2,i.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,mb:1,content:e,textAlign:"center",fontSize:"40px",lineHeight:"50px",width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return t("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e){var t=e.state,n=(0,a.useBackend)(e),r=n.act,l=n.data,u=(l.anchored,l.disk_present,l.status1),d=l.status2;return(0,o.createComponentVNode)(2,i.Box,{m:1,children:[(0,o.createComponentVNode)(2,i.Box,{mb:1,className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,i.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Box,{className:"NuclearBomb__displayBox",children:d})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",fontSize:"24px",lineHeight:"23px",textAlign:"center",width:"43px",ml:1,mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,i.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,c,{state:t})}),(0,o.createComponentVNode)(2,i.Flex.Item,{ml:1,width:"129px",children:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:"32px",mb:1,className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:"32px",className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,i.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,i.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(1),r=n(3),a=n(2);t.OperatingComputer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.table,l=i.surgeries,u=void 0===l?[]:l,d=i.procedures,s=void 0===d?[]:d,p=i.patient,m=void 0===p?{}:p;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Patient State",children:[!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"}),(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",level:2,children:m?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",content:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]}):"No Patient Detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"Initiated Procedures",level:2,children:s.length?s.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!i.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)})):"No Active Procedures"})]})]},"state"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{label:"Surgery Procedures",children:(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return n("sync")}}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})},"procedures")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(1),r=n(23),a=n(16),i=n(2);t.OreBox=function(e){var t=e.state,n=t.config,c=t.data,l=n.ref,u=c.materials;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Empty",onClick:function(){return(0,a.act)(l,"removeall")}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(1),r=n(23),a=n(3),i=n(2);t.OreRedemptionMachine=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,l=r.unclaimedPoints,u=r.materials,d=r.alloys,s=r.diskDesigns,p=r.hasDisk;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),l,(0,o.createComponentVNode)(2,i.Button,{ml:2,content:"Claim",disabled:0===l,onClick:function(){return n("Claim")}})]})]}),(0,o.createComponentVNode)(2,i.Section,{children:p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{mb:1,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return n("diskEject")}})}),(0,o.createComponentVNode)(2,i.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return n("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,i.Button,{icon:"save",content:"Insert design disk",onClick:function(){return n("diskInsert")}})}),(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,i.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,i.Table,{children:d.map((function(e){return(0,o.createComponentVNode)(2,c,{material:e,onRelease:function(t){return n("Smelt",{id:e.id,sheets:t})}},e.id)}))})})],4)};var c=function(e){var t,n;function a(){var t;return(t=e.call(this)||this).state={amount:1},t}return n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,a.prototype.render=function(){var e=this,t=this.state.amount,n=this.props,a=n.material,c=n.onRelease,l=Math.floor(a.amount);return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,r.toTitleCase)(a.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:a.value&&a.value+" cr"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Box,{mr:2,color:"label",inline:!0,children:[l," sheets"]})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:t,onChange:function(t,n){return e.setState({amount:n})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:l<1,content:"Release",onClick:function(){return c(t)}})]})]})},a}(o.Component)},function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(1),r=n(24),a=n(3),i=n(2),c=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.has_beaker,l=r.beaker_empty,u=r.has_blood,d=r.blood,s=!c||l;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:s,onClick:function(){return n("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"trash",content:"Empty",disabled:s,onClick:function(){return n("empty_beaker")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!c,onClick:function(){return n("eject_beaker")}})],4),children:c?l?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood DNA",children:d&&d.dna||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:d&&d.type||"Unknown"})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=c;var l=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.is_ready;return(r.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,i.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,i.Input,{value:e.name,onChange:function(t,o){return n("rename_disease",{index:e.index,name:o})}}):e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"flask",content:"Create culture bottle",disabled:!c,onClick:function(){return n("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,i.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=l;var u=function(e){var t=e.symptom,n=t.name,a=t.desc,c=t.stealth,l=t.resistance,u=t.stage_speed,d=t.transmission,s=t.level,p=t.neutered,m=(0,r.map)((function(e,t){return{desc:e,label:t}}))(t.threshold_desc||{});return(0,o.createComponentVNode)(2,i.Section,{title:n,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,i.Grid,{children:[(0,o.createComponentVNode)(2,i.Grid.Column,{size:2,children:a}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Level",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Resistance",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stealth",children:c}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transmission",children:d})]})})]}),m.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var d=function(e){var t=(0,a.useBackend)(e),n=t.act,r=t.data,c=r.resistances||[];return(0,o.createComponentVNode)(2,i.Section,{title:"Antibodies",children:c.length>0?(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!r.is_ready,onClick:function(){return n("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=d;t.Pandemic=function(e){var t=(0,a.useBackend)(e).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),!!t.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{state:e.state}),(0,o.createComponentVNode)(2,d,{state:e.state})],4)],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableGenerator=void 0;var o=n(1),r=n(3),a=n(2);t.PortableGenerator=function(e){var t,n=(0,r.useBackend)(e),i=n.act,c=n.data;return t=c.stack_percent>50?"good":c.stack_percent>15?"average":"bad",(0,o.createFragment)([!c.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:c.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!c.ready_to_boot,children:c.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:c.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t,children:c.sheets}),c.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:c.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:c.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):c.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:c.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:c.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:c.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!c.connected&&"bad",children:c.connected?c.power_available:"Unconnected"})})]})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=t.PortablePump=t.PortableBasicInfo=void 0;var o=n(1),r=n(3),a=n(2),i=n(37),c=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.connected,l=i.holding,u=i.on,d=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:c?"good":"average",children:c?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return n("eject")}}),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:l.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)};t.PortableBasicInfo=c;t.PortablePump=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,l=i.direction,u=(i.holding,i.target_pressure),d=i.default_pressure,s=i.min_pressure,p=i.max_pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-in-alt":"sign-out-alt",content:l?"In":"Out",selected:l,onClick:function(){return n("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:u,unit:"kPa",width:"75px",minValue:s,maxValue:p,step:10,onChange:function(e,t){return n("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:u===s,onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:u===d,onClick:function(){return n("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:u===p,onClick:function(){return n("pressure",{pressure:"max"})}})]})]})})],4)};t.PortableScrubber=function(e){var t=(0,r.useBackend)(e),n=t.act,l=t.data.filter_types||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,c,{state:e.state}),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return n("toggle_filter",{val:e.gas_id})}},e.id)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.PowerMonitor=void 0;var o=n(1),r=n(24),a=n(70),i=n(18),c=n(12),l=n(2);var u=5e5,d=function(e){var t=String(e.split(" ")[1]).toLowerCase();return["w","kw","mw","gw"].indexOf(t)},s=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).state={sortByField:null},t}return n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,c.prototype.render=function(){var e=this,t=this.props.state.data,n=t.history,c=this.state.sortByField,s=n.supply[n.supply.length-1]||0,f=n.demand[n.demand.length-1]||0,h=n.supply.map((function(e,t){return[t,e]})),C=n.demand.map((function(e,t){return[t,e]})),g=Math.max.apply(Math,[u].concat(n.supply,n.demand)),b=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===c&&(0,r.sortBy)((function(e){return e.name})),"charge"===c&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===c&&(0,r.sortBy)((function(e){return-d(e.load)}),(function(e){return-parseFloat(e.load)}))])(t.areas);return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"200px",children:(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Supply",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s,minValue:0,maxValue:g,color:"teal",content:(0,i.toFixed)(s/1e3)+" kW"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Draw",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:f,minValue:0,maxValue:g,color:"pink",content:(0,i.toFixed)(f/1e3)+" kW"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,l.Section,{position:"relative",height:"100%",children:[(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:h,rangeX:[0,h.length-1],rangeY:[0,g],strokeColor:"rgba(0, 181, 173, 1)",fillColor:"rgba(0, 181, 173, 0.25)"}),(0,o.createComponentVNode)(2,l.Chart.Line,{fillPositionedParent:!0,data:C,rangeX:[0,C.length-1],rangeY:[0,g],strokeColor:"rgba(224, 57, 151, 1)",fillColor:"rgba(224, 57, 151, 0.25)"})]})})]}),(0,o.createComponentVNode)(2,l.Section,{children:[(0,o.createComponentVNode)(2,l.Box,{mb:1,children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===c,content:"Name",onClick:function(){return e.setState({sortByField:"name"!==c&&"name"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===c,content:"Charge",onClick:function(){return e.setState({sortByField:"charge"!==c&&"charge"})}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===c,content:"Draw",onClick:function(){return e.setState({sortByField:"draw"!==c&&"draw"})}})]}),(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),b.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,e.name,0),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,p,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.eqp}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.lgt}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,m,{status:e.env}),2)],4,null,e.id)}))]})]})],4)},c}(o.Component);t.PowerMonitor=s;var p=function(e){var t=e.charging,n=e.charge;return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Icon,{width:"18px",textAlign:"center",name:0===t&&(n>50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,l.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,i.toFixed)(n)+"%"})],4)};p.defaultHooks=c.pureComponentHooks;var m=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,l.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};m.defaultHooks=c.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(1),r=n(24),a=n(18),i=n(3),c=n(2),l=n(37);t.Radio=function(e){var t=(0,i.useBackend)(e),n=t.act,u=t.data,d=u.freqlock,s=u.frequency,p=u.minFrequency,m=u.maxFrequency,f=u.listening,h=u.broadcasting,C=u.command,g=u.useCommand,b=u.subspace,v=u.subspaceSwitchable,N=l.RADIO_CHANNELS.find((function(e){return e.freq===s})),V=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(u.channels);return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",children:[d&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(s/10,1)+" kHz"})||(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:p/10,maxValue:m/10,value:s/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return n("frequency",{adjust:t-s/10})}}),N&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:N.color,ml:2,children:["[",N.name,"]"]})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:f?"volume-up":"volume-mute",selected:f,onClick:function(){return n("listen")}}),(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",width:"37px",icon:h?"microphone":"microphone-slash",selected:h,onClick:function(){return n("broadcast")}}),!!C&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:g,content:"High volume "+(g?"ON":"OFF"),onClick:function(){return n("command")}}),!!v&&(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"bullhorn",selected:b,content:"Subspace Tx "+(b?"ON":"OFF"),onClick:function(){return n("subspace")}})]}),!!b&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Channels",children:[0===V.length&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),V.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return n("channel",{channel:e.name})}})},e.name)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(1),r=n(12),a=n(3),i=n(2),c=["Atmospherics","Disposals","Transit Tubes"],l={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},d=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e){var t=(0,a.useBackend)(e),n=t.act,s=t.data,p=s.category,m=s.categories,f=void 0===m?[]:m,h=s.selected_color,C=s.piping_layer,g=s.mode,b=s.preview_rows.flatMap((function(e){return e.previews}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Category",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{selected:p===t,icon:l[e],color:"transparent",content:e,onClick:function(){return n("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Modes",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:g&e.bitmask,content:e.name,onClick:function(){return n("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,width:"64px",color:u[h],content:h}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,i.ColorBox,{ml:1,color:u[e],onClick:function(){return n("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,i.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,i.Section,{children:[0===p&&(0,o.createComponentVNode)(2,i.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:e===C,content:"Layer "+e,onClick:function(){return n("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,i.Box,{width:"108px",children:b.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return n("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,i.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:f.map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{fluid:!0,icon:l[e.cat_name],label:e.cat_name,children:function(){return e.recipes.map((function(t){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:t.selected,content:t.pipe_name,title:t.pipe_name,onClick:function(){return n("pipe_type",{pipe_type:t.pipe_index,category:e.cat_name})}},t.pipe_index)}))}},e.cat_name)}))})})})]})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(1),r=n(3),a=n(2),i=n(163);t.SatelliteControl=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data,l=c.satellites||[];return(0,o.createFragment)([c.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c.meteor_shield_coverage/c.meteor_shield_coverage_max,content:100*c.meteor_shield_coverage/c.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return n("toggle",{id:e.id})}},e.id)}))})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(1),r=n(3),a=n(2),i=n(69),c=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],l=[{name:"Human",value:"human"},{name:"Lizardperson",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e){var t=e.state,n=(0,r.useBackend)(e),a=n.act,c=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox,{locked:c.locked,onLockedStatusChange:function(){return a("toggle_lock")}}),!c.locked&&(0,o.createComponentVNode)(2,s,{state:t})],0)};var d={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return m}},Guns:{title:"Scanner Mode: Guns",component:function(){return f}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return h}},Disease:{title:"Scanner Mode: Disease",component:function(){return C}},Species:{title:"Scanner Mode: Species",component:function(){return g}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return b}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return v}}},s=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data.scan_mode,l=d[c]||d.off,u=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==c&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return i("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,u,{state:t})})},p=function(e){var t=(0,r.useBackend)(e).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return t("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return t("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return t("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return t("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return t("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return t("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return t("set_mode",{new_mode:"Nanites"})}})]})],4)},m=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,N,{state:t})],4)},f=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,N,{state:t})],4)},h=function(e){var t=e.state,n=(0,r.useBackend)(e).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,N,{state:t})],4)},C=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,l=n.data,u=l.reverse,d=l.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",u?"does not have":"has"," ","a disease equal or worse than ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===d,content:e,onClick:function(){return i("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,N,{state:t})],4)},g=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,u=c.reverse,d=c.target_species,s=l.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",u?"not":""," ","of the ",s.name," species.","zombie"===d&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return i("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,N,{state:t})],4)},b=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,d=c.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return i("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,N,{state:t})],4)},v=function(e){var t=e.state,n=(0,r.useBackend)(e),i=n.act,c=n.data,l=c.reverse,u=c.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:u,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return i("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,N,{state:t})],4)},N=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return n("toggle_reverse")},color:i?"bad":"good"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulator=void 0;var o=n(1),r=n(24),a=n(3),i=n(2);t.ShuttleManipulator=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.shuttles||[],u=c.templates||{},d=c.selected||{},s=c.existing_shuttle||{};return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Status",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"JMP",onClick:function(){return n("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return n("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,i.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return n("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})}},"status"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Templates",children:function(){return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:(0,r.map)((function(e,t){var r=e.templates||[];return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:e.port_id,children:r.map((function(e){var t=e.shuttle_id===d.shuttle_id;return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return n("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))},t)}))(u)})})}},"templates"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:"Modification",children:(0,o.createComponentVNode)(2,i.Section,{children:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{level:2,title:d.name,children:(!!d.description||!!d.admin_notes)&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[!!d.description&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Description",children:d.description}),!!d.admin_notes&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Admin Notes",children:d.admin_notes})]})}),s?(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: "+s.name,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{content:"Jump To",onClick:function(){return n("jump_to",{type:"mobile",id:s.id})}}),children:[s.status,!!s.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),s.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,i.Button,{content:"Preview",onClick:function(){return n("preview",{shuttle_id:d.shuttle_id})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Load",color:"bad",onClick:function(){return n("load",{shuttle_id:d.shuttle_id})}})]})],0):"No shuttle selected"})},"modification")]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(1),r=n(3),a=n(2);t.Sleeper=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.occupied,l=i.open,u=i.occupant,d=void 0===u?[]:u,s=(i.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0})),p=(i.synthchems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:d.name?d.name:"No Occupant",minHeight:"210px",buttons:!!d.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:d.statstate,children:d.stat}),children:!!c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health,minValue:d.minHealth,maxValue:d.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}].map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d[e.type],minValue:0,maxValue:d.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.blood_levels/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i.blood_levels})}),i.blood_status]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:d.cloneLoss?"bad":"good",children:d.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:d.brainLoss?"bad":"good",children:d.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Chemical Analysis",children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemical Contents",children:i.chemical_list.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[e.volume," units of ",e.name]},e.id)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Inject Chemicals",minHeight:"105px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l?"door-open":"door-closed",content:l?"Open":"Closed",onClick:function(){return n("door")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!(c&&e.allowed),width:"140px",onClick:function(){return n("inject",{chem:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Synthesize Chemicals",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,width:"140px",onClick:function(){return n("synth",{chem:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Purge Chemicals",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,disabled:!e.allowed,width:"140px",onClick:function(){return n("purge",{chem:e.id})}},e.name)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(1),r=n(3),a=n(2),i=function(e){var t=e.body,n=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:t.htmlcolor,children:t.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:{owner:"You Are Here",stranger:"Occupied",available:"Swap"}[t.occupied],selected:"owner"===t.occupied,color:"stranger"===t.occupied&&"bad",onClick:function(){return n()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:{Dead:"bad",Unconscious:"average",Conscious:"good"}[t.status],children:t.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:t.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:t.area})]})})};t.BodyEntry=i;t.SlimeBodySwapper=function(e){var t=(0,r.useBackend)(e),n=t.act,c=t.data.bodies,l=void 0===c?[]:c;return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,i,{body:e,swapFunc:function(){return n("swap",{ref:e.ref})}},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(1),r=n(2),a=n(3),i=n(18);t.Signaler=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data,l=c.code,u=c.frequency,d=c.minFrequency,s=c.maxFrequency;return(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Grid,{children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:d/10,maxValue:s/10,value:u/10,format:function(e){return(0,i.toFixed)(e,1)},width:13,onDrag:function(e,t){return n("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,r.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:l,width:13,onDrag:function(e,t){return n("code",{code:t})}})}),(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return n("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,r.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,r.Grid.Column,{children:(0,o.createComponentVNode)(2,r.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return n("signal")}})})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(1),r=n(24),a=n(3),i=n(2);t.SmartVend=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",buttons:!!c.isdryer&&(0,o.createComponentVNode)(2,i.Button,{icon:c.drying?"stop":"tint",onClick:function(){return n("Dry")},children:c.drying?"Stop drying":"Dry"}),children:0===c.contents.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Unfortunately, this ",c.name," is empty."]})||(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"center",children:c.verb?c.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,i.Button,{content:"One",disabled:e.amount<1,onClick:function(){return n("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return n("Release",{name:e.name})}})]})]},t)}))(c.contents)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(1),r=n(3),a=n(2);t.Smes=function(e){var t,n,i=(0,r.useBackend)(e),c=i.act,l=i.data;return t=l.capacityPercent>=100?"good":l.inputting?"average":"bad",n=l.outputting?"good":l.charge>0?"average":"bad",(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*l.capacityPercent,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.inputAttempt?"sync-alt":"times",selected:l.inputAttempt,onClick:function(){return c("tryinput")},children:l.inputAttempt?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:t,children:l.capacityPercent>=100?"Fully Charged":l.inputting?"Charging":"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.inputLevel/l.inputLevelMax,content:l.inputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Input",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.inputLevel,onClick:function(){return c("input",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.inputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.inputLevelMax/1e3,onChange:function(e,t){return c("input",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.inputLevel===l.inputLevelMax,onClick:function(){return c("input",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:l.inputAvailable})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.outputAttempt?"power-off":"times",selected:l.outputAttempt,onClick:function(){return c("tryoutput")},children:l.outputAttempt?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:n,children:l.outputting?"Sending":l.charge>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.outputLevel/l.outputLevelMax,content:l.outputLevel_text})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust Output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===l.outputLevel,onClick:function(){return c("output",{adjust:-1e4})}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(l.outputLevel/1e3),unit:"kW",width:"65px",minValue:0,maxValue:l.outputLevelMax/1e3,onChange:function(e,t){return c("output",{target:1e3*t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:l.outputLevel===l.outputLevelMax,onClick:function(){return c("output",{target:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:l.outputUsed})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(1),r=n(3),a=n(2);t.SmokeMachine=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.TankContents,l=(i.isTankLoaded,i.TankCurrentVolume),u=i.TankMaxVolume,d=i.active,s=i.setting,p=(i.screen,i.maxSetting),m=void 0===p?[]:p;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",selected:d,content:d?"On":"Off",onClick:function(){return n("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/u,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:l||0})," / "+u]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:s===e,icon:"plus",content:3*e,disabled:m0?"good":"bad",children:m})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:l,content:c+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===p,onClick:function(){return n("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===p,onClick:function(){return n("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===p,disabled:!f,onClick:function(){return n("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===p||1===p)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:u,onDrag:function(e,t){return n("azimuth",{value:t})}}),1===p&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-s-.01,maxValue:s+.01,value:d,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return n("azimuth_rate",{value:t})}}),2===p&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[u+" \xb0"," (auto)"]})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(1),r=n(3),a=n(2);t.SpaceHeater=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!i.hasPowercell||!i.open,onClick:function(){return n("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:i.on?"power-off":"times",content:i.on?"On":"Off",selected:i.on,disabled:!i.hasPowercell,onClick:function(){return n("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!i.hasPowercell&&"bad",children:i.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.powerLevel/100,content:i.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(i.targetTemp-i.currentTemp)>50?"bad":Math.abs(i.targetTemp-i.currentTemp)>20?"average":"good",children:[i.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:i.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.targetTemp),width:"65px",unit:"\xb0C",minValue:i.minTemp,maxValue:i.maxTemp,onChange:function(e,t){return n("target",{target:t})}})||i.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:i.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===i.mode,onClick:function(){return n("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===i.mode,onClick:function(){return n("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===i.mode,onClick:function(){return n("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(1),r=n(3),a=n(2);t.SpawnersMenu=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data.spawners||[];return(0,o.createComponentVNode)(2,a.Section,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return n("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return n("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsole=void 0;var o=n(1),r=n(3),a=n(2);t.StationAlertConsole=function(e){var t=(0,r.useBackend)(e).data.alarms||[],n=t.Fire||[],i=t.Atmosphere||[],c=t.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===n.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),n.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(1),r=n(3),a=n(2);t.SuitStorageUnit=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.locked,l=i.open,u=i.safeties,d=i.uv_active,s=i.occupied,p=i.suit,m=i.helmet,f=i.mask,h=i.storage;return(0,o.createFragment)([!(!s||!u)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.Button,{icon:c?"unlock":"lock",content:c?"Unlock":"Lock",onClick:function(){return n("lock")}}),!c&&(0,o.createComponentVNode)(2,a.Button,{icon:l?"sign-out-alt":"sign-in-alt",content:l?"Close":"Open",onClick:function(){return n("door")}})],0),children:c&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||l&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"square":"square-o",content:m||"Empty",disabled:!m,onClick:function(){return n("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:p?"square":"square-o",content:p||"Empty",disabled:!p,onClick:function(){return n("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:f?"square":"square-o",content:f||"Empty",disabled:!f,onClick:function(){return n("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return n("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:s&&u,textAlign:"center",onClick:function(){return n("uv")}})})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.Tank=void 0;var o=n(1),r=n(3),a=n(2);t.Tank=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i.tankPressure/1013,content:i.tankPressure+" kPa",ranges:{good:[.35,Infinity],average:[.15,.35],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:i.ReleasePressure===i.minReleasePressure,onClick:function(){return n("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(i.releasePressure),width:"65px",unit:"kPa",minValue:i.minReleasePressure,maxValue:i.maxReleasePressure,onChange:function(e,t){return n("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:i.ReleasePressure===i.maxReleasePressure,onClick:function(){return n("pressure",{pressure:"max"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"",disabled:i.ReleasePressure===i.defaultReleasePressure,onClick:function(){return n("pressure",{pressure:"reset"})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TankDispenser=void 0;var o=n(1),r=n(3),a=n(2);t.TankDispenser=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plasma",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.plasma?"square":"square-o",content:"Dispense",disabled:!i.plasma,onClick:function(){return n("plasma")}}),children:i.plasma}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:i.oxygen?"square":"square-o",content:"Dispense",disabled:!i.oxygen,onClick:function(){return n("oxygen")}}),children:i.oxygen})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Teleporter=void 0;var o=n(1),r=n(3),a=n(2);t.Teleporter=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=i.calibrated,l=i.calibrating,u=i.power_station,d=i.regime_set,s=i.teleporter_hub,p=i.target;return(0,o.createComponentVNode)(2,a.Section,{children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No power station linked."})||!s&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No hub linked."})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Regime",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Change Regime",onClick:function(){return n("regimeset")}}),children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Target",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Set Target",onClick:function(){return n("settarget")}}),children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Calibration",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"tools",content:"Calibrate Hub",onClick:function(){return n("calibrate")}}),children:l&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"In Progress"})||c&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Optimal"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Sub-Optimal"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ThermoMachine=void 0;var o=n(1),r=n(18),a=n(3),i=n(2);t.ThermoMachine=function(e){var t=(0,a.useBackend)(e),n=t.act,c=t.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:c.temperature,format:function(e){return(0,r.toFixed)(e,2)}})," K"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:c.pressure,format:function(e){return(0,r.toFixed)(e,2)}})," kPa"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:c.on?"power-off":"times",content:c.on?"On":"Off",selected:c.on,onClick:function(){return n("power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:Math.round(c.target),unit:"K",width:"62px",minValue:Math.round(c.min),maxValue:Math.round(c.max),step:5,stepPixelSize:3,onDrag:function(e,t){return n("target",{target:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:c.target===c.min,title:"Minimum temperature",onClick:function(){return n("target",{target:c.min})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",disabled:c.target===c.initial,title:"Room Temperature",onClick:function(){return n("target",{target:c.initial})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:c.target===c.max,title:"Maximum Temperature",onClick:function(){return n("target",{target:c.max})}})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.TurbineComputer=void 0;var o=n(1),r=n(3),a=n(2);t.TurbineComputer=function(e){var t=(0,r.useBackend)(e),n=t.act,i=t.data,c=Boolean(i.compressor&&!i.compressor_broke&&i.turbine&&!i.turbine_broke);return(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:i.online?"power-off":"times",content:i.online?"Online":"Offline",selected:i.online,disabled:!c,onClick:function(){return n("toggle_power")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reconnect",onClick:function(){return n("reconnect")}})],4),children:!c&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Compressor Status",color:!i.compressor||i.compressor_broke?"bad":"good",children:i.compressor_broke?i.compressor?"Offline":"Missing":"Online"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Status",color:!i.turbine||i.turbine_broke?"bad":"good",children:i.turbine_broke?i.turbine?"Offline":"Missing":"Online"})]})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Speed",children:[i.rpm," RPM"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Temp",children:[i.temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Generated Power",children:i.power})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Uplink=void 0;var o=n(1),r=n(23),a=n(16),i=n(2);var c=function(e){var t,n;function r(){var t;return(t=e.call(this)||this).state={hoveredItem:{},currentSearch:""},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.setHoveredItem=function(e){this.setState({hoveredItem:e})},c.setSearchText=function(e){this.setState({currentSearch:e})},c.render=function(){var e=this,t=this.props.state,n=t.config,r=t.data,c=n.ref,u=r.compact_mode,d=r.lockable,s=r.telecrystals,p=r.categories,m=void 0===p?[]:p,f=this.state,h=f.hoveredItem,C=f.currentSearch;return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:s>0?"good":"bad",children:[s," TC"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{value:C,onInput:function(t,n){return e.setSearchText(n)},ml:1,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:u?"list":"info",content:u?"Compact":"Detailed",onClick:function(){return(0,a.act)(c,"compact_toggle")}}),!!d&&(0,o.createComponentVNode)(2,i.Button,{icon:"lock",content:"Lock",onClick:function(){return(0,a.act)(c,"lock")}})],0),children:C.length>0?(0,o.createVNode)(1,"table","Table",(0,o.createComponentVNode)(2,l,{compact:!0,items:m.flatMap((function(e){return e.items||[]})).filter((function(e){var t=C.toLowerCase();return String(e.name+e.desc).toLowerCase().includes(t)})),hoveredItem:h,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}}),2):(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:m.map((function(t){var n=t.name,r=t.items;if(null!==r)return(0,o.createComponentVNode)(2,i.Tabs.Tab,{label:n+" ("+r.length+")",children:function(){return(0,o.createComponentVNode)(2,l,{compact:u,items:r,hoveredItem:h,telecrystals:s,onBuyMouseOver:function(t){return e.setHoveredItem(t)},onBuyMouseOut:function(t){return e.setHoveredItem({})},onBuy:function(e){return(0,a.act)(c,"buy",{item:e.name})}})}},n)}))})})},r}(o.Component);t.Uplink=c;var l=function(e){var t=e.items,n=e.hoveredItem,a=e.telecrystals,c=e.compact,l=e.onBuy,u=e.onBuyMouseOver,d=e.onBuyMouseOut,s=n&&n.cost||0;return c?(0,o.createComponentVNode)(2,i.Table,{children:t.map((function(e){var t=n&&n.name!==e.name,c=a-s1?r-1:0),i=1;i1?t-1:0),o=1;o ChemAcclimator,
scrollable: false,
},
+ chem_dispenser: {
+ component: () => ChemDispenser,
+ scrollable: true,
+ },
chemical_filter: {
component: () => ChemFilter,
scrollable: true,
},
+ chem_heater: {
+ component: () => ChemHeater,
+ scrollable: true,
+ },
+ chem_master: {
+ component: () => ChemMaster,
+ scrollable: true,
+ },
chem_press: {
component: () => ChemPress,
scrollable: false,
@@ -441,6 +458,10 @@ const ROUTES = {
component: () => ShuttleManipulator,
scrollable: true,
},
+ sleeper: {
+ component: () => Sleeper,
+ scrollable: false,
+ },
slime_swap_body: {
component: () => SlimeBodySwapper,
scrollable: true,
@@ -510,6 +531,10 @@ const ROUTES = {
component: () => VaultController,
scrollable: false,
},
+ vending: {
+ component: () => Vending,
+ scrollable: true,
+ },
wires: {
component: () => Wires,
scrollable: false,
diff --git a/tgui/package-lock.json b/tgui/package-lock.json
index d2567aba36..1de061b1c5 100644
--- a/tgui/package-lock.json
+++ b/tgui/package-lock.json
@@ -5480,9 +5480,9 @@
}
},
"minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-rIqbOrKb8GJmx/5bc2M0QchhUouMXSpd1RTclXsB41JdL+VtnojfaJR+h7F9k18/4kHUsBFgk80Uk+q569vjPA=="
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.3.tgz",
+ "integrity": "sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw=="
},
"mixin-deep": {
"version": "1.3.2",
diff --git a/tgui/package.json b/tgui/package.json
index 85d47ecfe7..0e47e25e76 100644
--- a/tgui/package.json
+++ b/tgui/package.json
@@ -35,7 +35,7 @@
"html5shiv": "3.7.3",
"ie8": "0.8.1",
"lodash": "^4.17.15",
- "minimist": "1.2.2",
+ "minimist": "1.2.3",
"paths-js": "0.4.10",
"pleeease-filters": "2.0.0",
"postcss": "7.0.18",
diff --git a/tools/WebhookProcessor/github_webhook_processor.php b/tools/WebhookProcessor/github_webhook_processor.php
index 76dd158727..0739c7182c 100644
--- a/tools/WebhookProcessor/github_webhook_processor.php
+++ b/tools/WebhookProcessor/github_webhook_processor.php
@@ -23,7 +23,6 @@ define('F_UNVALIDATED_USER', 1<<0);
define('F_SECRET_PR', 1<<1);
//CONFIGS ARE IN SECRET.PHP, THESE ARE JUST DEFAULTS!
-
$hookSecret = '08ajh0qj93209qj90jfq932j32r';
$apiKey = '209ab8d879c0f987d06a09b9d879c0f987d06a09b9d8787d0a089c';
$repoOwnerAndName = "tgstation/tgstation";