diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml
new file mode 100644
index 00000000000..4894870752b
--- /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_MASTER_KEY }}
diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt
index 680acb2ae08..f84268b8a34 100644
--- a/SQL/database_changelog.txt
+++ b/SQL/database_changelog.txt
@@ -1,13 +1,32 @@
Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255.
-The latest database version is 5.6; The query to update the schema revision table is:
+The latest database version is 5.7; The query to update the schema revision table is:
-INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 6);
+INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 7);
or
-INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 6);
+INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 7);
In any query remember to add a prefix to the table names if you use one.
+-----------------------------------------------------
+
+Version 5.7, 10 January 2020 by Atlanta-Ned
+Added ticket table for tracking ahelp tickets in the database.
+
+DROP TABLE IF EXISTS `ticket`;
+CREATE TABLE `ticket` (
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+ `server_ip` int(10) unsigned NOT NULL,
+ `server_port` smallint(5) unsigned NOT NULL,
+ `round_id` int(11) unsigned NOT NULL,
+ `ticket` smallint(11) unsigned NOT NULL,
+ `action` varchar(20) NOT NULL DEFAULT 'Message',
+ `message` text NOT NULL,
+ `timestamp` datetime NOT NULL,
+ `recipient` varchar(32) DEFAULT NULL,
+ `sender` varchar(32) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-----------------------------------------------------
diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql
index 7a5db181e84..a9b2c65fef1 100644
--- a/SQL/tgstation_schema.sql
+++ b/SQL/tgstation_schema.sql
@@ -537,6 +537,24 @@ CREATE TABLE `achievement_metadata` (
PRIMARY KEY (`achievement_key`)
) ENGINE=InnoDB;
+--
+-- Table structure for table `ticket`
+--
+DROP TABLE IF EXISTS `ticket`;
+CREATE TABLE `ticket` (
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+ `server_ip` int(10) unsigned NOT NULL,
+ `server_port` smallint(5) unsigned NOT NULL,
+ `round_id` int(11) unsigned NOT NULL,
+ `ticket` smallint(11) unsigned NOT NULL,
+ `action` varchar(20) NOT NULL DEFAULT 'Message',
+ `message` text NOT NULL,
+ `timestamp` datetime NOT NULL,
+ `recipient` varchar(32) DEFAULT NULL,
+ `sender` varchar(32) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql
index 3122bab69fb..845a23ea7d1 100644
--- a/SQL/tgstation_schema_prefixed.sql
+++ b/SQL/tgstation_schema_prefixed.sql
@@ -537,6 +537,24 @@ CREATE TABLE `SS13_achievement_metadata` (
PRIMARY KEY (`achievement_key`)
) ENGINE=InnoDB;
+--
+-- Table structure for table `SS13_ticket`
+--
+DROP TABLE IF EXISTS `SS13_ticket`;
+CREATE TABLE `SS13_ticket` (
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+ `server_ip` int(10) unsigned NOT NULL,
+ `server_port` smallint(5) unsigned NOT NULL,
+ `round_id` int(11) unsigned NOT NULL,
+ `ticket` smallint(11) unsigned NOT NULL,
+ `action` varchar(20) NOT NULL DEFAULT 'Message',
+ `message` text NOT NULL,
+ `timestamp` datetime NOT NULL,
+ `recipient` varchar(32) DEFAULT NULL,
+ `sender` varchar(32) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm
index ba317a2263b..670864f7d0a 100644
--- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm
+++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm
@@ -3,11 +3,7 @@
/turf/template_noop,
/area/template_noop)
"ab" = (
-/obj/machinery/power/shieldwallgen{
- active = 2;
- anchored = 1;
- power = 1
- },
+/obj/machinery/power/shieldwallgen/anchored,
/obj/structure/cable,
/turf/open/floor/plating/airless,
/area/ruin/space/has_grav/abandonedzoo)
@@ -153,11 +149,7 @@
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/abandonedzoo)
"aE" = (
-/obj/machinery/power/shieldwallgen{
- active = 2;
- anchored = 1;
- power = 1
- },
+/obj/machinery/power/shieldwallgen/anchored,
/obj/structure/cable,
/turf/open/floor/plating,
/area/ruin/space/has_grav/abandonedzoo)
@@ -248,7 +240,6 @@
/obj/machinery/power/apc/unlocked{
dir = 8;
environ = 0;
- equipment = 0;
lighting = 0;
name = "Worn-out APC";
pixel_x = -25
@@ -367,11 +358,8 @@
/turf/open/floor/plasteel/dark/side,
/area/ruin/space/has_grav/abandonedzoo)
"bf" = (
-/obj/machinery/power/smes/magical{
- desc = "A high-capacity superconducting magnetic energy storage (SMES) unit.";
- name = "power storage unit"
- },
/obj/structure/cable,
+/obj/machinery/power/smes/engineering,
/turf/open/floor/plasteel/dark/side,
/area/ruin/space/has_grav/abandonedzoo)
"bg" = (
@@ -435,13 +423,13 @@
/turf/open/floor/plasteel/dark/side,
/area/ruin/space/has_grav/abandonedzoo)
"bs" = (
-/obj/machinery/power/shieldwallgen,
/obj/structure/cable,
+/obj/machinery/power/shieldwallgen/anchored,
/turf/open/floor/plating,
/area/ruin/space/has_grav/abandonedzoo)
"bt" = (
-/obj/machinery/power/shieldwallgen,
/obj/structure/cable,
+/obj/machinery/power/shieldwallgen/anchored,
/turf/open/floor/plating/airless,
/area/ruin/space/has_grav/abandonedzoo)
"bu" = (
@@ -496,6 +484,7 @@
/area/ruin/space/has_grav/abandonedzoo)
"bD" = (
/obj/item/clothing/mask/facehugger/dead,
+/obj/structure/alien/weeds,
/turf/open/floor/plating/airless,
/area/ruin/space/has_grav/abandonedzoo)
"bE" = (
@@ -654,7 +643,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plating,
/area/ruin/space/has_grav/abandonedzoo)
"wF" = (
/obj/machinery/door/airlock/hatch{
@@ -690,6 +679,11 @@
"KN" = (
/turf/template_noop,
/area/space/nearstation)
+"Ng" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/weeds/node,
+/turf/open/floor/plating/airless,
+/area/ruin/space/has_grav/abandonedzoo)
(1,1,1) = {"
ab
@@ -979,7 +973,7 @@ bl
at
ac
bB
-bB
+Ng
bD
bH
ac
@@ -1002,7 +996,7 @@ ac
bC
bH
bH
-bX
+bB
bT
aa
"}
@@ -1022,7 +1016,7 @@ aL
aD
bD
bB
-bX
+Ng
bO
bU
bW
@@ -1043,7 +1037,7 @@ aQ
ac
bB
bB
-bX
+bB
bX
bP
aa
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 93df6599a9e..46d4c0e27e6 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -13003,6 +13003,18 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"aGC" = (
+/obj/machinery/button/door{
+ id = "xenobio5";
+ layer = 3.3;
+ name = "Xenobio Pen 5 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"aGD" = (
/obj/structure/table/wood,
/obj/structure/mirror{
@@ -19486,6 +19498,13 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
+"aYb" = (
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"aYc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
@@ -27295,6 +27314,7 @@
dir = 4
},
/obj/structure/cable,
+/obj/effect/landmark/start/paramedic,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bsz" = (
@@ -31893,13 +31913,10 @@
/turf/open/floor/engine,
/area/science/xenobiology)
"bEn" = (
-/obj/machinery/camera{
- c_tag = "Xenobiology Test Chamber";
- network = list("xeno","rd")
- },
/obj/machinery/light{
dir = 1
},
+/obj/machinery/camera/autoname,
/turf/open/floor/engine,
/area/science/xenobiology)
"bEo" = (
@@ -33542,13 +33559,27 @@
/area/science/xenobiology)
"bIO" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/obj/machinery/computer/camera_advanced/xenobio{
+ icon_state = "computer";
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 4;
+ layer = 2.9
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bIP" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/structure/chair/comfy/black,
+/obj/structure/chair/comfy/black{
+ dir = 8
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bIQ" = (
@@ -33884,6 +33915,7 @@
id = "misclab";
name = "test chamber blast door"
},
+/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/open/floor/engine,
/area/science/xenobiology)
"bJN" = (
@@ -34296,9 +34328,12 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bKW" = (
-/obj/item/wrench,
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bKX" = (
@@ -34346,11 +34381,13 @@
req_access_txt = "55"
},
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bLb" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
+/obj/item/wrench,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bLc" = (
@@ -34683,6 +34720,7 @@
/area/medical/medbay/central)
"bLX" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,
+/obj/effect/landmark/start/paramedic,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bLY" = (
@@ -34744,18 +34782,37 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bMl" = (
-/obj/machinery/processor/slime,
/obj/effect/turf_decal/stripes/line,
+/obj/item/radio/intercom{
+ pixel_y = 23
+ },
+/obj/structure/table/glass,
+/obj/item/storage/box/beakers{
+ pixel_x = 2;
+ pixel_y = 7
+ },
+/obj/item/storage/box/syringes{
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/dropper,
+/obj/item/reagent_containers/dropper,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bMm" = (
-/obj/machinery/monkey_recycler,
/obj/machinery/firealarm{
pixel_y = 24
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
+/obj/machinery/portable_atmospherics/canister/bz,
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bMn" = (
@@ -34768,26 +34825,46 @@
pixel_y = 5
},
/obj/effect/turf_decal/stripes/line,
+/obj/item/stack/sheet/mineral/plasma{
+ pixel_y = 4
+ },
+/obj/item/stack/sheet/mineral/plasma{
+ pixel_y = 4
+ },
+/obj/item/stack/sheet/mineral/plasma{
+ pixel_y = 4
+ },
+/obj/item/stack/sheet/mineral/plasma{
+ pixel_y = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bMo" = (
-/obj/machinery/smartfridge/extract/preloaded,
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/requests_console{
+ department = "Science";
+ departmentType = 2;
+ name = "Science Requests Console";
+ pixel_y = 27;
+ receive_ore_updates = 1
+ },
+/obj/machinery/chem_master,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bMp" = (
-/obj/structure/closet/l3closet/scientist,
/obj/machinery/light_switch{
pixel_y = 28
},
-/obj/item/extinguisher,
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/monkey_recycler,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bMq" = (
-/obj/structure/closet/l3closet/scientist,
-/obj/item/extinguisher,
/obj/effect/turf_decal/stripes/line,
+/obj/structure/table/glass,
+/obj/item/slime_scanner,
+/obj/item/clothing/gloves/color/latex,
+/obj/item/clothing/glasses/science,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bMr" = (
@@ -35497,13 +35574,6 @@
},
/turf/open/floor/plasteel,
/area/science/misc_lab)
-"bOz" = (
-/obj/structure/chair/stool,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"bOB" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
@@ -35914,15 +35984,16 @@
/area/medical/virology)
"bPx" = (
/obj/machinery/disposal/bin,
-/obj/structure/sign/warning/deathsposal{
- pixel_y = -32
- },
/obj/structure/disposalpipe/trunk{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/structure/sign/warning/deathsposal{
+ pixel_x = -31;
+ pixel_y = 0
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPy" = (
@@ -35930,23 +36001,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/structure/chair/comfy/black,
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bPz" = (
-/obj/structure/table/glass,
-/obj/item/storage/box/beakers{
- pixel_x = 2;
- pixel_y = 7
- },
-/obj/item/storage/box/syringes{
- pixel_y = 5
- },
-/obj/item/storage/box/monkeycubes{
- pixel_x = 2;
- pixel_y = -2
- },
-/obj/item/storage/box/monkeycubes,
/obj/machinery/light,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -35954,22 +36014,39 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/smartfridge/extract/preloaded,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPA" = (
-/obj/machinery/computer/camera_advanced/xenobio{
- dir = 1
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/structure/table/glass,
+/obj/item/storage/box/monkeycubes,
+/obj/machinery/button/door{
+ name = "Containment Blast Doors";
+ pixel_x = 1;
+ pixel_y = -26;
+ req_access_txt = "55";
+ id = "xenobiomain"
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPB" = (
/obj/structure/table/glass,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/structure/window/reinforced{
+ dir = 4;
+ layer = 2.9
+ },
/obj/item/paper_bin{
pixel_y = 4
},
@@ -35980,12 +36057,6 @@
/obj/item/pen{
pixel_x = -4
},
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPC" = (
@@ -36005,71 +36076,38 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
-/obj/machinery/portable_atmospherics/canister/bz,
+/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPG" = (
-/obj/machinery/chem_master,
-/obj/item/radio/intercom{
- pixel_y = -29
- },
/obj/machinery/light,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPH" = (
-/obj/machinery/requests_console{
- department = "Science";
- departmentType = 2;
- name = "Science Requests Console";
- pixel_y = -30;
- receive_ore_updates = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/table/reinforced,
-/obj/item/slime_scanner,
-/obj/item/clothing/gloves/color/latex,
-/obj/item/clothing/glasses/science,
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"bPI" = (
-/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/structure/rack,
+/obj/item/clothing/suit/hooded/wintercoat,
+/obj/item/clothing/shoes/winterboots,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPJ" = (
-/obj/structure/table/glass,
-/obj/item/stack/sheet/mineral/plasma{
- pixel_y = 4
- },
-/obj/item/stack/sheet/mineral/plasma{
- pixel_y = 4
- },
-/obj/item/stack/sheet/mineral/plasma{
- pixel_y = 4
- },
-/obj/item/stack/sheet/mineral/plasma{
- pixel_y = 4
- },
-/obj/item/reagent_containers/glass/beaker{
- pixel_x = 8;
- pixel_y = 2
- },
-/obj/item/reagent_containers/glass/beaker/large{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/reagent_containers/dropper,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/obj/item/reagent_containers/dropper,
+/obj/structure/closet/l3closet/scientist,
+/obj/item/extinguisher,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPK" = (
@@ -36413,6 +36451,10 @@
},
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobiomain";
+ name = "containment blast door"
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bQM" = (
@@ -36421,22 +36463,26 @@
dir = 1
},
/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobiomain";
+ name = "containment blast door"
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bQN" = (
/obj/machinery/door/firedoor,
-/obj/machinery/light{
- dir = 4
- },
-/obj/machinery/camera{
- c_tag = "Xenobiology North";
- dir = 8;
- network = list("ss13","rd")
- },
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobiomain";
+ name = "containment blast door"
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bQO" = (
@@ -36793,17 +36839,23 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/engineering)
"bRT" = (
-/obj/structure/disposalpipe/trunk{
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4;
+ external_pressure_bound = 140;
+ name = "killroom vent";
+ pressure_checks = 0
+ },
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
dir = 4
},
-/obj/structure/disposaloutlet,
-/turf/open/floor/engine,
+/turf/open/floor/plasteel/freezer,
/area/science/xenobiology)
"bRU" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/machinery/atmospherics/pipe/manifold/general/visible{
+ dir = 1
},
-/turf/open/floor/engine,
+/turf/open/floor/plasteel/freezer,
/area/science/xenobiology)
"bRV" = (
/obj/machinery/disposal/bin,
@@ -36816,40 +36868,26 @@
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
-"bRW" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio3";
- name = "containment blast door"
- },
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/science/xenobiology)
"bRY" = (
-/obj/structure/window/reinforced,
-/obj/structure/table/reinforced,
/obj/machinery/button/door{
- id = "xenobio8";
- name = "Containment Blast Doors";
+ id = "xenobio11";
+ layer = 3.3;
+ name = "Xenobio Pen 11 Blast Doors";
pixel_y = 4;
req_access_txt = "55"
},
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/plasteel,
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
/area/science/xenobiology)
"bSa" = (
+/obj/structure/cable,
/obj/machinery/door/poddoor/preopen{
- id = "xenobio8";
- name = "containment blast door"
+ id = "xenobio11";
+ name = "Xenobio Pen 11 Blast Door"
},
/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/engine,
+/turf/open/floor/plating,
/area/science/xenobiology)
"bSc" = (
/obj/structure/table,
@@ -37108,6 +37146,18 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/engine/atmos)
+"bSO" = (
+/obj/machinery/button/door{
+ id = "xenobio7";
+ layer = 3.3;
+ name = "Xenobio Pen 7 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"bSP" = (
/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
dir = 4
@@ -37204,32 +37254,20 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"bTa" = (
-/obj/machinery/door/window/northleft{
- dir = 4;
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
+/obj/structure/sign/warning/coldtemp,
+/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/science/xenobiology)
"bTb" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen";
- req_access_txt = "55"
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
+ name = "killroom vent";
+ icon_state = "vent_map_siphon_on-2";
+ dir = 1;
+ external_pressure_bound = 120
},
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio3";
- name = "containment blast door"
- },
-/obj/structure/cable,
-/turf/open/floor/engine,
+/obj/machinery/light,
+/turf/open/floor/plasteel/freezer,
/area/science/xenobiology)
"bTc" = (
/obj/structure/disposalpipe/segment,
@@ -37241,27 +37279,26 @@
base_state = "right";
dir = 8;
icon_state = "right";
- name = "Containment Pen";
+ name = "Containment Pen 11";
req_access_txt = "55"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bTe" = (
/obj/machinery/door/window/northleft{
dir = 4;
- name = "Containment Pen";
+ name = "Containment Pen 11";
req_access_txt = "55"
},
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio8";
- name = "containment blast door"
- },
/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio11";
+ name = "Xenobio Pen 11 Blast Door"
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"bTg" = (
@@ -37589,31 +37626,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/tcommsat/computer)
-"bUd" = (
-/obj/structure/table/reinforced,
-/obj/machinery/button/door{
- id = "xenobio3";
- name = "Containment Blast Doors";
- pixel_y = 4;
- req_access_txt = "55"
- },
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"bUe" = (
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio3";
- name = "containment blast door"
- },
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/science/xenobiology)
"bUg" = (
/obj/structure/window/reinforced{
dir = 1
@@ -37628,23 +37640,24 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bUh" = (
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio11";
+ name = "Xenobio Pen 11 Blast Door"
+ },
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio8";
- name = "containment blast door"
- },
/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/engine,
+/turf/open/floor/plating,
/area/science/xenobiology)
"bUi" = (
-/obj/structure/disposalpipe/trunk{
- dir = 8
+/obj/machinery/light{
+ dir = 4
},
-/obj/structure/disposaloutlet{
- dir = 1
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
+ dir = 8
},
/turf/open/floor/engine,
/area/science/xenobiology)
@@ -37980,16 +37993,21 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bVi" = (
-/obj/structure/sign/warning/electricshock,
-/turf/closed/wall,
-/area/science/xenobiology)
-"bVj" = (
-/obj/machinery/light{
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
dir = 8
},
-/turf/open/floor/plasteel/white,
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
/area/science/xenobiology)
"bVk" = (
+/obj/machinery/light{
+ dir = 4
+ },
/obj/structure/sink{
dir = 8;
pixel_x = 11
@@ -38295,37 +38313,44 @@
/turf/open/floor/plating,
/area/medical/virology)
"bWl" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio2";
- name = "containment blast door"
- },
-/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio5";
+ name = "Xenobio Pen 5 Blast Door"
+ },
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 5";
+ req_access_txt = "55"
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"bWm" = (
-/obj/structure/window/reinforced,
-/obj/structure/table/reinforced,
-/obj/machinery/button/door{
- id = "xenobio7";
- name = "Containment Blast Doors";
- pixel_y = 4;
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 10";
req_access_txt = "55"
},
/obj/effect/turf_decal/stripes/line{
- dir = 10
+ dir = 8
},
+/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bWn" = (
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio7";
- name = "containment blast door"
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 10";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio10";
+ name = "Xenobio Pen 10 Blast Door"
},
-/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/turf/open/floor/engine,
/area/science/xenobiology)
@@ -38647,32 +38672,26 @@
/turf/open/floor/engine,
/area/science/xenobiology)
"bXf" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio2";
- name = "containment blast door"
- },
/obj/structure/cable,
-/turf/open/floor/engine,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio5";
+ name = "Xenobio Pen 5 Blast Door"
+ },
+/turf/open/floor/plating,
/area/science/xenobiology)
"bXg" = (
-/obj/machinery/door/window/northleft{
- dir = 4;
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio7";
- name = "containment blast door"
- },
/obj/structure/cable,
-/turf/open/floor/engine,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio10";
+ name = "Xenobio Pen 10 Blast Door"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/electricshock,
+/turf/open/floor/plating,
/area/science/xenobiology)
"bXh" = (
/obj/structure/filingcabinet/chestdrawer,
@@ -38967,33 +38986,14 @@
/obj/structure/closet/secure_closet/personal/patient,
/turf/open/floor/plasteel/white,
/area/medical/virology)
-"bYf" = (
-/obj/structure/table/reinforced,
-/obj/machinery/button/door{
- id = "xenobio2";
- name = "Containment Blast Doors";
- pixel_y = 4;
- req_access_txt = "55"
- },
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
"bYh" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
+/obj/structure/cable,
/obj/machinery/door/poddoor/preopen{
- id = "xenobio7";
- name = "containment blast door"
+ id = "xenobio9";
+ name = "Xenobio Pen 9 Blast Door"
},
/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/engine,
+/turf/open/floor/plating,
/area/science/xenobiology)
"bYi" = (
/obj/machinery/door/poddoor/preopen{
@@ -39291,19 +39291,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/medical/virology)
-"bZa" = (
-/obj/structure/sink{
- dir = 4;
- pixel_x = -12;
- pixel_y = 2
- },
-/obj/machinery/camera{
- c_tag = "Xenobiology South";
- dir = 4;
- network = list("ss13","rd")
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"bZb" = (
/obj/machinery/light{
dir = 4
@@ -39560,39 +39547,25 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"bZV" = (
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio4";
+ name = "Xenobio Pen 4 Blast Door"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"bZX" = (
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio9";
+ name = "Xenobio Pen 9 Blast Door"
+ },
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio1";
- name = "containment blast door"
- },
/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/engine,
-/area/science/xenobiology)
-"bZW" = (
-/obj/structure/window/reinforced,
-/obj/structure/table/reinforced,
-/obj/machinery/button/door{
- id = "xenobio6";
- name = "Containment Blast Doors";
- pixel_y = 4;
- req_access_txt = "55"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"bZX" = (
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio6";
- name = "containment blast door"
- },
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/cable,
-/turf/open/floor/engine,
+/turf/open/floor/plating,
/area/science/xenobiology)
"bZZ" = (
/obj/effect/turf_decal/stripes/corner,
@@ -39960,32 +39933,26 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"caV" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen";
- req_access_txt = "55"
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/obj/machinery/door/poddoor/preopen{
- id = "xenobio1";
- name = "containment blast door"
+ id = "xenobio3";
+ name = "Xenobio Pen 3 Blast Door"
},
+/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
-/turf/open/floor/engine,
+/obj/structure/sign/warning/electricshock,
+/turf/open/floor/plating,
/area/science/xenobiology)
"caW" = (
-/obj/machinery/door/window/northleft{
- dir = 4;
- name = "Containment Pen";
- req_access_txt = "55"
- },
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio6";
- name = "containment blast door"
- },
/obj/structure/cable,
-/turf/open/floor/engine,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio8";
+ name = "Xenobio Pen 8 Blast Door"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
/area/science/xenobiology)
"caX" = (
/obj/machinery/sparker{
@@ -40296,40 +40263,42 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"cbR" = (
-/obj/structure/table/reinforced,
-/obj/machinery/button/door{
- id = "xenobio1";
- name = "Containment Blast Doors";
- pixel_y = 4;
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 3";
req_access_txt = "55"
},
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/machinery/light,
/obj/effect/turf_decal/stripes/line{
- dir = 5
+ dir = 4
},
+/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cbS" = (
-/obj/machinery/door/poddoor/preopen{
- id = "xenobio1";
- name = "containment blast door"
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 3";
+ req_access_txt = "55"
},
-/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio3";
+ name = "Xenobio Pen 3 Blast Door"
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"cbU" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 8";
+ req_access_txt = "55"
},
/obj/machinery/door/poddoor/preopen{
- id = "xenobio6";
- name = "containment blast door"
+ id = "xenobio8";
+ name = "Xenobio Pen 8 Blast Door"
},
-/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/turf/open/floor/engine,
/area/science/xenobiology)
@@ -40603,8 +40572,12 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"ccQ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = -12;
+ pixel_y = 0
+ },
+/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"ccR" = (
/obj/item/paper_bin{
@@ -41107,16 +41080,16 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/sign/warning/biohazard,
/turf/closed/wall/r_wall,
-/area/medical/chemistry)
+/area/maintenance/starboard/aft)
"ceI" = (
/obj/structure/cable,
/obj/effect/spawner/structure/window/reinforced,
/turf/open/space/basic,
-/area/medical/chemistry)
+/area/maintenance/starboard/aft)
"ceJ" = (
/obj/structure/disposalpipe/segment,
/turf/closed/wall/r_wall,
-/area/medical/chemistry)
+/area/maintenance/starboard/aft)
"ceM" = (
/obj/machinery/meter,
/obj/structure/disposalpipe/segment,
@@ -41288,19 +41261,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
-"cfr" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- external_pressure_bound = 140;
- name = "killroom vent";
- pressure_checks = 0
- },
-/obj/machinery/camera{
- c_tag = "Xenobiology Kill Room";
- dir = 4;
- network = list("ss13","rd")
- },
-/turf/open/floor/circuit/telecomms,
-/area/science/xenobiology)
"cfu" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
@@ -41320,15 +41280,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating/airless,
/area/maintenance/solars/port/aft)
-"cfy" = (
-/obj/structure/rack,
-/obj/item/clothing/shoes/winterboots,
-/obj/item/clothing/suit/hooded/wintercoat,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
"cfD" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/door/airlock/maintenance{
@@ -41508,9 +41459,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
-"cgi" = (
-/turf/open/floor/circuit/telecomms,
-/area/science/xenobiology)
"cgj" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -41519,16 +41467,27 @@
/turf/closed/wall/r_wall,
/area/maintenance/starboard/aft)
"cgk" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/sign/warning/biohazard,
-/turf/open/floor/plating,
+/obj/machinery/disposal/bin,
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
/area/science/xenobiology)
"cgl" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
- external_pressure_bound = 120;
- name = "killroom vent"
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio2";
+ name = "Xenobio Pen 2 Blast Door"
},
-/turf/open/floor/circuit/telecomms,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
/area/science/xenobiology)
"cgm" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -41537,29 +41496,14 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"cgn" = (
-/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
"cgo" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cgp" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
- },
-/obj/structure/cable,
+/obj/structure/closet/wardrobe/mixed,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cgr" = (
@@ -41864,13 +41808,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
-"cho" = (
-/obj/machinery/light,
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 5
- },
-/turf/open/floor/circuit/telecomms,
-/area/science/xenobiology)
"chp" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -41880,52 +41817,33 @@
},
/turf/closed/wall/r_wall,
/area/maintenance/starboard/aft)
-"chq" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 4
- },
-/turf/open/floor/circuit/telecomms,
-/area/science/xenobiology)
"chr" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/research{
- name = "Kill Chamber";
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 2";
req_access_txt = "55"
},
-/obj/machinery/atmospherics/pipe/simple/general/visible{
+/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/plating,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
/area/science/xenobiology)
"chs" = (
-/obj/machinery/light,
-/obj/machinery/atmospherics/pipe/manifold/general/visible,
-/turf/open/floor/circuit/telecomms,
-/area/science/xenobiology)
-"cht" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
-"chu" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
-"chv" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/segment{
- dir = 5
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 2";
+ req_access_txt = "55"
},
/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio2";
+ name = "Xenobio Pen 2 Blast Door"
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"chw" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
@@ -42264,21 +42182,12 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
-"ciI" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"ciJ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/maintenance/starboard/aft)
-"ciK" = (
-/obj/structure/rack,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"ciL" = (
/obj/effect/spawner/structure/window/reinforced/tinted,
/turf/open/floor/plating,
@@ -42543,23 +42452,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
-"cjB" = (
-/obj/machinery/atmospherics/pipe/simple/general/visible{
- dir = 9
- },
-/obj/structure/table,
-/obj/item/folder/white,
-/obj/item/pen,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/science/xenobiology)
-"cjC" = (
-/obj/structure/grille,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"cjD" = (
/turf/closed/wall/r_wall,
/area/maintenance/solars/starboard/aft)
@@ -42804,37 +42696,16 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
-"ckl" = (
-/obj/machinery/vending/wardrobe/chem_wardrobe,
-/obj/machinery/light{
- dir = 8
- },
-/obj/machinery/light{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/medical/chemistry)
"ckm" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
-"ckn" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/science/xenobiology)
"cko" = (
/obj/structure/disposalpipe/segment,
/turf/closed/wall,
/area/maintenance/starboard/aft)
-"ckp" = (
-/obj/structure/rack,
-/obj/effect/spawner/lootdrop/maintenance/two,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"ckr" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -43134,12 +43005,6 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"cls" = (
-/obj/structure/rack,
-/obj/effect/spawner/lootdrop/maintenance/three,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"clt" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -43357,7 +43222,7 @@
},
/area/maintenance/starboard/aft)
"cmr" = (
-/obj/structure/closet/toolcloset,
+/obj/structure/rack,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
@@ -43661,11 +43526,6 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"cnJ" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/spawner/lootdrop/maintenance,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"cnX" = (
/obj/structure/extinguisher_cabinet{
pixel_x = -5;
@@ -44598,20 +44458,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
/area/engine/engineering)
-"csk" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
"csl" = (
/obj/structure/transit_tube/curved{
dir = 4
},
/turf/open/space,
/area/space/nearstation)
-"csm" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plasteel/white,
-/area/medical/chemistry)
"csn" = (
/obj/structure/transit_tube/horizontal,
/turf/open/space,
@@ -46592,11 +46444,6 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
-"czQ" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"czR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
@@ -46611,15 +46458,9 @@
},
/area/maintenance/starboard/aft)
"czU" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
"czW" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
@@ -46647,24 +46488,8 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"czZ" = (
-/obj/structure/chair,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
-"cAa" = (
-/obj/structure/chair,
-/obj/item/storage/fancy/cigarettes,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cAb" = (
@@ -47185,6 +47010,9 @@
/obj/structure/disposalpipe/segment,
/obj/effect/landmark/event_spawn,
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cBH" = (
@@ -48659,9 +48487,6 @@
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
-"cMl" = (
-/turf/open/space,
-/area/space/nearstation)
"cMm" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
@@ -48843,6 +48668,18 @@
},
/turf/closed/wall,
/area/maintenance/starboard/aft)
+"cSb" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 5";
+ req_access_txt = "55"
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"cSz" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -49152,26 +48989,14 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/science/xenobiology)
-"cTY" = (
-/obj/structure/sign/poster/official/safety_internals{
- pixel_x = -32
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
-"cTZ" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"cVb" = (
/turf/closed/wall,
/area/hallway/secondary/service)
"cVu" = (
+/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cYY" = (
@@ -49206,6 +49031,18 @@
/mob/living/carbon/monkey,
/turf/open/floor/engine,
/area/science/genetics)
+"ddD" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/table,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/structure/cable,
+/obj/item/toy/plush/slimeplushie,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"dfx" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
@@ -49223,10 +49060,39 @@
/obj/machinery/chem_heater,
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"dni" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"dnY" = (
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio10";
+ name = "Xenobio Pen 10 Blast Door"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"dqu" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
+"dqL" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"dtc" = (
/obj/machinery/photocopier,
/turf/open/floor/wood,
@@ -49251,6 +49117,14 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"dxb" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"dyk" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
@@ -49280,6 +49154,13 @@
/obj/effect/turf_decal/tile/blue,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"dBM" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/processor/slime,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"dCG" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = -32
@@ -49355,6 +49236,20 @@
/obj/structure/table/reinforced,
/turf/open/floor/plasteel/white,
/area/science/mixing)
+"dOm" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 6";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"dPH" = (
/obj/machinery/light,
/obj/structure/cable,
@@ -49386,6 +49281,12 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"egr" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 6
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"eja" = (
/obj/effect/turf_decal/bot,
/obj/machinery/computer/nanite_chamber_control{
@@ -49454,6 +49355,16 @@
/obj/structure/grille,
/turf/open/space/basic,
/area/space/nearstation)
+"eSG" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
+ dir = 5
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"eUr" = (
/obj/machinery/door/poddoor/preopen{
id = "testlab";
@@ -49481,6 +49392,24 @@
},
/turf/closed/wall/r_wall,
/area/science/mixing/chamber)
+"fep" = (
+/obj/structure/window/reinforced,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"fif" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/item/storage/fancy/cigarettes,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"flc" = (
/obj/item/assembly/prox_sensor{
pixel_x = -4;
@@ -49519,6 +49448,20 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
+"fpR" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 9";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"fqQ" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -49590,6 +49533,10 @@
/obj/structure/table,
/turf/open/floor/plasteel,
/area/hydroponics)
+"fGg" = (
+/obj/effect/landmark/start/paramedic,
+/turf/open/floor/plasteel/white,
+/area/medical/sleeper)
"fGF" = (
/obj/machinery/portable_atmospherics/scrubber,
/obj/effect/turf_decal/bot,
@@ -49598,6 +49545,20 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
+"fJT" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 7";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"fPm" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -49629,6 +49590,18 @@
/obj/item/stack/sheet/glass/fifty,
/turf/open/floor/plating,
/area/maintenance/department/medical/morgue)
+"gdq" = (
+/obj/machinery/button/door{
+ id = "xenobio2";
+ layer = 3.3;
+ name = "Xenobio Pen 2 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"gjb" = (
/obj/machinery/vending/cigarette,
/obj/effect/turf_decal/tile/red,
@@ -49691,6 +49664,18 @@
},
/turf/closed/wall,
/area/maintenance/starboard)
+"gCA" = (
+/obj/machinery/button/door{
+ id = "xenobio8";
+ layer = 3.3;
+ name = "Xenobio Pen 8 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"gES" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -49704,6 +49689,13 @@
},
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
+"gGJ" = (
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
+ dir = 5
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"gHj" = (
/obj/effect/turf_decal/tile/purple{
dir = 1
@@ -49822,6 +49814,12 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/maintenance/fore)
+"hnW" = (
+/obj/effect/spawner/structure/window/reinforced{
+ pixel_w = 1
+ },
+/turf/closed/wall,
+/area/maintenance/starboard/aft)
"hox" = (
/obj/machinery/door/firedoor/heavy,
/turf/open/floor/plasteel/white/side{
@@ -49834,6 +49832,20 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"hAo" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 8";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"hAK" = (
/obj/structure/table,
/obj/item/storage/box/disks_nanite,
@@ -49843,6 +49855,12 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"hDb" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"hFg" = (
/obj/machinery/door/airlock/external{
name = "Port Docking Bay 1";
@@ -49851,6 +49869,30 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/hallway/secondary/entry)
+"hGP" = (
+/obj/machinery/button/door{
+ id = "xenobio3";
+ layer = 3.3;
+ name = "Xenobio Pen 3 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"hHq" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/research/glass{
+ name = "Kill Chamber";
+ normalspeed = 0;
+ req_access_txt = "55"
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel/freezer,
+/area/science/xenobiology)
"hJq" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/medical/glass{
@@ -49858,7 +49900,7 @@
req_access_txt = "5; 33"
},
/turf/open/floor/plating,
-/area/medical/chemistry)
+/area/maintenance/starboard/aft)
"hQK" = (
/obj/machinery/light/small{
dir = 8
@@ -49907,6 +49949,22 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"iiu" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/computer/camera_advanced/xenobio{
+ icon_state = "computer";
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/purple{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"ijc" = (
/obj/structure/table,
/obj/item/stack/sheet/metal/fifty,
@@ -49979,12 +50037,35 @@
/obj/structure/reagent_dispensers/cooking_oil,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
+"iOI" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/rack,
+/obj/item/wirecutters,
+/obj/item/screwdriver,
+/obj/item/storage/box/lights/tubes,
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"iQF" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/engine/engineering)
+"iSv" = (
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 4";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"iTt" = (
/obj/item/radio/intercom{
desc = "Talk through this. It looks like it has been modified to not broadcast.";
@@ -50009,6 +50090,11 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
+"jdH" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/lootdrop/maintenance/four,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"jiK" = (
/obj/structure/closet/toolcloset,
/obj/effect/turf_decal/tile/yellow,
@@ -50080,12 +50166,20 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/fore)
+"jsw" = (
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"jsP" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"jtt" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/medical/chemistry)
"jxy" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -50171,6 +50265,20 @@
/obj/item/stack/cable_coil,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
+"jQV" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"jUW" = (
+/obj/machinery/camera/autoname{
+ dir = 4;
+ icon_state = "camera"
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"jVc" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -50218,6 +50326,10 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"keQ" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/closed/wall,
+/area/maintenance/starboard/aft)
"keW" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/sorting/mail{
@@ -50279,6 +50391,12 @@
"kul" = (
/turf/closed/wall,
/area/engine/engine_smes)
+"kvJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"kwA" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 8
@@ -50364,6 +50482,25 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall,
/area/security/detectives_office)
+"kKM" = (
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/machinery/disposal/bin,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/light,
+/obj/machinery/camera/autoname{
+ icon_state = "camera";
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"kLd" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
@@ -50371,6 +50508,10 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"kLj" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"kLM" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
@@ -50464,6 +50605,18 @@
dir = 8
},
/area/science/research)
+"kZR" = (
+/obj/structure/closet/toolcloset,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
+"lar" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"lcg" = (
/obj/machinery/light{
dir = 4
@@ -50599,6 +50752,25 @@
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
+"lOR" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 1";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio1";
+ name = "Xenobio Pen 1 Blast Door"
+ },
+/obj/structure/cable,
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"lOY" = (
+/obj/structure/lattice/catwalk,
+/turf/closed/wall/r_wall,
+/area/maintenance/disposal/incinerator)
"lQm" = (
/obj/machinery/camera{
c_tag = "Nanite Lab";
@@ -50623,6 +50795,13 @@
},
/turf/open/floor/plasteel,
/area/science/misc_lab)
+"lSv" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"lST" = (
/obj/structure/table,
/obj/machinery/recharger,
@@ -50633,6 +50812,27 @@
},
/turf/open/floor/plasteel,
/area/science/misc_lab)
+"lVv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio4";
+ name = "Xenobio Pen 4 Blast Door"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"lVC" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"lWA" = (
/obj/machinery/door/airlock/external{
name = "External Access";
@@ -50728,6 +50928,27 @@
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
+"mPl" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/table/glass,
+/obj/item/storage/box/monkeycubes{
+ pixel_x = 2;
+ pixel_y = -2
+ },
+/obj/machinery/button/door{
+ name = "Containment Blast Doors";
+ pixel_x = 1;
+ pixel_y = -26;
+ req_access_txt = "55";
+ id = "xenobiomain"
+ },
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"mSf" = (
/obj/structure/chair/office{
dir = 1
@@ -50820,6 +51041,10 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/construction)
+"nxx" = (
+/obj/structure/sign/warning/biohazard,
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
"nzh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
@@ -50890,6 +51115,16 @@
/obj/structure/cable,
/turf/open/floor/carpet,
/area/crew_quarters/heads/hos)
+"nPP" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobiomain";
+ name = "containment blast door"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
"nQI" = (
/obj/machinery/light_switch{
pixel_x = -23
@@ -50982,13 +51217,19 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"nZl" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
-/turf/open/floor/plating{
- icon_state = "platingdmg3"
+"nYU" = (
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 9";
+ req_access_txt = "55"
},
-/area/maintenance/starboard/aft)
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio9";
+ name = "Xenobio Pen 9 Blast Door"
+ },
+/obj/structure/cable,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"ofT" = (
/obj/machinery/computer/bounty,
/turf/open/floor/plasteel,
@@ -51072,6 +51313,13 @@
/obj/machinery/light,
/turf/open/floor/plating,
/area/engine/engineering)
+"oHH" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"oHU" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 10
@@ -51096,6 +51344,25 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
+"oUU" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"oVV" = (
+/obj/machinery/button/door{
+ id = "xenobio10";
+ layer = 3.3;
+ name = "Xenobio Pen 10 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"oXE" = (
/obj/machinery/door/airlock/maintenance{
id_tag = "commissarydoor";
@@ -51134,6 +51401,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"oZn" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"pfj" = (
/obj/machinery/power/apc{
areastring = "/area/storage/tools";
@@ -51160,6 +51434,18 @@
},
/turf/open/floor/plasteel,
/area/storage/tools)
+"pfy" = (
+/obj/machinery/button/door{
+ id = "xenobio6";
+ layer = 3.3;
+ name = "Xenobio Pen 6 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"pgP" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -51197,6 +51483,29 @@
dir = 1
},
/area/engine/break_room)
+"pmx" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio1";
+ name = "Xenobio Pen 1 Blast Door"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/sign/warning/electricshock,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"pnj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/chair/stool,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"poM" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
@@ -51210,6 +51519,27 @@
/obj/item/toner,
/turf/open/floor/plasteel,
/area/quartermaster/office)
+"pqR" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"prl" = (
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 1";
+ req_access_txt = "55"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/science/xenobiology)
"prC" = (
/obj/item/radio/intercom{
pixel_x = -29
@@ -51240,6 +51570,15 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/grimy,
/area/security/detectives_office)
+"pvI" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
+ name = "killroom vent";
+ icon_state = "vent_map_siphon_on-2";
+ dir = 1;
+ external_pressure_bound = 120
+ },
+/turf/open/floor/plasteel/freezer,
+/area/science/xenobiology)
"pwd" = (
/obj/machinery/light/small{
dir = 8
@@ -51253,6 +51592,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"pxV" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"pzA" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -51296,6 +51642,15 @@
/obj/machinery/portable_atmospherics/scrubber,
/turf/open/floor/plasteel,
/area/science/mixing)
+"pCj" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio6";
+ name = "Xenobio Pen 6 Blast Door"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
"pDu" = (
/obj/machinery/computer/nanite_cloud_controller,
/obj/effect/turf_decal/bot,
@@ -51398,6 +51753,15 @@
},
/turf/open/floor/plasteel/white,
/area/science/genetics)
+"pPs" = (
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio3";
+ name = "Xenobio Pen 3 Blast Door"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
"pSN" = (
/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/tile/purple{
@@ -51530,6 +51894,15 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"qyX" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobiomain";
+ name = "containment blast door"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
"qBr" = (
/obj/item/stack/ducts/fifty,
/obj/item/stack/ducts/fifty,
@@ -51564,13 +51937,8 @@
/turf/open/floor/plasteel,
/area/science/mixing)
"qQH" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
+/obj/effect/spawner/lootdrop/minor/bowler_or_that,
+/obj/structure/rack,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"qRW" = (
@@ -51612,6 +51980,18 @@
/obj/item/reagent_containers/food/drinks/beer,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"rox" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 2
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
+"ryM" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance/three,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"rAt" = (
/obj/effect/turf_decal/tile/red{
dir = 4
@@ -51816,6 +52196,19 @@
/obj/structure/lattice,
/turf/open/space,
/area/space)
+"sAk" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ pixel_y = 2
+ },
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"sHk" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
@@ -51867,6 +52260,18 @@
},
/turf/open/floor/engine,
/area/science/misc_lab)
+"sUw" = (
+/obj/machinery/button/door{
+ id = "xenobio4";
+ layer = 3.3;
+ name = "Xenobio Pen 4 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"sXy" = (
/obj/machinery/door/airlock/external{
name = "Security External Airlock";
@@ -51877,6 +52282,18 @@
},
/turf/open/floor/plating,
/area/security/main)
+"sZy" = (
+/obj/machinery/button/door{
+ id = "xenobio9";
+ layer = 3.3;
+ name = "Xenobio Pen 9 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"tal" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
@@ -51918,17 +52335,6 @@
/obj/machinery/dna_scannernew,
/turf/open/floor/plasteel/white,
/area/science/genetics)
-"tfg" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/starboard/aft)
"tgl" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -51955,6 +52361,10 @@
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
+"tkC" = (
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"tqd" = (
/obj/machinery/light/small{
dir = 1
@@ -52014,6 +52424,10 @@
},
/turf/open/floor/plasteel,
/area/security/courtroom)
+"trt" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"tsw" = (
/obj/structure/table,
/obj/item/storage/toolbox/emergency,
@@ -52038,6 +52452,21 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/security/brig)
+"twh" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 5
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"tCh" = (
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio2";
+ name = "Xenobio Pen 2 Blast Door"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
"tDw" = (
/obj/machinery/light_switch{
pixel_y = 28
@@ -52064,16 +52493,42 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"tJc" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4;
+ external_pressure_bound = 140;
+ name = "killroom vent";
+ pressure_checks = 0
+ },
+/obj/machinery/light,
+/turf/open/floor/plasteel/freezer,
+/area/science/xenobiology)
"tKG" = (
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/engine,
/area/science/misc_lab)
+"tLf" = (
+/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"tMl" = (
/obj/effect/turf_decal/loading_area,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
+"tPW" = (
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio7";
+ name = "Xenobio Pen 7 Blast Door"
+ },
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"tQk" = (
/obj/machinery/camera{
c_tag = "Auxiliary Tool Storage"
@@ -52131,6 +52586,15 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
+"ueE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"uhH" = (
/obj/item/wrench,
/obj/item/weldingtool,
@@ -52141,6 +52605,18 @@
/obj/structure/rack,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
+"ujh" = (
+/obj/machinery/button/door{
+ id = "xenobio1";
+ layer = 3.3;
+ name = "Xenobio Pen 1 Blast Doors";
+ pixel_y = 4;
+ req_access_txt = "55"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"ulo" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/general/visible{
@@ -52162,6 +52638,12 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
+"usX" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 9
+ },
+/turf/open/floor/plasteel/freezer,
+/area/science/xenobiology)
"uvi" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -52169,12 +52651,30 @@
},
/turf/open/floor/plasteel,
/area/science/misc_lab)
+"uyS" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio1";
+ name = "Xenobio Pen 1 Blast Door"
+ },
+/turf/open/floor/plating,
+/area/science/xenobiology)
"uzl" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plasteel,
/area/science/nanite)
+"uzt" = (
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio7";
+ name = "Xenobio Pen 7 Blast Door"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"uCq" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -52186,10 +52686,6 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel/dark,
/area/science/nanite)
-"uDP" = (
-/obj/machinery/light,
-/turf/open/floor/plasteel/white,
-/area/medical/chemistry)
"uES" = (
/obj/machinery/door/firedoor/heavy,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -52197,6 +52693,10 @@
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
+"uGz" = (
+/obj/machinery/vending/wardrobe/chem_wardrobe,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
"uHA" = (
/obj/machinery/firealarm{
pixel_y = 24
@@ -52310,6 +52810,19 @@
dir = 8
},
/area/science/research)
+"vdT" = (
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 7";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio7";
+ name = "Xenobio Pen 7 Blast Door"
+ },
+/obj/structure/cable,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"vhn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -52574,6 +53087,11 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
+"wtc" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"wBd" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -52641,9 +53159,6 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
-"wRd" = (
-/turf/open/space/basic,
-/area/space/nearstation)
"wUs" = (
/obj/structure/closet/secure_closet/detective,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -52669,6 +53184,19 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
+"wYm" = (
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio8";
+ name = "Xenobio Pen 8 Blast Door"
+ },
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/electricshock,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"wZy" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -52683,6 +53211,19 @@
/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"xbN" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio6";
+ name = "Xenobio Pen 6 Blast Door"
+ },
+/obj/structure/cable,
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/sign/warning/electricshock,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"xeP" = (
/obj/effect/turf_decal/tile/purple{
dir = 1
@@ -52785,6 +53326,15 @@
"xwN" = (
/turf/open/floor/plating,
/area/engine/engine_smes)
+"xzi" = (
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio6";
+ name = "Xenobio Pen 6 Blast Door"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/science/xenobiology)
"xzN" = (
/obj/machinery/door/airlock/external{
name = "Common Mining Shuttle Bay"
@@ -52831,6 +53381,16 @@
/obj/structure/closet/radiation,
/turf/open/floor/plasteel/dark,
/area/science/genetics)
+"xYx" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/structure/disposaloutlet{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"xYA" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -52848,10 +53408,43 @@
},
/turf/open/floor/plasteel,
/area/security/courtroom)
+"xZg" = (
+/obj/machinery/door/window/northleft{
+ base_state = "right";
+ dir = 8;
+ icon_state = "right";
+ name = "Containment Pen 4";
+ req_access_txt = "55"
+ },
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio4";
+ name = "Xenobio Pen 4 Blast Door"
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"yay" = (
/obj/machinery/computer/med_data,
/turf/open/floor/plasteel/grimy,
/area/security/detectives_office)
+"yck" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio5";
+ name = "Xenobio Pen 5 Blast Door"
+ },
+/obj/structure/sign/warning/electricshock,
+/turf/open/floor/plating,
+/area/science/xenobiology)
+"ydc" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"ydA" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -52895,6 +53488,25 @@
},
/turf/open/floor/plasteel/dark,
/area/science/nanite)
+"yjr" = (
+/obj/machinery/atmospherics/pipe/simple/general/visible{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
+"ylC" = (
+/obj/machinery/door/window/northleft{
+ dir = 4;
+ name = "Containment Pen 6";
+ req_access_txt = "55"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id = "xenobio6";
+ name = "Xenobio Pen 6 Blast Door"
+ },
+/obj/structure/cable,
+/turf/open/floor/engine,
+/area/science/xenobiology)
(1,1,1) = {"
aaa
@@ -90052,7 +90664,7 @@ bAs
bvj
bCL
bxO
-bDR
+fGg
bDR
bIk
bJC
@@ -91874,7 +92486,7 @@ bKH
bzs
bzs
bzs
-bzs
+cNW
cmd
cmd
cmd
@@ -91888,9 +92500,9 @@ cmd
cmd
cmd
cmd
-aag
-aag
-aag
+cmd
+cmd
+lOY
aaa
aaa
aaf
@@ -92131,24 +92743,24 @@ bKL
keW
cbM
cdJ
-hTU
+mtK
cfm
cgc
qBr
ciF
cjw
-ckl
+uGz
clk
xfL
vQQ
jox
nEk
djq
+bip
+bip
+bip
hTU
-aaf
-aaf
-aaa
-aaa
+aoV
aaa
aaa
aaa
@@ -92398,13 +93010,13 @@ iMP
bjL
bjL
bjL
+bjL
+bjL
+bjL
+bjL
cmi
bip
-bip
hTU
-wRd
-aaa
-aaa
aaa
aaa
aaa
@@ -92647,6 +93259,8 @@ bJs
cdK
ceH
cfn
+cfn
+cfn
cgd
bjL
bjL
@@ -92654,14 +93268,12 @@ bjL
bjL
bjL
bjL
+bjL
+bjL
cmi
xYA
bip
-uDP
vjm
-wRd
-aaa
-aaa
aaa
aaa
aaa
@@ -92904,21 +93516,21 @@ ccK
ccM
ceJ
kdR
+bjL
+bjL
cgf
bjL
bjL
bjL
bjL
bjL
+bjL
+bjL
cmi
xYA
xYA
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -93161,22 +93773,22 @@ ccJ
bLS
hJq
cfp
+cfp
+cfp
cge
cfp
cfp
cfp
+cfp
+cfp
ckm
cln
cmh
cnd
cnE
bip
-bip
-csm
-cMl
-aaa
-aaa
-aaa
+jtt
+aoV
aaa
aaa
aaa
@@ -93418,21 +94030,21 @@ ccL
ccM
ceJ
xUg
+bjL
+bjL
cgf
bjL
bjL
bjL
+bjL
+bjL
igT
cAe
cmj
cne
xYA
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -93675,8 +94287,12 @@ bJs
bFr
ceJ
bjL
+bjL
+bjL
cgf
bjL
+bjL
+bjL
bmT
bjL
bjL
@@ -93685,11 +94301,7 @@ lwc
fPm
lwc
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -93930,10 +94542,14 @@ caS
caO
ccN
bHd
-hTU
+mtK
+bip
+bip
bip
rZB
rFI
+rFI
+rFI
jsP
oBu
cfn
@@ -93942,11 +94558,7 @@ cgd
cng
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -94187,10 +94799,14 @@ bJs
bFr
ccM
cdN
-hTU
+mtK
+bip
+bip
bip
mSR
haX
+bip
+bip
ciH
xYA
hpH
@@ -94199,11 +94815,7 @@ mSR
cnf
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -94446,21 +95058,21 @@ cNY
cNY
rGg
rGg
+rGg
+rGg
cgj
rGg
rGg
+rGg
+rGg
chp
-mtK
+hTU
clp
mSR
cnf
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -94703,21 +95315,21 @@ ccO
nXU
nXU
nXU
+nXU
+nXU
cnH
nXU
+kvJ
+kvJ
jCq
czY
-mtK
+hTU
bip
mSR
lZN
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -94960,21 +95572,21 @@ bDb
bDb
bDb
bDb
+bDb
+bDb
+bDb
+bDb
cNW
cNW
ccq
czY
-mtK
+hTU
bip
mSR
cnf
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -95193,45 +95805,45 @@ byf
bDb
bEm
bEm
-bEm
+tLf
bDb
bJH
bKW
bMg
bIh
-bOx
+iiu
bPx
-bJN
-bRT
-bEm
-bEm
-bJN
-bRT
-bEm
-bEm
-bJN
-bRT
-bEm
-bEm
bDb
-cfr
-cho
+bRT
+tJc
bDb
+bEm
+hDb
+bEm
+rox
+bEm
+bEm
+rox
+eSG
+bEm
+rox
+bEm
+bEm
+rox
+hDb
+gGJ
+uyS
aaa
-cNW
+cOT
ccq
czY
-cOT
+jtt
bip
mSR
cnf
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -95458,37 +96070,37 @@ bMi
bIh
bIP
bPA
-bJN
+bDb
bRU
+usX
+bDb
bEm
-bEm
-bJN
-bRU
bXe
bEm
-bJN
-bRU
+rox
+bXe
+bEm
+rox
bEm
bEm
-bDb
-cgi
-chq
-ccQ
+rox
+bEm
+bEm
+rox
+bEm
+bEm
+uyS
aaa
cOT
ccq
czY
-cOT
+jtt
bip
mSR
efK
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -95713,39 +96325,39 @@ bJJ
bKX
bMh
bIh
-bOx
+dBM
bPz
-bJN
+bDb
bRU
+pvI
+bDb
+pqR
bEm
bEm
-bJN
-bRU
+sAk
bEm
bEm
-bJN
-bRU
+sAk
+bEm
+bEm
+sAk
+bEm
+bEm
+sAk
bEm
cBz
-bDb
-cgi
-chq
-ccQ
+uyS
aaa
cOT
ccq
czY
-cOT
+jtt
bip
mSR
bip
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -95964,45 +96576,45 @@ bBV
bDb
bEn
bEm
-bEm
-bEm
+trt
+kLj
bJL
bLa
-bMi
+twh
bIh
bPy
-bPA
-bJN
-bRW
+mPl
+bDb
+bRU
bTb
-bUe
-bJN
+bDb
+yck
bWl
bXf
-bWl
-bJN
+lVv
+xZg
bZV
caV
cbS
-bDb
+pPs
cgl
chs
+tCh
+pmx
+lOR
+uyS
bDb
aaa
cNW
ccq
czY
-mtK
+hTU
wBC
mSR
bip
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -96225,41 +96837,41 @@ bEm
bIy
bJK
bKZ
-bMi
+yjr
bIu
bIO
bPB
-bLe
-bRV
+nxx
+hHq
bTa
-bUd
-bVi
-bRV
-bTa
-bYf
-bVi
-bRV
-bTa
-cbR
bDb
+bVi
+cSb
+aGC
+bRV
+iSv
+sUw
+bRV
+cbR
+hGP
cgk
chr
-bDb
+gdq
+cgk
+prl
+ujh
+bIx
aaa
cNW
cBN
czY
-mtK
+hTU
bip
mSR
bip
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -96482,41 +97094,41 @@ bEm
bIx
bJJ
bLc
-bMi
+yjr
bIh
bOx
bPD
bQM
-bMi
+ueE
+oUU
+jUW
bMk
bMi
-bVj
bMi
-bMk
bMi
-bZa
bMi
-bMk
bMi
-cTY
-cTZ
-chu
+bMi
+bMi
+bMi
+bMi
+bMi
ccQ
-aaf
-cOT
-ccq
-cAa
+bMi
+bMi
+ddD
+qyX
+gXs
cOT
+fif
+czY
+jtt
bip
pxd
bip
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -96739,41 +97351,41 @@ bEm
bDb
cTX
bLb
-bMk
+oHH
bIh
bIQ
bPC
bQL
cBG
bTc
-bTc
-bTc
-bTc
-bTc
-bTc
-bTc
-bTc
-bTc
ccP
ccP
ccP
-cht
-ckn
-csk
-czQ
+ccP
+ccP
+ccP
+ccP
+ccP
+ccP
+ccP
+ccP
+ccP
+ccP
+ccP
+ccP
+iOI
+nPP
czU
czZ
-cOT
+dni
+czY
+jtt
bip
bip
bip
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -96999,38 +97611,38 @@ bJN
bMm
bNp
bOx
-bMi
+egr
bQN
+dqL
bMi
-bMk
bMi
bVk
bMi
-bMk
+bMi
+bZb
+bMi
+bMi
+bZb
+bMi
+bMi
+bZb
+bMi
bMi
bZb
bMi
bMk
-bMi
-cfy
-cgn
-cjB
-ccQ
-aaf
+qyX
+gXs
cOT
cgm
czY
-cOT
+jtt
bip
bip
bip
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -97261,33 +97873,33 @@ bLe
bRY
bTd
bUg
-bVi
+oVV
bWm
-bTd
bUg
-bVi
-bZW
-bTd
+sZy
+fpR
bUg
-bDb
-bDb
-bDb
+gCA
+hAo
+bUg
+bSO
+fJT
+bUg
+pfy
+dOm
+kKM
bDb
aaa
cNW
cgm
czY
-mtK
+hTU
bip
bip
bip
bip
bip
-bip
-csm
-wRd
-aaa
-aaa
+jtt
aaa
aaa
aaa
@@ -97511,37 +98123,41 @@ bIB
bIB
bJN
bMo
-bNp
+pnj
bOx
bPH
bJN
bSa
bTe
bUh
-bJN
+dnY
bWn
bXg
bYh
-bJN
+nYU
bZX
caW
cbU
-bDb
-aaf
-aaf
-aaa
+wYm
+uzt
+vdT
+tPW
+xzi
+ylC
+xbN
+bIx
aaa
cNW
cgm
czY
-mtK
-bip
+hTU
bip
bip
bip
iKL
bip
-hTU
+mtK
+cNW
cNW
cOT
cOT
@@ -97609,10 +98225,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(175,1,1) = {"
aaa
@@ -97769,37 +98381,41 @@ bIA
bJN
bMn
bNp
-bOz
+bOx
bPG
bJN
bEm
bEm
-bRU
-bJN
+xYx
bEm
bEm
-bRU
-bJN
+xYx
bEm
bEm
-bRU
-bDb
-aaf
-aaa
-aaa
+xYx
+bEm
+bEm
+xYx
+bEm
+bEm
+xYx
+bEm
+bEm
+lVC
+pCj
aaa
cOT
cgm
czY
-cOT
+jtt
bip
bip
bip
bip
bip
-bip
-hTU
-cNW
+mtK
+jdH
+keQ
cOe
cqu
aag
@@ -97866,10 +98482,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(176,1,1) = {"
aaa
@@ -98031,31 +98643,35 @@ bPJ
bJN
bEm
bEm
-bRU
-bJN
+fep
bEm
bXe
-bRU
-bJN
+fep
bEm
bEm
-bRU
-bDb
-aaf
-aaa
-aaa
+fep
+bEm
+bEm
+fep
+bEm
+bEm
+fep
+bEm
+bEm
+bEm
+pCj
aaa
cOT
cgm
czY
-cOT
+jtt
bip
bip
bip
bip
bip
mtK
-mtK
+cNW
cNW
cqu
cOT
@@ -98123,10 +98739,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(177,1,1) = {"
aaa
@@ -98284,32 +98896,36 @@ bJN
bMp
bNp
bOx
-bPI
+bPJ
bJN
bEm
+aYb
+fep
+bEm
+jQV
+fep
+bEm
+bEm
+fep
bEm
bUi
-bJN
+fep
bEm
bEm
-bUi
-bJN
+fep
bEm
-bEm
-bUi
-bDb
-aaf
-aaf
-aaa
+jQV
+aYb
+pCj
aaa
cOT
cgm
czY
-cOT
+jtt
bip
bip
oZc
-hpH
+bip
bip
mtK
cwy
@@ -98380,10 +98996,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(178,1,1) = {"
aaa
@@ -98555,9 +99167,13 @@ bDb
bDb
bDb
bDb
-cNW
-cNW
-cNW
+bDb
+bDb
+bDb
+bDb
+bDb
+bDb
+bDb
cNW
cNW
czX
@@ -98637,10 +99253,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(179,1,1) = {"
aaa
@@ -98815,6 +99427,10 @@ xaZ
cOe
cOe
cOe
+cOe
+cOe
+cOe
+cOe
czG
czR
czW
@@ -98822,8 +99438,8 @@ cAb
cko
clq
cmq
-ciI
-cnJ
+jsw
+jsw
cri
cTI
cmn
@@ -98894,10 +99510,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(180,1,1) = {"
aaa
@@ -99071,8 +99683,12 @@ wQy
nXU
nXU
ceM
-cNZ
+kvJ
cgo
+dxb
+ydc
+ydc
+wtc
czS
cOb
cAd
@@ -99086,11 +99702,7 @@ cNW
cNW
cNW
cNW
-cNW
-aaa
-aaa
-aaa
-aaa
+hnW
aaa
aaa
aaa
@@ -99329,7 +99941,11 @@ cNY
cNY
nWA
cNY
-tfg
+cNY
+oZn
+cNY
+cNY
+lar
hBY
cNW
cNW
@@ -99408,10 +100024,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(182,1,1) = {"
aaa
@@ -99587,12 +100199,16 @@ cOe
cPA
cNW
qQH
+cvO
+cOe
+cNW
+cgm
chw
-ciK
-cjC
-ckp
-cls
cmr
+tkC
+bNB
+ryM
+kZR
cNW
cOe
cmo
@@ -99608,10 +100224,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
aae
aaa
aaa
@@ -99844,12 +100456,16 @@ hYR
ceO
cNW
cgp
-chv
-nZl
-czR
-czR
+cvO
+cOe
+cNW
+pxV
cVu
-cdr
+lSv
+cOe
+cOe
+cOe
+cOe
cNW
cOe
cou
@@ -99922,10 +100538,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(184,1,1) = {"
aaa
@@ -100108,6 +100720,10 @@ cNW
clt
cdr
cNW
+cNW
+cNW
+cNW
+cNW
cOe
bMB
cOT
@@ -100179,10 +100795,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(185,1,1) = {"
aaa
@@ -100366,6 +100978,10 @@ cgr
cms
cNW
cOe
+cOe
+cOe
+cOe
+cOe
bNA
cNW
aaf
@@ -100436,10 +101052,6 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
"}
(186,1,1) = {"
aaa
@@ -100625,10 +101237,10 @@ cOe
cOe
cNW
cNW
-aaa
-aaa
-aaa
-aaa
+cNW
+cNW
+cNW
+cNW
aaa
aaa
aaa
diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm
index 76a072d3408..514f10d783a 100644
--- a/_maps/map_files/Donutstation/Donutstation.dmm
+++ b/_maps/map_files/Donutstation/Donutstation.dmm
@@ -970,9 +970,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output{
dir = 8
},
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"acw" = (
/turf/open/floor/engine,
@@ -1042,7 +1040,8 @@
/turf/open/floor/engine/vacuum,
/area/science/mixing)
"acF" = (
-/turf/open/floor/engine/airless,
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/engine/air,
/area/engine/atmos)
"acG" = (
/obj/structure/disposalpipe/segment{
@@ -1182,9 +1181,7 @@
/turf/open/floor/plasteel,
/area/science/storage)
"acT" = (
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"acU" = (
/obj/structure/bookcase,
@@ -1979,9 +1976,7 @@
/area/medical/virology)
"aeV" = (
/obj/machinery/air_sensor/atmos/nitrous_tank,
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aeW" = (
/obj/effect/decal/cleanable/dirt,
@@ -4602,8 +4597,7 @@
dir = 1
},
/obj/machinery/camera{
- c_tag = "Cargo - Docking Bay North";
- dir = 2
+ c_tag = "Cargo - Docking Bay North"
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
@@ -5135,12 +5129,8 @@
},
/area/crew_quarters/kitchen)
"anM" = (
-/obj/machinery/atmospherics/miner/n2o{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"anQ" = (
/obj/structure/sign/warning/docking{
@@ -8437,9 +8427,7 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input{
dir = 8
},
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"axm" = (
/obj/effect/turf_decal/tile/neutral{
@@ -8450,7 +8438,7 @@
/area/hallway/primary/central)
"axn" = (
/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/engine/airless,
+/turf/open/floor/engine/air,
/area/engine/atmos)
"axo" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
@@ -8587,9 +8575,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{
dir = 8
},
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"axE" = (
/obj/effect/turf_decal/tile/purple{
@@ -8645,9 +8631,7 @@
},
/area/science/research)
"axJ" = (
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"axK" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
@@ -8785,9 +8769,7 @@
/area/engine/atmos)
"aya" = (
/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"ayb" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
@@ -8799,9 +8781,7 @@
/area/science/mixing)
"ayc" = (
/obj/machinery/air_sensor/atmos/toxin_tank,
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"ayd" = (
/obj/machinery/suit_storage_unit/atmos,
@@ -8833,12 +8813,8 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"ayh" = (
-/obj/machinery/atmospherics/miner/toxins{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/toxins,
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"ayi" = (
/obj/machinery/light/small{
@@ -8849,17 +8825,13 @@
dir = 8;
network = list("ss13","Atmospherics")
},
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"ayj" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{
dir = 8
},
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"ayk" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
@@ -8891,9 +8863,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output{
dir = 8
},
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"ayo" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
@@ -9035,15 +9005,11 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"ayD" = (
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"ayF" = (
/obj/machinery/air_sensor/atmos/carbon_tank,
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"ayG" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
@@ -9136,12 +9102,8 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"ayS" = (
-/obj/machinery/atmospherics/miner/carbon_dioxide{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"ayT" = (
/obj/machinery/light/small{
@@ -9152,9 +9114,7 @@
dir = 8;
network = list("ss13","Atmospherics")
},
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"ayU" = (
/obj/structure/closet/l3closet/scientist,
@@ -9302,17 +9262,13 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{
dir = 8
},
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"azj" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input{
dir = 1
},
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"azk" = (
/obj/machinery/atmospherics/components/binary/pump{
@@ -10845,55 +10801,45 @@
/area/engine/atmos)
"aDD" = (
/obj/machinery/air_sensor/atmos/nitrogen_tank,
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aDE" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{
dir = 1
},
-/turf/open/floor/engine/airless,
+/turf/open/floor/engine/air,
/area/engine/atmos)
"aDF" = (
/obj/machinery/air_sensor/atmos/air_tank,
-/turf/open/floor/engine/airless,
+/turf/open/floor/engine/air,
/area/engine/atmos)
"aDG" = (
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{
dir = 1
},
-/turf/open/floor/engine/airless,
+/turf/open/floor/engine/air,
/area/engine/atmos)
"aDH" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output{
dir = 1
},
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aDI" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input{
dir = 1
},
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aDJ" = (
/obj/machinery/air_sensor/atmos/oxygen_tank,
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aDK" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output{
dir = 1
},
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aDL" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
@@ -10911,7 +10857,7 @@
dir = 1;
network = list("ss13","Atmospherics")
},
-/turf/open/floor/engine/airless,
+/turf/open/floor/engine/air,
/area/engine/atmos)
"aDO" = (
/obj/machinery/door/airlock/research{
@@ -31862,9 +31808,7 @@
c_tag = "Atmospherics - Nitrous Oxide Tank";
network = list("ss13","Atmospherics")
},
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"bFr" = (
/obj/structure/disposalpipe/segment{
@@ -36573,9 +36517,7 @@
/area/maintenance/fore)
"bSf" = (
/obj/machinery/light/small,
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"bSh" = (
/obj/machinery/atmospherics/components/binary/pump,
@@ -40213,22 +40155,14 @@
/turf/open/floor/plasteel/dark,
/area/tcommsat/server)
"cdL" = (
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"cdM" = (
-/obj/machinery/atmospherics/miner/nitrogen{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"cdN" = (
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"cdP" = (
/obj/effect/turf_decal/tile/yellow{
@@ -40637,12 +40571,8 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"ceK" = (
-/obj/machinery/atmospherics/miner/oxygen{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"ceL" = (
/obj/machinery/light/small,
@@ -40651,9 +40581,7 @@
dir = 1;
network = list("ss13","Atmospherics")
},
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"ceM" = (
/obj/machinery/light/small,
@@ -40662,9 +40590,7 @@
dir = 1;
network = list("ss13","Atmospherics")
},
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"ceS" = (
/obj/effect/turf_decal/stripes/line{
@@ -40935,6 +40861,9 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
+"cFG" = (
+/turf/open/floor/engine/air,
+/area/engine/atmos)
"cGH" = (
/obj/structure/girder,
/obj/structure/grille/broken,
@@ -89255,7 +89184,7 @@ aDw
avb
aDF
acF
-acF
+cFG
bPb
pjJ
bPb
@@ -89511,8 +89440,8 @@ azD
aDx
aDC
aDG
-acF
-acF
+cFG
+cFG
acj
aal
bPb
diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm
index eceb49649b9..5329d8ad395 100644
--- a/_maps/map_files/KiloStation/KiloStation.dmm
+++ b/_maps/map_files/KiloStation/KiloStation.dmm
@@ -1513,7 +1513,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/structure/cable,
+/obj/structure/cable/layer3,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -1747,7 +1747,6 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat_interior)
"acW" = (
@@ -1947,7 +1946,6 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"adn" = (
@@ -2209,7 +2207,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
-/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat/foyer)
"adF" = (
@@ -2370,7 +2367,6 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat/atmos)
"adS" = (
@@ -2517,7 +2513,6 @@
pixel_x = -22
},
/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
/turf/open/floor/plating,
/area/ai_monitored/turret_protected/aisat/atmos)
"aed" = (
@@ -2536,7 +2531,6 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat/atmos)
"aef" = (
@@ -2623,11 +2617,6 @@
},
/turf/open/floor/plasteel,
/area/bridge)
-"aen" = (
-/obj/structure/lattice/catwalk,
-/obj/structure/cable,
-/turf/open/floor/plating/airless,
-/area/space/nearstation)
"aeo" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -2913,7 +2902,6 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plating/airless,
/area/space/nearstation)
"aeT" = (
@@ -4840,7 +4828,6 @@
name = "Abandoned External Airlock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/maintenance/fore)
"ahZ" = (
@@ -5183,7 +5170,6 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/obj/structure/cable,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
@@ -6593,7 +6579,6 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/maintenance/fore)
"akP" = (
@@ -9451,7 +9436,6 @@
network = list("minisat")
},
/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat_interior)
"api" = (
@@ -12576,6 +12560,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 6
},
+/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat/atmos)
"atY" = (
@@ -12670,6 +12655,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat/atmos)
"aug" = (
@@ -18760,30 +18746,18 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"aDz" = (
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aDA" = (
-/obj/machinery/atmospherics/miner/nitrogen{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aDC" = (
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aDD" = (
-/obj/machinery/atmospherics/miner/oxygen{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aDE" = (
/obj/machinery/camera{
@@ -19603,19 +19577,13 @@
/turf/open/floor/grass,
/area/medical/genetics/cloning)
"aFc" = (
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"aFd" = (
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"aFe" = (
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aFf" = (
/turf/open/floor/engine/vacuum,
@@ -19704,28 +19672,16 @@
/turf/open/floor/plasteel/dark,
/area/medical/cryo)
"aFm" = (
-/obj/machinery/atmospherics/miner/carbon_dioxide{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"aFn" = (
-/obj/machinery/atmospherics/miner/toxins{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/toxins,
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"aFo" = (
-/obj/machinery/atmospherics/miner/n2o{
- max_ext_kpa = 2500
- },
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aFp" = (
/obj/machinery/computer/med_data,
@@ -20322,9 +20278,7 @@
name = "atmospherics camera";
network = list("ss13","engine")
},
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aGl" = (
/obj/structure/table,
@@ -20802,45 +20756,33 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input{
dir = 4
},
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aGV" = (
/obj/machinery/air_sensor/atmos/nitrogen_tank,
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aGW" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output{
dir = 4
},
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aGX" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input{
dir = 4
},
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aGY" = (
/obj/machinery/air_sensor/atmos/oxygen_tank,
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aGZ" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output{
dir = 4
},
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aHa" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{
@@ -20862,67 +20804,49 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{
dir = 1
},
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"aHe" = (
/obj/machinery/air_sensor/atmos/carbon_tank,
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"aHf" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output{
dir = 1
},
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"aHg" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{
dir = 1
},
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"aHh" = (
/obj/machinery/air_sensor/atmos/toxin_tank,
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"aHi" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{
dir = 1
},
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"aHj" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input{
dir = 1
},
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aHk" = (
/obj/machinery/air_sensor/atmos/nitrous_tank,
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aHl" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output{
dir = 1
},
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aHm" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input{
@@ -24612,9 +24536,7 @@
/area/security/main)
"aML" = (
/obj/machinery/light/floor,
-/turf/open/floor/engine/n2{
- initial_gas_mix = "n2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2,
/area/engine/atmos)
"aMM" = (
/obj/machinery/door/airlock/maintenance{
@@ -24658,9 +24580,7 @@
/area/science/mixing/chamber)
"aMO" = (
/obj/machinery/light/floor,
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aMP" = (
/obj/structure/chair{
@@ -24787,9 +24707,7 @@
name = "atmospherics camera";
network = list("ss13","engine")
},
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"aNa" = (
/obj/machinery/camera{
@@ -24798,9 +24716,7 @@
name = "atmospherics camera";
network = list("ss13","engine")
},
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"aNb" = (
/obj/machinery/camera{
@@ -24809,9 +24725,7 @@
name = "atmospherics camera";
network = list("ss13","engine")
},
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aNc" = (
/obj/machinery/camera{
@@ -30925,15 +30839,11 @@
/area/medical/virology)
"aVF" = (
/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"aVG" = (
/obj/effect/landmark/xeno_spawn,
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"aVH" = (
/obj/machinery/status_display/evac,
@@ -33358,6 +33268,7 @@
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
/mob/living/simple_animal/bot/secbot/pingsky,
+/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat_interior)
"aZi" = (
@@ -54496,9 +54407,7 @@
/area/maintenance/port)
"bDR" = (
/obj/machinery/light/floor,
-/turf/open/floor/engine/co2{
- initial_gas_mix = "co2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/co2,
/area/engine/atmos)
"bDS" = (
/obj/structure/table,
@@ -55678,9 +55587,7 @@
/area/maintenance/port)
"bFG" = (
/obj/machinery/light/floor,
-/turf/open/floor/engine/plasma{
- initial_gas_mix = "plasma=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/plasma,
/area/engine/atmos)
"bFH" = (
/obj/effect/turf_decal/stripes/corner{
@@ -57232,9 +57139,7 @@
/area/hallway/primary/port)
"bId" = (
/obj/machinery/light/floor,
-/turf/open/floor/engine/n2o{
- initial_gas_mix = "n2o=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/n2o,
/area/engine/atmos)
"bIe" = (
/obj/machinery/atmospherics/pipe/simple/purple/visible,
@@ -57803,9 +57708,7 @@
name = "atmospherics camera";
network = list("ss13","engine")
},
-/turf/open/floor/engine/o2{
- initial_gas_mix = "o2=1000;TEMP=293.15"
- },
+/turf/open/floor/engine/o2,
/area/engine/atmos)
"bIV" = (
/turf/closed/wall,
@@ -72801,6 +72704,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"cfv" = (
@@ -73357,6 +73261,7 @@
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat_interior)
"cgq" = (
@@ -73626,6 +73531,7 @@
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat_interior)
"cgK" = (
@@ -74027,6 +73933,7 @@
dir = 4
},
/obj/machinery/holopad/secure,
+/obj/structure/cable,
/turf/open/floor/engine,
/area/ai_monitored/turret_protected/aisat_interior)
"chq" = (
@@ -74411,6 +74318,8 @@
dir = 5
},
/obj/structure/cable,
+/obj/structure/cable_bridge,
+/obj/structure/cable/layer3,
/turf/open/floor/engine,
/area/ai_monitored/storage/satellite)
"cic" = (
@@ -93840,6 +93749,10 @@
"dvN" = (
/turf/open/floor/plating/asteroid/lowpressure,
/area/space/nearstation)
+"dSr" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/open/floor/engine/air,
+/area/engine/atmos)
"fhz" = (
/obj/structure/cable,
/obj/machinery/holopad/secure,
@@ -119807,8 +119720,8 @@ aDD
aMO
aFM
aMY
+dSr
bUQ
-aMY
bFP
cCX
bUZ
@@ -121255,19 +121168,19 @@ adR
adZ
aec
aee
-aen
+cHu
cHu
aeS
aeS
-aen
+cHu
aeS
aeS
-aen
+cHu
aeS
aeS
-aen
-aen
-aen
+cHu
+cHu
+cHu
ahY
aiD
akO
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index f17eb327158..78d7ecc42b8 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -45218,14 +45218,8 @@
/turf/open/floor/plating,
/area/maintenance/starboard/secondary)
"bYc" = (
-/obj/structure/window/spawner/east,
-/obj/structure/window/spawner/north,
-/obj/structure/window/spawner,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/leafybush,
-/obj/structure/flora/ausbushes/palebush,
-/turf/open/floor/grass,
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
/area/hallway/primary/central)
"bYd" = (
/obj/machinery/door/firedoor,
@@ -45692,7 +45686,8 @@
dir = 4
},
/obj/machinery/airalarm{
- pixel_y = 24
+ dir = 4;
+ pixel_x = -22
},
/turf/open/floor/plasteel,
/area/security/checkpoint/medical)
@@ -46178,14 +46173,6 @@
/obj/structure/table,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
-"caj" = (
-/obj/machinery/requests_console{
- department = "Medbay";
- departmentType = 1;
- name = "Medbay RC"
- },
-/turf/closed/wall,
-/area/security/checkpoint/medical)
"cak" = (
/obj/effect/turf_decal/tile/blue{
dir = 1
@@ -47076,24 +47063,24 @@
dir = 4;
network = list("ss13","medbay")
},
-/obj/structure/chair/greyscale,
/obj/item/radio/intercom{
pixel_x = -28
},
/obj/effect/turf_decal/tile/blue{
- dir = 1
+ dir = 8
},
-/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
- dir = 8
+ dir = 1
},
+/obj/structure/chair,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cbS" = (
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/security/checkpoint/medical)
"cbT" = (
@@ -47809,55 +47796,26 @@
/turf/open/floor/plasteel/white,
/area/medical/storage)
"cdw" = (
-/obj/machinery/computer/security/telescreen{
- desc = "Used for monitoring medbay to ensure patient safety.";
- dir = 1;
- name = "Medbay Monitor";
- network = list("medbay");
- pixel_x = -29
- },
/obj/machinery/computer/med_data{
dir = 4
},
-/obj/machinery/light{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel,
-/area/security/checkpoint/medical)
-"cdx" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 1
+/obj/machinery/computer/security/telescreen{
+ desc = "Used for monitoring medbay to ensure patient safety.";
+ dir = 4;
+ name = "Medbay Monitor";
+ network = list("medbay");
+ pixel_x = -32
},
/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
+/turf/open/floor/plasteel,
+/area/security/checkpoint/medical)
"cdy" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable,
/obj/effect/landmark/start/medical_doctor,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cdz" = (
@@ -48251,6 +48209,10 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/security/checkpoint/medical)
"ceB" = (
@@ -48849,44 +48811,13 @@
/turf/open/floor/plasteel/white,
/area/medical/storage)
"cfP" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 1
- },
/obj/machinery/medical_kiosk,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/effect/turf_decal/tile/blue,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
-"cfQ" = (
-/obj/structure/cable,
-/obj/structure/window/reinforced/spawner/north,
-/obj/structure/window/reinforced/spawner,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/reedbush,
-/obj/structure/flora/ausbushes/sunnybush,
-/obj/structure/window/reinforced/spawner/west,
-/turf/open/floor/grass,
-/area/security/checkpoint/medical)
-"cfR" = (
-/obj/structure/cable,
-/obj/structure/window/reinforced/spawner/east,
-/obj/structure/window/reinforced/spawner/north,
-/obj/structure/window/reinforced/spawner,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/reedbush,
-/obj/structure/flora/ausbushes/sunnybush,
-/turf/open/floor/grass,
-/area/security/checkpoint/medical)
"cfT" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/medical/glass{
@@ -49386,32 +49317,13 @@
/turf/open/floor/plasteel/white,
/area/medical/storage)
"cgX" = (
-/obj/structure/chair/greyscale,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
-"cgY" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/obj/structure/chair/greyscale,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
+/obj/structure/chair,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cgZ" = (
@@ -49420,17 +49332,15 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/effect/turf_decal/tile/blue{
- dir = 8
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cha" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/sink{
dir = 8;
pixel_x = 12
@@ -49438,12 +49348,12 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/effect/turf_decal/tile/blue{
- dir = 8
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
@@ -50063,10 +49973,6 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
/obj/effect/turf_decal/tile/blue{
dir = 8
},
@@ -50082,50 +49988,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
-"cir" = (
-/obj/machinery/atmospherics/pipe/manifold/supply,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
-"cit" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 9
- },
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
"ciu" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
+/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/effect/turf_decal/tile/blue{
- dir = 8
+/obj/effect/turf_decal/tile/yellow,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
@@ -50713,29 +50582,16 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cjR" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 9
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
+/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cjS" = (
@@ -51348,34 +51204,21 @@
/turf/open/floor/plating,
/area/medical/medbay/central)
"clo" = (
-/obj/structure/chair/greyscale{
- dir = 1
- },
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/chair{
+ dir = 1
+ },
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"clp" = (
/obj/structure/table,
/obj/machinery/light,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
/obj/item/storage/firstaid/regular{
pixel_x = 4;
pixel_y = 4
@@ -51385,6 +51228,10 @@
pixel_x = -4;
pixel_y = -4
},
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"clq" = (
@@ -51393,28 +51240,19 @@
pixel_y = -24
},
/obj/item/twohanded/required/kirbyplants,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"clr" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
- dir = 4
+ dir = 8
},
/obj/effect/turf_decal/tile/blue{
- dir = 8
+ dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
@@ -70951,15 +70789,11 @@
/obj/structure/sign/warning/nosmoking{
pixel_y = 28
},
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
- dir = 8
+ dir = 1
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
@@ -71849,15 +71683,6 @@
/obj/structure/grille/broken,
/turf/open/space/basic,
/area/space/nearstation)
-"dVQ" = (
-/obj/structure/window/spawner/west,
-/obj/structure/window/spawner/north,
-/obj/structure/window/spawner,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/fernybush,
-/turf/open/floor/grass,
-/area/hallway/primary/central)
"dVT" = (
/obj/effect/turf_decal/tile/yellow{
dir = 8
@@ -72007,17 +71832,6 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
-"eza" = (
-/obj/structure/window/spawner/west,
-/obj/structure/window/spawner/east,
-/obj/structure/window/spawner/north,
-/obj/structure/window/spawner,
-/obj/structure/flora/ausbushes/fullgrass,
-/obj/structure/flora/ausbushes/lavendergrass,
-/obj/structure/flora/ausbushes/brflowers,
-/obj/structure/flora/ausbushes/stalkybush,
-/turf/open/floor/grass,
-/area/hallway/primary/central)
"eAa" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -72576,6 +72390,16 @@
},
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
+"hcZ" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"hdb" = (
/obj/structure/bed,
/obj/item/clothing/suit/straight_jacket,
@@ -74363,6 +74187,14 @@
},
/turf/open/floor/plasteel/dark/corner,
/area/engine/storage_shared)
+"oEO" = (
+/obj/machinery/requests_console{
+ department = "Medbay";
+ departmentType = 1;
+ name = "Medbay RC"
+ },
+/turf/closed/wall,
+/area/medical/storage)
"oFI" = (
/obj/machinery/door/window/eastright{
dir = 8;
@@ -74579,6 +74411,14 @@
},
/turf/open/floor/plasteel,
/area/engine/break_room)
+"ppb" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"ppz" = (
/obj/machinery/vending/boozeomat/all_access,
/obj/effect/decal/cleanable/cobweb,
@@ -75191,6 +75031,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"rMv" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"rOP" = (
/obj/structure/sign/poster/official/random,
/turf/closed/wall,
@@ -75525,6 +75372,12 @@
/obj/machinery/meter,
/turf/open/floor/engine,
/area/engine/engineering)
+"sWn" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"tay" = (
/turf/closed/wall,
/area/medical/medbay/central)
@@ -75632,6 +75485,13 @@
/obj/machinery/pinpointer_dispenser,
/turf/open/floor/plating,
/area/quartermaster/sorting)
+"tut" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"twp" = (
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
@@ -76445,6 +76305,16 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/maintenance/department/science)
+"wSP" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"wYq" = (
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood,
@@ -100272,7 +100142,7 @@ cad
cbP
cdv
cez
-bXK
+oEO
tay
cio
cjO
@@ -100526,7 +100396,7 @@ bWj
bXL
bXL
cae
-caj
+bXL
bXL
bXL
bXL
@@ -100786,11 +100656,11 @@ rVd
cbQ
cdw
ceA
-cfQ
+cbS
cgX
-cip
-cjQ
-clo
+sWn
+wSP
+hcZ
cmv
cnE
coQ
@@ -101043,10 +100913,10 @@ cag
caf
caf
ceB
-cfR
-cgY
-cir
-cdx
+cbS
+cgX
+cbY
+tut
cfP
cmv
cnF
@@ -101302,7 +101172,7 @@ cbS
cbS
bXL
dwy
-cip
+cbY
cdy
clp
cmu
@@ -101559,8 +101429,8 @@ cal
ceD
cfT
cgZ
-cit
-cjQ
+rMv
+ppb
clq
cmu
cmu
@@ -108747,7 +108617,7 @@ sKL
bUb
bVb
bWG
-dVQ
+bSS
bSS
bSS
bSS
@@ -109518,7 +109388,7 @@ jZS
bUd
bVq
bWJ
-eza
+bYc
bZs
aWf
ccr
diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm
index b610eb50cc1..acf77ed73e1 100644
--- a/code/__DEFINES/achievements.dm
+++ b/code/__DEFINES/achievements.dm
@@ -19,6 +19,11 @@
#define MEDAL_SELFOUCH "Hands???"
#define MEDAL_SANDMAN "Mister Sandman"
#define MEDAL_CLEANBOSS "Cleanboss"
+#define MEDAL_RULE8 "Rule 8"
+#define MEDAL_LONGSHIFT "longshift"
+
+//Skill medal hub IDs
+#define MEDAL_LEGENDARY_MINER "Legendary Miner"
//Boss medals
diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm
index 61198aa0ae8..1a2ed41c69e 100644
--- a/code/__DEFINES/atmospherics.dm
+++ b/code/__DEFINES/atmospherics.dm
@@ -131,12 +131,14 @@
#define BODYTEMP_COOLING_MAX -100
/// The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area.
#define BODYTEMP_HEATING_MAX 30
-
-/// The limit the human body can take before it starts taking damage from heat.
-#define BODYTEMP_HEAT_DAMAGE_LIMIT (BODYTEMP_NORMAL + 50)
-/// The limit the human body can take before it starts taking damage from coldness.
-#define BODYTEMP_COLD_DAMAGE_LIMIT (BODYTEMP_NORMAL - 50)
-
+/// The body temperature limit the human body can take before it starts taking damage from heat.
+/// This also affects how fast the body normalises it's temperature when hot.
+/// 340k is about 66c, and rather high for a human.
+#define BODYTEMP_HEAT_DAMAGE_LIMIT (BODYTEMP_NORMAL + 30)
+/// The body temperature limit the human body can take before it starts taking damage from cold.
+/// This also affects how fast the body normalises it's temperature when cold.
+/// 270k is about -3c, that is below freezing and would hurt over time.
+#define BODYTEMP_COLD_DAMAGE_LIMIT (BODYTEMP_NORMAL - 40)
/// what min_cold_protection_temperature is set to for space-helmet quality headwear. MUST NOT BE 0.
#define SPACE_HELM_MIN_TEMP_PROTECT 2.0
diff --git a/code/__DEFINES/cinematics.dm b/code/__DEFINES/cinematics.dm
index 6d85c45f1bc..f994dc82a4b 100644
--- a/code/__DEFINES/cinematics.dm
+++ b/code/__DEFINES/cinematics.dm
@@ -11,3 +11,4 @@
#define CINEMATIC_NUKE_FAR 11
#define CINEMATIC_NUKE_CLOWNOP 12
#define CINEMATIC_CULT_NUKE 13
+#define CINEMATIC_CULT_FAIL 14
diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index 5ea124e2a1a..943e9c005e5 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -204,7 +204,7 @@
// /mob signals
#define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed)
-
+#define COMSIG_MOB_STATCHANGE "mob_statchange" //from base of mob/set_stat(): (new_stat)
#define COMSIG_MOB_CLICKON "mob_clickon" //from base of mob/clickon(): (atom/A, params)
#define COMSIG_MOB_MIDDLECLICKON "mob_middleclickon" //from base of mob/MiddleClickOn(): (atom/A)
#define COMSIG_MOB_ALTCLICKON "mob_altclickon" //from base of mob/AltClickOn(): (atom/A)
diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm
index ecdc2f7a766..a4b07f97e20 100644
--- a/code/__DEFINES/obj_flags.dm
+++ b/code/__DEFINES/obj_flags.dm
@@ -51,3 +51,4 @@
#define ORGAN_FAILING (1<<2) //Failing organs perform damaging effects until replaced or fixed
#define ORGAN_EXTERNAL (1<<3) //Was this organ implanted/inserted/etc, if true will not be removed during species change.
#define ORGAN_VITAL (1<<4) //Currently only the brain
+#define ORGAN_SYNTHETIC_EMP (1<<5) //Synthetic organ affected by an EMP. Deteriorates over time.
diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm
index 5973eab8b82..eb151dd0475 100644
--- a/code/__DEFINES/reactions.dm
+++ b/code/__DEFINES/reactions.dm
@@ -33,7 +33,6 @@
#define NOBLIUM_RESEARCH_AMOUNT 1000
#define BZ_RESEARCH_SCALE 4
#define BZ_RESEARCH_MAX_AMOUNT 400
-#define MIASMA_RESEARCH_AMOUNT 40
#define STIMULUM_RESEARCH_AMOUNT 50
//Plasma fusion properties
#define FUSION_ENERGY_THRESHOLD 3e9 //Amount of energy it takes to start a fusion reaction
diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm
index b301fd79147..417fe9316a5 100644
--- a/code/__DEFINES/say.dm
+++ b/code/__DEFINES/say.dm
@@ -15,6 +15,7 @@
#define MODE_INTERCOM "intercom"
#define MODE_KEY_INTERCOM "i"
+#define MODE_TOKEN_INTERCOM ":i"
#define MODE_BINARY "binary"
#define MODE_KEY_BINARY "b"
@@ -63,6 +64,9 @@
//Eavesdropping
#define EAVESDROP_EXTRA_RANGE 1 //how much past the specified message_range does the message get starred, whispering only
+/// How close intercoms can be for radio code use
+#define MODE_RANGE_INTERCOM 1
+
// A link given to ghost alice to follow bob
#define FOLLOW_LINK(alice, bob) "(F)"
#define TURF_LINK(alice, turfy) "(T)"
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index efd8a80e9e2..824925c0a45 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -20,7 +20,7 @@
*
* make sure you add an update to the schema_version stable in the db changelog
*/
-#define DB_MINOR_VERSION 6
+#define DB_MINOR_VERSION 7
//! ## Timing subsystem
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index b768c6cf89a..ff60243f2cf 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -145,6 +145,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_BOOZE_SLIDER "booze-slider"
#define TRAIT_QUICK_CARRY "quick-carry"
#define TRAIT_QUICKER_CARRY "quicker-carry"
+#define TRAIT_QUICK_BUILD "quick-build"
#define TRAIT_UNINTELLIGIBLE_SPEECH "unintelligible-speech"
#define TRAIT_UNSTABLE "unstable"
#define TRAIT_OIL_FRIED "oil_fried"
@@ -159,8 +160,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
// item traits
-#define TRAIT_NODROP "nodrop"
-#define TRAIT_T_RAY_VISIBLE "t-ray-visible" // Visible on t-ray scanners if the atom/var/level == 1
+#define TRAIT_NODROP "nodrop"
+#define TRAIT_NO_STORAGE_INSERT "no_storage_insert" //cannot be inserted in a storage.
+#define TRAIT_T_RAY_VISIBLE "t-ray-visible" // Visible on t-ray scanners if the atom/var/level == 1
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
//quirk traits
@@ -190,6 +192,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
// common trait sources
#define TRAIT_GENERIC "generic"
+#define GENERIC_ITEM_TRAIT "generic_item"
#define UNCONSCIOUS_BLIND "unconscious_blind"
#define EYE_DAMAGE "eye_damage"
#define GENETIC_MUTATION "genetic"
diff --git a/code/__DEFINES/typeids.dm b/code/__DEFINES/typeids.dm
index 8bfe6216e26..275f7719f07 100644
--- a/code/__DEFINES/typeids.dm
+++ b/code/__DEFINES/typeids.dm
@@ -2,7 +2,7 @@
#define TYPEID_NULL "0"
#define TYPEID_NORMAL_LIST "f"
//helper macros
-#define GET_TYPEID(ref) ( ( (length(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, length(ref)-6) ) )
+#define GET_TYPEID(ref) ( ( (length(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, -7) ) )
#define IS_NORMAL_LIST(L) (GET_TYPEID("\ref[L]") == TYPEID_NORMAL_LIST)
diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm
index 84d36f9db4b..ba53368ae9c 100644
--- a/code/__HELPERS/files.dm
+++ b/code/__HELPERS/files.dm
@@ -20,7 +20,7 @@
continue
path += choice
- if(copytext(path,-1,0) != "/") //didn't choose a directory, no need to iterate again
+ if(copytext_char(path, -1) != "/") //didn't choose a directory, no need to iterate again
break
var/extensions
for(var/i in valid_extensions)
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 341dbb7d601..e6424592ff6 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -196,48 +196,6 @@
return
-// Better recursive loop, technically sort of not actually recursive cause that shit is retarded, enjoy.
-//No need for a recursive limit either
-/proc/recursive_mob_check(atom/O,client_check=1,sight_check=1,include_radio=1)
-
- var/list/processing_list = list(O)
- var/list/processed_list = list()
- var/list/found_mobs = list()
-
- while(processing_list.len)
-
- var/atom/A = processing_list[1]
- var/passed = 0
-
- if(ismob(A))
- var/mob/A_tmp = A
- passed=1
-
- if(client_check && !A_tmp.client)
- passed=0
-
- if(sight_check && !isInSight(A_tmp, O))
- passed=0
-
- else if(include_radio && istype(A, /obj/item/radio))
- passed=1
-
- if(sight_check && !isInSight(A, O))
- passed=0
-
- if(passed)
- found_mobs |= A
-
- for(var/atom/B in A)
- if(!processed_list[B])
- processing_list |= B
-
- processing_list.Cut(1, 2)
- processed_list[A] = A
-
- return found_mobs
-
-
/proc/get_hearers_in_view(R, atom/source)
// Returns a list of hearers in view(R) from source (ignoring luminosity). Used in saycode.
var/turf/T = get_turf(source)
@@ -453,7 +411,7 @@
var/list/result = list()
for(var/m in group)
var/mob/M = m
- if(!M.key || !M.client || (ignore_category && GLOB.poll_ignore[ignore_category] && M.ckey in GLOB.poll_ignore[ignore_category]))
+ if(!M.key || !M.client || (ignore_category && GLOB.poll_ignore[ignore_category] && (M.ckey in GLOB.poll_ignore[ignore_category])))
continue
if(be_special_flag)
if(!(M.client.prefs) || !(be_special_flag in M.client.prefs.be_special))
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index 1944cff9c61..53eec1504d6 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -981,7 +981,7 @@ world
var/icon/atom_icon = new(A.icon, A.icon_state)
if(!letter)
- letter = copytext(A.name, 1, 2)
+ letter = A.name[1]
if(uppercase == 1)
letter = uppertext(letter)
else if(uppercase == -1)
@@ -1109,7 +1109,7 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
WRITE_FILE(GLOB.iconCache[iconKey], icon)
var/iconData = GLOB.iconCache.ExportText(iconKey)
var/list/partial = splittext(iconData, "{")
- return replacetext(copytext(partial[2], 3, -5), "\n", "")
+ return replacetext(copytext_char(partial[2], 3, -5), "\n", "")
/proc/icon2html(thing, target, icon_state, dir, frame = 1, moving = FALSE)
if (!thing)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index b8944cdc7a6..cc18622ddc2 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -431,7 +431,7 @@ GLOBAL_LIST_EMPTY(species_list)
continue
if(M.stat != DEAD && !override)
continue
- if(speaker_key && speaker_key in ignoring)
+ if(speaker_key && (speaker_key in ignoring))
continue
switch(message_type)
diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm
index ae803b8c8f1..bfe09ba370c 100644
--- a/code/__HELPERS/pronouns.dm
+++ b/code/__HELPERS/pronouns.dm
@@ -28,10 +28,10 @@
. = "does"
/datum/proc/p_theyve(capitalized, temp_gender)
- . = p_they(capitalized, temp_gender) + "'" + copytext(p_have(temp_gender), 3)
+ . = p_they(capitalized, temp_gender) + "'" + copytext_char(p_have(temp_gender), 3)
/datum/proc/p_theyre(capitalized, temp_gender)
- . = p_they(capitalized, temp_gender) + "'" + copytext(p_are(temp_gender), 2)
+ . = p_they(capitalized, temp_gender) + "'" + copytext_char(p_are(temp_gender), 2)
/datum/proc/p_s(temp_gender) //is this a descriptive proc name, or what?
. = "s"
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index 9132a378d32..e173231ffdf 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -188,10 +188,16 @@
cb.InvokeAsync()
LAZYCLEARLIST(round_end_events)
+ var/speed_round = FALSE
+ if(world.time - SSticker.round_start_time <= 300 SECONDS)
+ speed_round = TRUE
+
for(var/client/C in GLOB.clients)
if(!C.credits)
C.RollCredits()
C.playtitlemusic(40)
+ if(speed_round)
+ C.give_award(/datum/award/achievement/misc/speed_round, C.mob)
var/popcount = gather_roundend_feedback()
display_report(popcount)
diff --git a/code/__HELPERS/sanitize_values.dm b/code/__HELPERS/sanitize_values.dm
index 5588b0309f1..9a2e18f3156 100644
--- a/code/__HELPERS/sanitize_values.dm
+++ b/code/__HELPERS/sanitize_values.dm
@@ -16,7 +16,7 @@
return value
if(default)
return default
-
+
/proc/sanitize_inlist(value, list/List, default)
if(value in List)
return value
@@ -52,9 +52,12 @@
var/start = 1 + (text2ascii(color, 1) == 35)
var/len = length(color)
var/char = ""
+ // RRGGBB -> RGB but awful
+ var/convert_to_shorthand = desired_format == 3 && length_char(color) > 3
. = ""
- for(var/i = start, i <= len, i += length(char))
+ var/i = start
+ while(i <= len)
char = color[i]
switch(text2ascii(char))
if(48 to 57) //numbers 0 to 9
@@ -65,6 +68,9 @@
. += lowertext(char)
else
break
+ i += length(char)
+ if(convert_to_shorthand && i <= len) //skip next one
+ i += length(color[i])
if(length_char(.) != desired_format)
if(default)
@@ -74,7 +80,9 @@
return crunch + .
/proc/sanitize_ooccolor(color)
- var/list/HSL = rgb2hsl(hex2num(copytext(color,2,4)),hex2num(copytext(color,4,6)),hex2num(copytext(color,6,8)))
+ if(length(color) != length_char(color))
+ CRASH("Invalid characters in color '[color]'")
+ var/list/HSL = rgb2hsl(hex2num(copytext(color, 2, 4)), hex2num(copytext(color, 4, 6)), hex2num(copytext(color, 6, 8)))
HSL[3] = min(HSL[3],0.4)
var/list/RGB = hsl2rgb(arglist(HSL))
return "#[num2hex(RGB[1],2)][num2hex(RGB[2],2)][num2hex(RGB[3],2)]"
diff --git a/code/__HELPERS/shell.dm b/code/__HELPERS/shell.dm
index eed86a3bd10..35a8e4635b4 100644
--- a/code/__HELPERS/shell.dm
+++ b/code/__HELPERS/shell.dm
@@ -55,6 +55,6 @@
if(bad_chars)
bad_match = url_encode(bad_chars_regex.match)
scrubbed_url += bad_match
- last_good = bad_chars + length(bad_match)
+ last_good = bad_chars + length(bad_chars_regex.match)
while(bad_chars)
. = scrubbed_url
diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm
index 9495d2fb174..2026397a047 100644
--- a/code/__HELPERS/type2type.dm
+++ b/code/__HELPERS/type2type.dm
@@ -485,17 +485,17 @@
//assumes format #RRGGBB #rrggbb
/proc/color_hex2num(A)
- if(!A)
+ if(!A || length(A) != length_char(A))
return 0
- var/R = hex2num(copytext(A,2,4))
- var/G = hex2num(copytext(A,4,6))
- var/B = hex2num(copytext(A,6,0))
+ var/R = hex2num(copytext(A, 2, 4))
+ var/G = hex2num(copytext(A, 4, 6))
+ var/B = hex2num(copytext(A, 6, 8))
return R+G+B
//word of warning: using a matrix like this as a color value will simplify it back to a string after being set
/proc/color_hex2color_matrix(string)
var/length = length(string)
- if(length != 7 && length != 9)
+ if((length != 7 && length != 9) || length != length_char(string))
return color_matrix_identity()
var/r = hex2num(copytext(string, 2, 4))/255
var/g = hex2num(copytext(string, 4, 6))/255
diff --git a/code/__HELPERS/type_processing.dm b/code/__HELPERS/type_processing.dm
index 50684c79532..05a0dd28552 100644
--- a/code/__HELPERS/type_processing.dm
+++ b/code/__HELPERS/type_processing.dm
@@ -31,8 +31,8 @@
/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]/"))
+ if(copytext(typename, 1, length("[tn]/") + 1) == "[tn]/" /*findtextEx(typename,"[tn]/",1,2)*/ )
+ typename = TYPES_SHORTCUTS[tn] + copytext(typename, length("[tn]/"))
break
.[typename] = type
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index f49e49e2895..e6feb5274ac 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -6,22 +6,16 @@
//Inverts the colour of an HTML string
/proc/invertHTML(HTMLstring)
-
- if (!( istext(HTMLstring) ))
+ if(!istext(HTMLstring))
CRASH("Given non-text argument!")
- else
- if (length(HTMLstring) != 7)
- CRASH("Given non-HTML argument!")
+ else if(length(HTMLstring) != 7)
+ CRASH("Given non-HTML argument!")
+ else if(length_char(HTMLstring) != 7)
+ CRASH("Given non-hex symbols in argument!")
var/textr = copytext(HTMLstring, 2, 4)
var/textg = copytext(HTMLstring, 4, 6)
var/textb = copytext(HTMLstring, 6, 8)
- var/r = hex2num(textr)
- var/g = hex2num(textg)
- var/b = hex2num(textb)
- textr = num2hex(255 - r, 2)
- textg = num2hex(255 - g, 2)
- textb = num2hex(255 - b, 2)
- return text("#[][][]", textr, textg, textb)
+ return rgb(255 - hex2num(textr), 255 - hex2num(textg), 255 - hex2num(textb))
/proc/Get_Angle(atom/movable/start,atom/movable/end)//For beams.
if(!start || !end)
@@ -1400,7 +1394,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
/proc/GUID()
var/const/GUID_VERSION = "b"
var/const/GUID_VARIANT = "d"
- var/node_id = copytext(md5("[rand()*rand(1,9999999)][world.name][world.hub][world.hub_password][world.internet_address][world.address][world.contents.len][world.status][world.port][rand()*rand(1,9999999)]"), 1, 13)
+ var/node_id = copytext_char(md5("[rand()*rand(1,9999999)][world.name][world.hub][world.hub_password][world.internet_address][world.address][world.contents.len][world.status][world.port][rand()*rand(1,9999999)]"), 1, 13)
var/time_high = "[num2hex(text2num(time2text(world.realtime,"YYYY")), 2)][num2hex(world.realtime, 6)]"
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 617510c2f30..61bc30a8352 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -42,7 +42,7 @@
thealert.override_alerts = override
if(override)
thealert.timeout = null
- thealert.mob_viewer = src
+ thealert.owner = src
if(new_master)
var/old_layer = new_master.layer
@@ -97,7 +97,7 @@
var/severity = 0
var/alerttooltipstyle = ""
var/override_alerts = FALSE //If it is overriding other alerts of the same type
- var/mob/mob_viewer //the mob viewing this alert
+ var/mob/owner //Alert owner
/obj/screen/alert/MouseEntered(location,control,params)
@@ -227,6 +227,8 @@ or something covering your eyes."
/obj/screen/alert/mind_control/Click()
var/mob/living/L = usr
+ if(L != owner)
+ return
to_chat(L, "[command]")
/obj/screen/alert/drunk //Not implemented
@@ -241,7 +243,7 @@ If you're feeling frisky, examine yourself and click the underlined item to pull
icon_state = "embeddedobject"
/obj/screen/alert/embeddedobject/Click()
- if(isliving(usr))
+ if(isliving(usr) && usr == owner)
var/mob/living/carbon/human/M = usr
return M.help_shake_act(M)
@@ -270,7 +272,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/obj/screen/alert/fire/Click()
var/mob/living/L = usr
- if(!istype(L) || !L.can_resist())
+ if(!istype(L) || !L.can_resist() || L != owner)
return
L.changeNext_move(CLICK_CD_RESIST)
if(L.mobility_flags & MOBILITY_MOVE)
@@ -330,10 +332,10 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/obj/screen/alert/bloodsense/process()
var/atom/blood_target
- if(!mob_viewer.mind)
+ if(!owner.mind)
return
- var/datum/antagonist/cult/antag = mob_viewer.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
+ var/datum/antagonist/cult/antag = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
if(!antag)
return
var/datum/objective/sacrifice/sac_objective = locate() in antag.cult_team.objectives
@@ -370,7 +372,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
add_overlay(narnar)
return
var/turf/P = get_turf(blood_target)
- var/turf/Q = get_turf(mob_viewer)
+ var/turf/Q = get_turf(owner)
if(!P || !Q || (P.z != Q.z)) //The target is on a different Z level, we cannot sense that far.
icon_state = "runed_sense2"
desc = "You can no longer sense your target's presence."
@@ -494,7 +496,7 @@ so as to remain in compliance with the most up-to-date laws."
var/atom/target = null
/obj/screen/alert/hackingapc/Click()
- if(!usr || !usr.client)
+ if(!usr || !usr.client || usr != owner)
return
if(!target)
return
@@ -520,7 +522,7 @@ so as to remain in compliance with the most up-to-date laws."
timeout = 300
/obj/screen/alert/notify_cloning/Click()
- if(!usr || !usr.client)
+ if(!usr || !usr.client || usr != owner)
return
var/mob/dead/observer/G = usr
G.reenter_corpse()
@@ -534,7 +536,7 @@ so as to remain in compliance with the most up-to-date laws."
var/action = NOTIFY_JUMP
/obj/screen/alert/notify_action/Click()
- if(!usr || !usr.client)
+ if(!usr || !usr.client || usr != owner)
return
if(!target)
return
@@ -568,7 +570,7 @@ so as to remain in compliance with the most up-to-date laws."
/obj/screen/alert/restrained/Click()
var/mob/living/L = usr
- if(!istype(L) || !L.can_resist())
+ if(!istype(L) || !L.can_resist() || L != owner)
return
L.changeNext_move(CLICK_CD_RESIST)
if((L.mobility_flags & MOBILITY_MOVE) && (L.last_special <= world.time))
@@ -576,7 +578,7 @@ so as to remain in compliance with the most up-to-date laws."
/obj/screen/alert/restrained/buckled/Click()
var/mob/living/L = usr
- if(!istype(L) || !L.can_resist())
+ if(!istype(L) || !L.can_resist() || L != owner)
return
L.changeNext_move(CLICK_CD_RESIST)
if(L.last_special <= world.time)
@@ -585,11 +587,14 @@ so as to remain in compliance with the most up-to-date laws."
// PRIVATE = only edit, use, or override these if you're editing the system as a whole
// Re-render all alerts - also called in /datum/hud/show_hud() because it's needed there
-/datum/hud/proc/reorganize_alerts()
+/datum/hud/proc/reorganize_alerts(mob/viewmob)
+ var/mob/screenmob = viewmob || mymob
+ if(!screenmob.client)
+ return
var/list/alerts = mymob.alerts
if(!hud_shown)
for(var/i = 1, i <= alerts.len, i++)
- mymob.client.screen -= alerts[alerts[i]]
+ screenmob.client.screen -= alerts[alerts[i]]
return 1
for(var/i = 1, i <= alerts.len, i++)
var/obj/screen/alert/alert = alerts[alerts[i]]
@@ -609,7 +614,10 @@ so as to remain in compliance with the most up-to-date laws."
else
. = ""
alert.screen_loc = .
- mymob.client.screen |= alert
+ screenmob.client.screen |= alert
+ if(!viewmob)
+ for(var/M in mymob.observers)
+ reorganize_alerts(M)
return 1
/obj/screen/alert/Click(location, control, params)
@@ -619,6 +627,8 @@ so as to remain in compliance with the most up-to-date laws."
if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat
to_chat(usr, "[name] - [desc]")
return
+ if(usr != owner)
+ return
if(master)
return usr.client.Click(master, location, control, params)
@@ -626,5 +636,5 @@ so as to remain in compliance with the most up-to-date laws."
. = ..()
severity = 0
master = null
- mob_viewer = null
+ owner = null
screen_loc = ""
diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm
index 549b6346ce2..b301173d38a 100644
--- a/code/_onclick/hud/ghost.dm
+++ b/code/_onclick/hud/ghost.dm
@@ -93,3 +93,11 @@
screenmob.client.screen -= static_inventory
else
screenmob.client.screen += static_inventory
+
+//We should only see observed mob alerts.
+/datum/hud/ghost/reorganize_alerts(mob/viewmob)
+ var/mob/dead/observer/O = mymob
+ if (istype(O) && O.observetarget)
+ return
+ . = ..()
+
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index cde48e31ca3..abcf107d202 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -189,7 +189,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
hud_version = display_hud_version
persistent_inventory_update(screenmob)
screenmob.update_action_buttons(1)
- reorganize_alerts()
+ reorganize_alerts(screenmob)
screenmob.reload_fullscreen()
update_parallax_pref(screenmob)
diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm
index 49ff1c8d498..0115d5cb975 100644
--- a/code/controllers/configuration/config_entry.dm
+++ b/code/controllers/configuration/config_entry.dm
@@ -163,7 +163,8 @@
if(key_pos || value_mode == VALUE_MODE_FLAG)
key_name = lowertext(copytext(str_val, 1, key_pos))
- key_value = copytext(str_val, key_pos + 1)
+ if(key_pos)
+ key_value = copytext(str_val, key_pos + length(str_val[key_pos]))
var/new_key
var/new_value
var/continue_check_value
diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm
index 5f874a8dd9c..e93c804ac25 100644
--- a/code/controllers/configuration/configuration.dm
+++ b/code/controllers/configuration/configuration.dm
@@ -111,13 +111,13 @@
if(!L)
continue
- var/firstchar = copytext(L, 1, 2)
+ var/firstchar = L[1]
if(firstchar == "#")
continue
var/lockthis = firstchar == "@"
if(lockthis)
- L = copytext(L, 2)
+ L = copytext(L, length(firstchar) + 1)
var/pos = findtext(L, " ")
var/entry = null
@@ -125,7 +125,7 @@
if(pos)
entry = lowertext(copytext(L, 1, pos))
- value = copytext(L, pos + 1)
+ value = copytext(L, pos + length(L[pos]))
else
entry = lowertext(L)
@@ -291,7 +291,7 @@ Example config:
t = trim(t)
if(length(t) == 0)
continue
- else if(copytext(t, 1, 2) == "#")
+ else if(t[1] == "#")
continue
var/pos = findtext(t, " ")
@@ -300,7 +300,7 @@ Example config:
if(pos)
command = lowertext(copytext(t, 1, pos))
- data = copytext(t, pos + 1)
+ data = copytext(t, pos + length(t[pos]))
else
command = lowertext(t)
diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm
index b1f4de116d2..c97ffa7021b 100644
--- a/code/controllers/subsystem/blackbox.dm
+++ b/code/controllers/subsystem/blackbox.dm
@@ -270,6 +270,25 @@ Versioning
key = new_key
key_type = new_key_type
+/datum/controller/subsystem/blackbox/proc/LogAhelp(ticket, action, message, recipient, sender)
+
+ if(!SSdbcore.Connect())
+ return
+
+ ticket = sanitizeSQL(ticket)
+ action = sanitizeSQL(action)
+ message = sanitizeSQL(message)
+ recipient = recipient ? "'[sanitizeSQL(recipient)]'" : "NULL"
+ sender = sender ? "'[sanitizeSQL(sender)]'" : "NULL"
+ var/server_ip = sanitizeSQL(world.internet_address)
+ var/server_port = sanitizeSQL(world.port)
+ var/round_id = sanitizeSQL(GLOB.round_id)
+
+ var/datum/DBQuery/query_log_ahelp = SSdbcore.NewQuery("INSERT INTO [format_table_name("ticket")] (ticket, action, message, recipient, sender, server_ip, server_port, round_id, timestamp) VALUES ('[ticket]', '[action]', '[message]', [recipient], [sender], INET_ATON(IF('[server_ip]' LIKE '', '0', '[server_ip]')), '[server_port]','[round_id]', '[SQLtime()]')")
+ query_log_ahelp.Execute()
+ qdel(query_log_ahelp)
+
+
/datum/controller/subsystem/blackbox/proc/ReportDeath(mob/living/L)
set waitfor = FALSE
if(sealed)
diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm
index 0fdf902c963..078d122aa65 100644
--- a/code/controllers/subsystem/economy.dm
+++ b/code/controllers/subsystem/economy.dm
@@ -113,7 +113,7 @@ SUBSYSTEM_DEF(economy)
D.adjust_money(medical_cash)
if(ishostile(m))
var/mob/living/simple_animal/hostile/H = m
- if(H.stat == DEAD && H.z in SSmapping.levels_by_trait(ZTRAIT_STATION))
+ if(H.stat == DEAD && (H.z in SSmapping.levels_by_trait(ZTRAIT_STATION)))
dead_monsters++
CHECK_TICK
var/living_ratio = alive_crew / crew
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index e0a26570f74..5214c4b162b 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -115,7 +115,7 @@ SUBSYSTEM_DEF(job)
if(flag && (!(flag in player.client.prefs.be_special)))
JobDebug("FOC flag failed, Player: [player], Flag: [flag], ")
continue
- if(player.mind && job.title in player.mind.restricted_roles)
+ if(player.mind && (job.title in player.mind.restricted_roles))
JobDebug("FOC incompatible with antagonist role, Player: [player]")
continue
if(player.client.prefs.job_preferences[job.title] == level)
@@ -151,7 +151,7 @@ SUBSYSTEM_DEF(job)
JobDebug("GRJ player not enough xp, Player: [player]")
continue
- if(player.mind && job.title in player.mind.restricted_roles)
+ if(player.mind && (job.title in player.mind.restricted_roles))
JobDebug("GRJ incompatible with antagonist role, Player: [player], Job: [job.title]")
continue
@@ -331,7 +331,7 @@ SUBSYSTEM_DEF(job)
JobDebug("DO player not enough xp, Player: [player], Job:[job.title]")
continue
- if(player.mind && job.title in player.mind.restricted_roles)
+ if(player.mind && (job.title in player.mind.restricted_roles))
JobDebug("DO incompatible with antagonist role, Player: [player], Job:[job.title]")
continue
diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm
index b802c6868f7..2583ae99c87 100644
--- a/code/controllers/subsystem/pai.dm
+++ b/code/controllers/subsystem/pai.dm
@@ -37,34 +37,34 @@ SUBSYSTEM_DEF(pai)
switch(option)
if("name")
- t = input("Enter a name for your pAI", "pAI Name", candidate.name) as text|null
+ t = sanitize_name(stripped_input(usr, "Enter a name for your pAI", "pAI Name", candidate.name, MAX_NAME_LEN))
if(t)
- candidate.name = copytext(sanitize_name(t),1,MAX_NAME_LEN)
+ candidate.name = t
if("desc")
- t = input("Enter a description for your pAI", "pAI Description", candidate.description) as message|null
+ t = stripped_multiline_input(usr, "Enter a description for your pAI", "pAI Description", candidate.description, MAX_MESSAGE_LEN)
if(t)
- candidate.description = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
+ candidate.description = t
if("role")
- t = input("Enter a role for your pAI", "pAI Role", candidate.role) as text|null
+ t = stripped_input(usr, "Enter a role for your pAI", "pAI Role", candidate.role, MAX_MESSAGE_LEN)
if(t)
- candidate.role = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
+ candidate.role = t
if("ooc")
- t = input("Enter any OOC comments", "pAI OOC Comments", candidate.comments) as message|null
+ t = stripped_multiline_input(usr, "Enter any OOC comments", "pAI OOC Comments", candidate.comments, MAX_MESSAGE_LEN)
if(t)
- candidate.comments = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
+ candidate.comments = t
if("save")
candidate.savefile_save(usr)
if("load")
candidate.savefile_load(usr)
//In case people have saved unsanitized stuff.
if(candidate.name)
- candidate.name = copytext(sanitize(candidate.name),1,MAX_NAME_LEN)
+ candidate.name = copytext_char(sanitize(candidate.name),1,MAX_NAME_LEN)
if(candidate.description)
- candidate.description = copytext(sanitize(candidate.description),1,MAX_MESSAGE_LEN)
+ candidate.description = copytext_char(sanitize(candidate.description),1,MAX_MESSAGE_LEN)
if(candidate.role)
- candidate.role = copytext(sanitize(candidate.role),1,MAX_MESSAGE_LEN)
+ candidate.role = copytext_char(sanitize(candidate.role),1,MAX_MESSAGE_LEN)
if(candidate.comments)
- candidate.comments = copytext(sanitize(candidate.comments),1,MAX_MESSAGE_LEN)
+ candidate.comments = copytext_char(sanitize(candidate.comments),1,MAX_MESSAGE_LEN)
if("submit")
if(candidate)
diff --git a/code/controllers/subsystem/processing/networks.dm b/code/controllers/subsystem/processing/networks.dm
index 0ca5472a6a2..719e97d1eed 100644
--- a/code/controllers/subsystem/processing/networks.dm
+++ b/code/controllers/subsystem/processing/networks.dm
@@ -46,6 +46,6 @@ PROCESSING_SUBSYSTEM_DEF(networks)
var/hex = md5(string)
if(!hex)
return //errored
- . = "[copytext(hex, 1, 9)]" //16 ^ 8 possibilities I think.
+ . = "[copytext_char(hex, 1, 9)]" //16 ^ 8 possibilities I think.
if(interfaces_by_id[.])
return resolve_collisions? make_address("[num2text(rand(HID_RESTRICTED_END, 999999999), 12)]"):null
diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm
index 55715325859..365b2320d7e 100644
--- a/code/controllers/subsystem/processing/quirks.dm
+++ b/code/controllers/subsystem/processing/quirks.dm
@@ -1,3 +1,4 @@
+#define EXP_ASSIGN_WAYFINDER 1200
//Used to process and handle roundstart quirks
// - Quirk strings are used for faster checking in code
// - Quirk datums are stored and hold different effects, as well as being a vector for applying trait string
@@ -43,5 +44,5 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
cli.prefs.save_character()
// Assign wayfinding pinpointer granting quirk if they're new
- if(cli.get_exp_living(TRUE) < 1200 && !user.has_quirk(/datum/quirk/needswayfinder))
+ if(cli.get_exp_living(TRUE) < EXP_ASSIGN_WAYFINDER && !user.has_quirk(/datum/quirk/needswayfinder))
user.add_quirk(/datum/quirk/needswayfinder, TRUE)
diff --git a/code/controllers/subsystem/profiler.dm b/code/controllers/subsystem/profiler.dm
index 2136f3cace0..ec8b243073e 100644
--- a/code/controllers/subsystem/profiler.dm
+++ b/code/controllers/subsystem/profiler.dm
@@ -4,7 +4,15 @@ SUBSYSTEM_DEF(profiler)
name = "Profiler"
init_order = INIT_ORDER_PROFILER
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
- wait = 600
+ wait = 3000
+ flags = SS_NO_TICK_CHECK
+ var/fetch_cost = 0
+ var/write_cost = 0
+
+/datum/controller/subsystem/profiler/stat_entry(msg)
+ msg += "F:[round(fetch_cost,1)]ms"
+ msg += "|W:[round(write_cost,1)]ms"
+ ..(msg)
/datum/controller/subsystem/profiler/Initialize()
if(CONFIG_GET(flag/auto_profile))
@@ -40,11 +48,16 @@ SUBSYSTEM_DEF(profiler)
stack_trace("Auto profiling unsupported on this byond version")
CONFIG_SET(flag/auto_profile, FALSE)
#else
+ var/timer = TICK_USAGE_REAL
var/current_profile_data = world.Profile(PROFILE_REFRESH,format="json")
+ fetch_cost = MC_AVERAGE(fetch_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
+ CHECK_TICK
if(!length(current_profile_data)) //Would be nice to have explicit proc to check this
stack_trace("Warning, profiling stopped manually before dump.")
var/json_file = file("[GLOB.log_directory]/[PROFILER_FILENAME]")
if(fexists(json_file))
fdel(json_file)
+ timer = TICK_USAGE_REAL
WRITE_FILE(json_file, current_profile_data)
+ write_cost = MC_AVERAGE(write_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
#endif
diff --git a/code/datums/achievements/boss_achievements.dm b/code/datums/achievements/boss_achievements.dm
index d50c6a37203..1c0cc0ad9ee 100644
--- a/code/datums/achievements/boss_achievements.dm
+++ b/code/datums/achievements/boss_achievements.dm
@@ -1,75 +1,90 @@
/datum/award/achievement/boss
category = "Bosses"
+ icon = "baseboss"
/datum/award/achievement/boss/tendril_exterminator
name = "Tendril Exterminator"
desc = "Watch your step"
database_id = BOSS_MEDAL_TENDRIL
+ icon = "tendril"
/datum/award/achievement/boss/boss_killer
name = "Boss Killer"
desc = "You've come a long ways from asking how to switch hands."
database_id = "Boss Killer"
+ icon = "firstboss"
/datum/award/achievement/boss/blood_miner_kill
name = "Blood-drunk Miner Killer"
desc = "I guess he couldn't handle his drink that well."
database_id = BOSS_MEDAL_MINER
+ icon = "miner"
/datum/award/achievement/boss/bubblegum_kill
name = "Bubblegum Killer"
desc = "I guess he wasn't made of candy after all"
database_id = BOSS_MEDAL_BUBBLEGUM
+ icon = "bbgum"
-/datum/award/achievement/boss/colussus_kill
- name = "Colussus Killer"
+/datum/award/achievement/boss/colossus_kill
+ name = "Colossus Killer"
desc = "The bigger they are... the better the loot"
database_id = BOSS_MEDAL_COLOSSUS
+ icon = "colossus"
/datum/award/achievement/boss/drake_kill
name = "Drake Killer"
desc = "Now I can wear Rune Platebodies!"
database_id = BOSS_MEDAL_DRAKE
+ icon = "drake"
/datum/award/achievement/boss/hierophant_kill
name = "Hierophant Killer"
desc = "Hierophant, but not triumphant."
database_id = BOSS_MEDAL_HIEROPHANT
+ icon = "hierophant"
/datum/award/achievement/boss/legion_kill
name = "Legion Killer"
desc = "We were many..now we are none."
database_id = BOSS_MEDAL_LEGION
+ icon = "legion"
/datum/award/achievement/boss/swarmer_beacon_kill
name = "Swarm Beacon Killer"
desc = "GET THEM OFF OF ME!"
database_id = BOSS_MEDAL_SWARMERS
+ icon = "swarmer"
/datum/award/achievement/boss/blood_miner_crusher
name = "Blood-drunk Miner Crusher"
desc = "I guess he couldn't handle his drink that well."
database_id = BOSS_MEDAL_MINER_CRUSHER
+ icon = "miner"
/datum/award/achievement/boss/bubblegum_crusher
name = "Bubblegum Crusher"
desc = "I guess he wasn't made of candy after all"
database_id = BOSS_MEDAL_BUBBLEGUM_CRUSHER
+ icon = "bbgum"
-/datum/award/achievement/boss/colussus_crusher
- name = "Colussus Crusher"
+/datum/award/achievement/boss/colossus_crusher
+ name = "Colossus Crusher"
desc = "The bigger they are... the better the loot"
database_id = BOSS_MEDAL_COLOSSUS_CRUSHER
+ icon = "colossus"
/datum/award/achievement/boss/drake_crusher
name = "Drake Crusher"
desc = "Now I can wear Rune Platebodies!"
database_id = BOSS_MEDAL_DRAKE_CRUSHER
+ icon = "drake"
/datum/award/achievement/boss/hierophant_crusher
name = "Hierophant Crusher"
desc = "Hierophant, but not triumphant."
database_id = BOSS_MEDAL_HIEROPHANT_CRUSHER
+ icon = "hierophant"
/datum/award/achievement/boss/legion_crusher
name = "Legion Crusher"
diff --git a/code/datums/achievements/misc_achievements.dm b/code/datums/achievements/misc_achievements.dm
index a4f65925d27..3d3fe61a9f0 100644
--- a/code/datums/achievements/misc_achievements.dm
+++ b/code/datums/achievements/misc_achievements.dm
@@ -1,41 +1,49 @@
/datum/award/achievement/misc
category = "Misc"
+ icon = "basemisc"
/datum/award/achievement/misc/meteor_examine
name = "Your Life Before Your Eyes"
desc = "Take a close look at hurtling space debris"
database_id = MEDAL_METEOR
+ icon = "meteors"
/datum/award/achievement/misc/pulse
name = "Jackpot"
desc = "Win a pulse rifle from an arcade machine"
database_id = MEDAL_PULSE
+ icon = "jackpot"
/datum/award/achievement/misc/time_waste
name = "Time waster"
desc = "Speak no evil, hear no evil, see just errors"
database_id = MEDAL_TIMEWASTE
+ icon = "timewaste"
/datum/award/achievement/misc/feat_of_strength
name = "Feat of Strength"
desc = "If the rod is immovable, is it passing you or are you passing it?"
database_id = MEDAL_RODSUPLEX
+ icon = "featofstrength"
/datum/award/achievement/misc/round_and_full
name = "Round and Full"
desc = "Well at least you aren't down the river, I hear they eat people there."
database_id = MEDAL_CLOWNCARKING
+ icon = "clownking"
/datum/award/achievement/misc/the_best_driver
name = "The Best Driver"
desc = "100 honks later"
database_id = MEDAL_THANKSALOT
+ icon = "clownthanks"
/datum/award/achievement/misc/helbitaljanken
name = "Helbitaljanken"
desc = "You janked hard"
database_id = MEDAL_HELBITALJANKEN
-
+ icon = "helbital"
+
/datum/award/achievement/misc/getting_an_upgrade
name = "Getting an upgrade"
desc = "Make your first unique material item!"
@@ -75,3 +83,15 @@
name = "One Lean, Mean, Cleaning Machine"
desc = "How does it feel to know that your workplace values a mop bucket on wheels more than you?" // i can do better than this give me time
database_id = MEDAL_CLEANBOSS
+
+/datum/award/achievement/misc/rule8
+ name = "Rule 8"
+ desc = "Call an admin this is ILLEGAL!!"
+ database_id = MEDAL_RULE8
+ icon = "rule8"
+
+/datum/award/achievement/misc/speed_round
+ name = "Long shift"
+ desc = "Well, that didn't take long."
+ database_id = MEDAL_LONGSHIFT
+ icon = "longshift"
diff --git a/code/datums/achievements/skill_achievements.dm b/code/datums/achievements/skill_achievements.dm
new file mode 100644
index 00000000000..7da936c61f4
--- /dev/null
+++ b/code/datums/achievements/skill_achievements.dm
@@ -0,0 +1,10 @@
+/datum/award/achievement/skill
+ category = "Skills"
+ icon = "baseskill"
+
+/datum/award/achievement/skill/legendary_miner
+ name = "Legendary miner"
+ desc = "No mere rock can stop me!"
+ database_id = MEDAL_LEGENDARY_MINER
+ icon = "mining"
+
diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm
index 17c26854b76..6b4766aba3a 100644
--- a/code/datums/brain_damage/imaginary_friend.dm
+++ b/code/datums/brain_damage/imaginary_friend.dm
@@ -152,7 +152,7 @@
to_chat(src, compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode))
/mob/camera/imaginary_friend/proc/friend_talk(message)
- message = capitalize(trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)))
+ message = capitalize(trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN)))
if(!message)
return
diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm
index ed1b7d670ff..e26f8fba2cf 100644
--- a/code/datums/cinematic.dm
+++ b/code/datums/cinematic.dm
@@ -203,6 +203,20 @@
special()
screen.icon_state = "summary_cult"
+/datum/cinematic/cult_fail
+ id = CINEMATIC_CULT_FAIL
+
+/datum/cinematic/cult_fail/content()
+ screen.icon_state = "station_intact"
+ sleep(20)
+ cinematic_sound(sound('sound/creatures/narsie_rises.ogg'))
+ sleep(60)
+ cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ sleep(10)
+ cinematic_sound(sound('sound/magic/demon_dies.ogg'))
+ sleep(30)
+ special()
+
/datum/cinematic/nuke_annihilation
id = CINEMATIC_ANNIHILATION
diff --git a/code/datums/components/gps.dm b/code/datums/components/gps.dm
index 3118deb6c2a..890a854694c 100644
--- a/code/datums/components/gps.dm
+++ b/code/datums/components/gps.dm
@@ -133,12 +133,11 @@ GLOBAL_LIST_EMPTY(GPS_list)
switch(action)
if("rename")
var/atom/parentasatom = parent
- var/a = input("Please enter desired tag.", parentasatom.name, gpstag) as text|null
+ var/a = stripped_input(usr, "Please enter desired tag.", parentasatom.name, gpstag, 20)
if (!a)
return
- a = copytext(sanitize(a), 1, 20)
gpstag = a
. = TRUE
parentasatom.name = "global positioning system ([gpstag])"
diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index ca5169aaebe..1e12ff9fd33 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -606,7 +606,7 @@
if(!stop_messages)
to_chat(M, "[host] cannot hold [I]!")
return FALSE
- if(is_type_in_typecache(I, cant_hold)) //Check for specific items which this container can't hold.
+ if(is_type_in_typecache(I, cant_hold) || HAS_TRAIT(I, TRAIT_NO_STORAGE_INSERT)) //Items which this container can't hold.
if(!stop_messages)
to_chat(M, "[host] cannot hold [I]!")
return FALSE
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 6095e70fa14..231fc1ec01f 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -156,8 +156,8 @@
if(active)
return sequence
while(difficulty)
- var/randnum = rand(1, length(sequence))
- sequence = copytext(sequence, 1, randnum) + "X" + copytext(sequence, randnum+1, length(sequence)+1)
+ var/randnum = rand(1, length_char(sequence))
+ sequence = copytext_char(sequence, 1, randnum) + "X" + copytext_char(sequence, randnum + 1)
difficulty--
return sequence
@@ -461,14 +461,14 @@
/proc/getleftblocks(input,blocknumber,blocksize)
if(blocknumber > 1)
- return copytext(input,1,((blocksize*blocknumber)-(blocksize-1)))
+ return copytext_char(input,1,((blocksize*blocknumber)-(blocksize-1)))
/proc/getrightblocks(input,blocknumber,blocksize)
if(blocknumber < (length(input)/blocksize))
- return copytext(input,blocksize*blocknumber+1,length(input)+1)
+ return copytext_char(input,blocksize*blocknumber+1,length(input)+1)
/proc/getblock(input, blocknumber, blocksize=DNA_BLOCK_SIZE)
- return copytext(input, blocksize*(blocknumber-1)+1, (blocksize*blocknumber)+1)
+ return copytext_char(input, blocksize*(blocknumber-1)+1, (blocksize*blocknumber)+1)
/proc/setblock(istring, blocknumber, replacement, blocksize=DNA_BLOCK_SIZE)
if(!istring || !blocknumber || !replacement || !blocksize)
diff --git a/code/datums/ductnet.dm b/code/datums/ductnet.dm
index 744d9a919b0..14a74a67c49 100644
--- a/code/datums/ductnet.dm
+++ b/code/datums/ductnet.dm
@@ -7,7 +7,7 @@
var/capacity
///Add a duct to our network
/datum/ductnet/proc/add_duct(obj/machinery/duct/D)
- if(!D || D in ducts)
+ if(!D || (D in ducts))
return
ducts += D
D.duct = src
@@ -52,7 +52,7 @@
for(var/A in D.ducts)
var/obj/machinery/duct/M = A
M.duct = src //forget your old master
-
+
destroy_network()
///destroy the network and tell all our ducts and plumbers we are gone
/datum/ductnet/proc/destroy_network(delete=TRUE)
diff --git a/code/datums/elements/digitalcamo.dm b/code/datums/elements/digitalcamo.dm
index e3a97002cc6..5451fbfe53b 100644
--- a/code/datums/elements/digitalcamo.dm
+++ b/code/datums/elements/digitalcamo.dm
@@ -8,7 +8,7 @@
/datum/element/digitalcamo/Attach(datum/target)
. = ..()
- if(!isliving(target) || target in attached_mobs)
+ if(!isliving(target) || (target in attached_mobs))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine)
RegisterSignal(target, COMSIG_LIVING_CAN_TRACK, .proc/can_track)
diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm
index c9e96d6bc1f..fa2496ee3b1 100644
--- a/code/datums/helper_datums/getrev.dm
+++ b/code/datums/helper_datums/getrev.dm
@@ -44,7 +44,7 @@
for(var/line in testmerge)
var/datum/tgs_revision_information/test_merge/tm = line
var/cm = tm.pull_request_commit
- var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 11)))
+ var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext_char(cm, 1, 11))
if(details && findtext(details, "\[s\]") && (!usr || !usr.client.holder))
continue
. += "#[tm.number][details]
"
diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm
index 21bf6a293ad..a2bdec433b7 100644
--- a/code/datums/holocall.dm
+++ b/code/datums/holocall.dm
@@ -268,8 +268,8 @@
var/splitpoint = findtext(prepared_line," ")
if(!splitpoint)
continue
- var/command = copytext(prepared_line,1,splitpoint)
- var/value = copytext(prepared_line,splitpoint+1)
+ var/command = copytext(prepared_line, 1, splitpoint)
+ var/value = copytext(prepared_line, splitpoint + length(prepared_line[splitpoint]))
switch(command)
if("DELAY")
var/delay_value = text2num(value)
diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm
index c18f2c8de24..2396a2f8a67 100644
--- a/code/datums/martial/_martial.dm
+++ b/code/datums/martial/_martial.dm
@@ -27,7 +27,7 @@
reset_streak(D)
streak = streak+element
if(length(streak) > max_streak_length)
- streak = copytext(streak,2)
+ streak = copytext(streak, 1 + length(streak[1]))
/datum/martial_art/proc/reset_streak(mob/living/carbon/human/new_target)
current_target = new_target
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 54b064f4099..558b23111d5 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -183,9 +183,9 @@
last_death = world.time
/datum/mind/proc/store_memory(new_text)
- var/newlength = length(memory) + length(new_text)
+ var/newlength = length_char(memory) + length_char(new_text)
if (newlength > MAX_MESSAGE_LEN * 100)
- memory = copytext(memory, -newlength-MAX_MESSAGE_LEN * 100)
+ memory = copytext_char(memory, -newlength-MAX_MESSAGE_LEN * 100)
memory += "[new_text]
"
/datum/mind/proc/wipe_memory()
@@ -447,7 +447,7 @@
assigned_role = new_role
else if (href_list["memory_edit"])
- var/new_memo = copytext(sanitize(input("Write new memory", "Memory", memory) as null|message),1,MAX_MESSAGE_LEN)
+ var/new_memo = stripped_multiline_input(usr, "Write new memory", "Memory", memory, MAX_MESSAGE_LEN)
if (isnull(new_memo))
return
memory = new_memo
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index 52de07472a9..b2aa5b95cbd 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -176,7 +176,7 @@
/datum/mood_event/notcreepingsevere/add_effects(name)
var/list/unstable = list(name)
for(var/i in 1 to rand(3,5))
- unstable += copytext(name, -1)
+ unstable += copytext_char(name, -1)
var/unhinged = uppertext(unstable.Join(""))//example Tinea Luxor > TINEA LUXORRRR (with randomness in how long that slur is)
description = "THEY NEEEEEEED [unhinged]!!\n"
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 75bcd5569c0..51794087288 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -160,11 +160,13 @@
/obj/screen/alert/status_effect/strandling/Click(location, control, params)
. = ..()
- to_chat(mob_viewer, "You attempt to remove the durathread strand from around your neck.")
- if(do_after(mob_viewer, 35, null, mob_viewer))
- if(isliving(mob_viewer))
- var/mob/living/L = mob_viewer
- to_chat(mob_viewer, "You succesfuly remove the durathread strand.")
+ if(usr != owner)
+ return
+ to_chat(owner, "You attempt to remove the durathread strand from around your neck.")
+ if(do_after(owner, 35, null, owner))
+ if(isliving(owner))
+ var/mob/living/L = owner
+ to_chat(owner, "You succesfuly remove the durathread strand.")
L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm
index 7337cdea20b..9187d57d856 100644
--- a/code/datums/traits/_quirk.dm
+++ b/code/datums/traits/_quirk.dm
@@ -16,6 +16,7 @@
..()
if(!quirk_mob || (human_only && !ishuman(quirk_mob)) || quirk_mob.has_quirk(type))
qdel(src)
+ return
quirk_holder = quirk_mob
SSquirks.quirk_objects += src
to_chat(quirk_holder, gain_text)
diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm
index 0f86aa5b9c1..853587888ff 100644
--- a/code/datums/traits/neutral.dm
+++ b/code/datums/traits/neutral.dm
@@ -150,6 +150,9 @@
var/mob/living/carbon/human/H = quirk_holder
wayfinder = new /obj/item/pinpointer/wayfinding
+ wayfinder.owner = H.real_name
+ wayfinder.roundstart = TRUE
+
var/list/slots = list(
"in your left pocket" = ITEM_SLOT_LPOCKET,
"in your right pocket" = ITEM_SLOT_RPOCKET,
diff --git a/code/datums/verbs.dm b/code/datums/verbs.dm
index d8d7ee74334..8301c5fe384 100644
--- a/code/datums/verbs.dm
+++ b/code/datums/verbs.dm
@@ -88,8 +88,8 @@
var/list/entry = list()
entry["parent"] = "[type]"
entry["name"] = verbpath.desc
- if (copytext(verbpath.name,1,2) == "@")
- entry["command"] = copytext(verbpath.name,2)
+ if (verbpath.name[1] == "@")
+ entry["command"] = copytext(verbpath.name, length(verbpath.name[1]) + 1)
else
entry["command"] = replacetext(verbpath.name, " ", "-")
diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm
index 3531b199da0..cabebc3ac90 100644
--- a/code/game/area/Space_Station_13_areas.dm
+++ b/code/game/area/Space_Station_13_areas.dm
@@ -479,7 +479,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/engine/atmos
name = "Atmospherics"
icon_state = "atmos"
- flags_1 = NONE
+ flags_1 = CULT_PERMITTED_1
/area/engine/atmospherics_engine
name = "Atmospherics Engine"
@@ -666,7 +666,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/medical/virology
name = "Virology"
icon_state = "virology"
- flags_1 = NONE
+ flags_1 = CULT_PERMITTED_1
/area/medical/morgue
name = "Morgue"
@@ -850,7 +850,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/janitor
name = "Custodial Closet"
icon_state = "janitor"
- flags_1 = NONE
+ flags_1 = CULT_PERMITTED_1
/area/hydroponics
name = "Hydroponics"
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index c209c10a0ac..e2caa140996 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -186,11 +186,6 @@
if(HAS_TRAIT(src, TRAIT_XENO_HOST))
holder.icon_state = "hudxeno"
else if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH)))
- if(tod)
- var/tdelta = round(world.time - timeofdeath)
- if(tdelta < (DEFIB_TIME_LIMIT * 10))
- holder.icon_state = "huddefib"
- return
holder.icon_state = "huddead"
else
switch(virus_threat)
diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
index 2839d2324e6..b2b18c919e6 100644
--- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
+++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
@@ -48,7 +48,7 @@
trimmed_list.Remove(M)
continue
if (M.mind)
- if (restrict_ghost_roles && M.mind.assigned_role in GLOB.exp_specialmap[EXP_TYPE_SPECIAL]) // Are they playing a ghost role?
+ if (restrict_ghost_roles && (M.mind.assigned_role in GLOB.exp_specialmap[EXP_TYPE_SPECIAL])) // Are they playing a ghost role?
trimmed_list.Remove(M)
continue
if (M.mind.assigned_role in restricted_roles) // Does their job allow it?
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index a6fe43171c3..1b07c5d4418 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -162,6 +162,11 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
name_part1 = pick_list(ARCADE_FILE, "rpg_adjective_xmas")
name_part2 = pick_list(ARCADE_FILE, "rpg_enemy_xmas")
weapons = strings(ARCADE_FILE, "rpg_weapon_xmas")
+ else if(SSevents.holidays && SSevents.holidays[VALENTINES])
+ name_action = pick_list(ARCADE_FILE, "rpg_action_valentines")
+ name_part1 = pick_list(ARCADE_FILE, "rpg_adjective_valentines")
+ name_part2 = pick_list(ARCADE_FILE, "rpg_enemy_valentines")
+ weapons = strings(ARCADE_FILE, "rpg_weapon_valentines")
else
name_action = pick_list(ARCADE_FILE, "rpg_action")
name_part1 = pick_list(ARCADE_FILE, "rpg_adjective")
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 835490daab2..a19bc6d3d23 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -578,7 +578,7 @@
R.fields["mrace"] = rando_race.type
R.fields["name"] = mob_occupant.real_name
- R.fields["id"] = copytext(md5(mob_occupant.real_name), 2, 6)
+ R.fields["id"] = copytext_char(md5(mob_occupant.real_name), 2, 6)
R.fields["UE"] = dna.unique_enzymes
R.fields["UI"] = dna.uni_identity
R.fields["SE"] = dna.mutation_index
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 32423e67ee4..5912e8e7e74 100755
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -127,15 +127,20 @@
if("crossserver")
if(authenticated==2)
+ var/dest = href_list["cross_dest"]
if(!checkCCcooldown())
to_chat(usr, "Arrays recycling. Please stand by.")
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE)
return
- var/input = stripped_multiline_input(usr, "Please choose a message to transmit to allied stations. Please be aware that this process is very expensive, and abuse will lead to... termination.", "Send a message to an allied station.", "")
+ var/warning = dest == "all" ? "Please choose a message to transmit to allied stations." : "Please choose a message to transmit to [dest] sector station."
+ var/input = stripped_multiline_input(usr, "[warning] Please be aware that this process is very expensive, and abuse will lead to... termination.", "Send a message to an allied station.", "")
if(!input || !(usr in view(1,src)) || !checkCCcooldown())
return
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
- send2otherserver("[station_name()]", input,"Comms_Console")
+ if(dest == "all")
+ send2otherserver("[station_name()]", input,"Comms_Console")
+ else
+ send2otherserver("[station_name()]", input,"Comms_Console", list(dest))
minor_announce(input, title = "Outgoing message to allied station")
usr.log_talk(input, LOG_SAY, tag="message to the other server")
message_admins("[ADMIN_LOOKUPFLW(usr)] has sent a message to the other server.")
@@ -470,9 +475,15 @@
if (authenticated==2)
dat += "
Captain Functions"
dat += "
\[ Make a Captain's Announcement \]"
- var/cross_servers_count = length(CONFIG_GET(keyed_list/cross_server))
- if(cross_servers_count)
- dat += "
\[ Send a message to [cross_servers_count == 1 ? "an " : ""]allied station[cross_servers_count > 1 ? "s" : ""] \]"
+ var/list/cross_servers = CONFIG_GET(keyed_list/cross_server)
+ var/our_id = CONFIG_GET(string/cross_comms_name)
+ if(cross_servers.len)
+ for(var/server in cross_servers)
+ if(server == our_id)
+ continue
+ dat += "
\[ Send a message to station in [server] sector. \]"
+ if(cross_servers.len > 2)
+ dat += "
\[ Send a message to all allied stations \]"
if(SSmapping.config.allow_custom_shuttles)
dat += "
\[ Purchase Shuttle \]"
dat += "
\[ Change Alert Level \]"
diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm
index bdf46bcdbd0..771060f0306 100644
--- a/code/game/machinery/computer/dna_console.dm
+++ b/code/game/machinery/computer/dna_console.dm
@@ -248,13 +248,18 @@
var/max_line_len = 7*DNA_BLOCK_SIZE
if(viable_occupant)
temp_html += "