diff --git a/.github/workflows/autobuild_tgui.yml b/.github/workflows/autobuild_tgui.yml
deleted file mode 100644
index 7be294b00ed..00000000000
--- a/.github/workflows/autobuild_tgui.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: Autobuild TGUI
-
-on:
- push:
- branches:
- - 'master'
- paths:
- - 'tgui/**.js'
- - 'tgui/**.scss'
-
-jobs:
- build:
- name: Rebuild TGUI
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v1
- with:
- fetch-depth: 25
- - name: Setup Node
- uses: actions/setup-node@v1
- with:
- node-version: '>=12.13'
- - name: Build TGUI
- run: bin/tgui --ci
- working-directory: ./tgui
- - name: Commit Artifacts
- run: |
- git config --local user.email "action@github.com"
- git config --local user.name "TGUI"
- git pull origin master
- git commit -m "Automatic TGUI Rebuild [ci skip]" -a || true
- - name: Push Artifacts
- uses: ad-m/github-push-action@master
- env:
- GITHUB_ACTOR: comfyorange
- with:
- github_token: ${{ secrets.GITHUB_MASTER_KEY }}
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index d1aa9b4b670..0778251cdf2 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -13,7 +13,8 @@ jobs:
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- stale-pr-message: "This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being closed by a maintainer if it is not updated or reviews are not addressed. If your PR is closed as stale, feel free to open a new one after dealing with the issues. This may also be an indication that the maintainers do not have interest in this change, you can try to convince them otherwise, or persist in the doomed world you have created."
+ stale-pr-message: "This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself"
days-before-stale: 7
+ days-before-close: 7
stale-pr-label: 'Stale'
exempt-pr-label: 'RED LABEL'
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000000..11d27b55d34
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,11 @@
+build:
+ stage: build
+ rules:
+ - if: $CI_MERGE_REQUEST_IID || $CI_COMMIT_REF_NAME == "master"
+ changes:
+ - tgui/**/*.js
+ - tgui/**/*.scss
+ when: always
+ image: node:lts
+ script:
+ - tgui/bin/tgui --ci
diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt
index f84268b8a34..2684cf032a8 100644
--- a/SQL/database_changelog.txt
+++ b/SQL/database_changelog.txt
@@ -1,15 +1,22 @@
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.7; The query to update the schema revision table is:
+The latest database version is 5.8; The query to update the schema revision table is:
-INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 7);
+INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 8);
or
-INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 7);
+INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 8);
In any query remember to add a prefix to the table names if you use one.
-----------------------------------------------------
+Version 5.8, 7 April 2020, by Jordie0608
+Modified table `messages`, adding column `deleted_ckey` to record who deleted a message.
+
+ALTER TABLE `messages` ADD COLUMN `deleted_ckey` VARCHAR(32) NULL DEFAULT NULL AFTER `deleted`;
+
+-----------------------------------------------------
+
Version 5.7, 10 January 2020 by Atlanta-Ned
Added ticket table for tracking ahelp tickets in the database.
diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql
index a9b2c65fef1..f03788e14c4 100644
--- a/SQL/tgstation_schema.sql
+++ b/SQL/tgstation_schema.sql
@@ -258,6 +258,7 @@ CREATE TABLE `messages` (
`lasteditor` varchar(32) DEFAULT NULL,
`edits` text,
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
+ `deleted_ckey` VARCHAR(32) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`, `deleted`),
KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`, `deleted`),
diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql
index 845a23ea7d1..8a4de26c263 100644
--- a/SQL/tgstation_schema_prefixed.sql
+++ b/SQL/tgstation_schema_prefixed.sql
@@ -258,6 +258,7 @@ CREATE TABLE `SS13_messages` (
`lasteditor` varchar(32) DEFAULT NULL,
`edits` text,
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
+ `deleted_ckey` VARCHAR(32) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`, `deleted`),
KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`, `deleted`),
diff --git a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm
index 3fb2848af76..f5dd927eabb 100644
--- a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm
+++ b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm
@@ -9,12 +9,11 @@
/area/ruin/unpowered/no_grav)
"ac" = (
/obj/machinery/porta_turret/syndicate/energy{
- armor = list("melee" = 80, "bullet" = 30, "laser" = 50, "energy" = 50, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100);
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 60, "energy" = 60, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100);
dir = 4;
name = "Syndicate Ship Turret";
on = 0;
- throw_speed = 4;
- use_power = 1
+ shot_delay = 10
},
/turf/closed/wall/r_wall/syndicate/nodiagonal,
/area/ruin/space/has_grav/syndicate_forgotten_ship)
@@ -133,10 +132,12 @@
secure = 1
},
/obj/item/coin/antagtoken,
-/obj/item/coin/gold,
+/obj/item/encryptionkey/syndicate,
+/obj/item/encryptionkey/syndicate,
+/obj/item/encryptionkey/syndicate,
/obj/item/dnainjector/thermal,
-/obj/item/storage/box/firingpins,
-/obj/item/storage/box/firingpins,
+/obj/item/storage/box/firingpins/syndicate,
+/obj/item/storage/box/firingpins/syndicate,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/has_grav/syndicate_forgotten_ship)
"az" = (
@@ -150,7 +151,6 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/aiModule/reset/purge,
/obj/structure/table/reinforced,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/has_grav/syndicate_forgotten_ship)
@@ -244,7 +244,7 @@
/area/ruin/space/has_grav/syndicate_forgotten_ship)
"aN" = (
/obj/item/stack/sheet/mineral/uranium{
- amount = 50
+ amount = 15
},
/obj/structure/cable,
/obj/machinery/light{
@@ -764,12 +764,11 @@
/area/ruin/space/has_grav/syndicate_forgotten_ship)
"ci" = (
/obj/machinery/porta_turret/syndicate/energy{
- armor = list("melee" = 80, "bullet" = 30, "laser" = 50, "energy" = 50, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100);
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 60, "energy" = 60, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100);
dir = 4;
name = "Syndicate Ship Turret";
on = 0;
- throw_speed = 4;
- use_power = 1
+ shot_delay = 10
},
/turf/closed/wall/r_wall/syndicate,
/area/ruin/space/has_grav/syndicate_forgotten_ship)
@@ -785,7 +784,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/aiModule/core/freeformcore,
+/obj/item/aiModule/core/full/cybersun,
/obj/structure/table/reinforced,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/has_grav/syndicate_forgotten_ship)
@@ -840,9 +839,7 @@
/turf/open/floor/mineral/plastitanium,
/area/ruin/space/has_grav/syndicate_forgotten_cargopod)
"ct" = (
-/obj/machinery/vending/medical/syndicate_access{
- premium = list(/obj/item/reagent_containers/medigel/instabitaluri = 2, /obj/item/storage/pill_bottle/psicodine = 2, /obj/item/reagent_containers/hypospray/medipen = 3, /obj/item/storage/belt/medical = 3, /obj/item/sensor_device = 2, /obj/item/pinpointer/crew = 2, /obj/item/storage/firstaid = 5, /obj/item/storage/firstaid/advanced = 2, /obj/item/storage/firstaid/tactical = 1, /obj/item/shears = 1, /obj/item/plunger/reinforced = 2)
- },
+/obj/machinery/vending/medical/syndicate_access/cybersun,
/turf/open/floor/plastic,
/area/ruin/space/has_grav/syndicate_forgotten_ship)
"cu" = (
@@ -889,10 +886,10 @@
req_one_access_txt = "150"
},
/obj/item/stack/sheet/mineral/titanium{
- amount = 50
+ amount = 40
},
/obj/item/stack/sheet/mineral/uranium{
- amount = 20
+ amount = 15
},
/turf/open/floor/pod/dark,
/area/ruin/space/has_grav/powered/syndicate_forgotten_vault)
@@ -1241,10 +1238,10 @@
req_one_access_txt = "150"
},
/obj/item/stack/sheet/mineral/gold{
- amount = 50
+ amount = 30
},
/obj/item/stack/sheet/mineral/silver{
- amount = 50
+ amount = 30
},
/obj/machinery/light,
/turf/open/floor/pod/dark,
diff --git a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm
index b1d621dc52c..ea18a6dd41f 100644
--- a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm
+++ b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm
@@ -969,11 +969,6 @@
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plastic,
/area/ruin/space/has_grav/hellfactory)
-"lv" = (
-/obj/structure/cable,
-/obj/structure/cable,
-/turf/closed/wall/r_wall,
-/area/ruin/space/has_grav/hellfactory)
"lR" = (
/obj/machinery/light/floor,
/obj/effect/turf_decal/bot_white/right,
@@ -1036,10 +1031,6 @@
/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/open/floor/holofloor/wood,
/area/ruin/space/has_grav/hellfactory)
-"zI" = (
-/obj/structure/cable,
-/turf/closed/wall/r_wall/rust,
-/area/ruin/space/has_grav/hellfactory)
"BC" = (
/obj/machinery/light/floor,
/obj/effect/turf_decal/bot_white/left,
@@ -1057,7 +1048,6 @@
/area/ruin/space/has_grav/hellfactory)
"Gs" = (
/obj/structure/cable,
-/obj/structure/cable,
/turf/closed/wall/r_wall/rust,
/area/ruin/space/has_grav/hellfactory)
"GE" = (
@@ -1476,8 +1466,8 @@ aJ
aX
fj
EP
-zI
-lv
+Gs
+EP
by
by
bK
@@ -1504,7 +1494,7 @@ Yd
ah
aA
bn
-zI
+Gs
by
Wh
Fs
@@ -1561,12 +1551,12 @@ aB
Gs
EP
EP
-zI
+Gs
EP
-zI
+Gs
+EP
+Gs
EP
-zI
-lv
Zh
cA
by
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 2e6305b1421..86245809e37 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -4996,18 +4996,6 @@
/obj/machinery/vending/boozeomat/all_access,
/turf/closed/wall,
/area/maintenance/port/aft)
-"alL" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/power/apc{
- areastring = "/area/security/courtroom";
- dir = 8;
- name = "Courtroom APC";
- pixel_x = -25
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/fore/secondary)
"alM" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment{
@@ -5550,6 +5538,7 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"anc" = (
@@ -5866,10 +5855,12 @@
/area/hallway/primary/fore)
"anS" = (
/obj/machinery/holopad,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"anT" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"anU" = (
@@ -5884,6 +5875,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"anW" = (
@@ -5908,6 +5900,7 @@
c_tag = "Courtroom South";
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"anY" = (
@@ -5915,6 +5908,7 @@
dir = 1;
pixel_y = -22
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"anZ" = (
@@ -6065,6 +6059,13 @@
dir = 8
},
/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/security/processing";
+ dir = 2;
+ name = "Labor Shuttle Dock APC";
+ pixel_x = 0;
+ pixel_y = -23
+ },
/turf/open/floor/plasteel,
/area/security/processing)
"aov" = (
@@ -6095,6 +6096,7 @@
codes_txt = "patrol;next_patrol=EVA";
location = "Security"
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aoz" = (
@@ -6154,11 +6156,6 @@
/obj/machinery/light/small{
dir = 4
},
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/fitness";
- name = "Fitness Room APC";
- pixel_y = -23
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
/turf/open/floor/plating,
@@ -6292,6 +6289,7 @@
/area/lawoffice)
"apj" = (
/obj/machinery/door/firedoor,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"apk" = (
@@ -6529,6 +6527,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
/turf/open/floor/wood,
/area/maintenance/fore)
"apV" = (
@@ -6637,18 +6636,6 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
-"aqk" = (
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/dorms";
- name = "Dormitory APC";
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/fore/secondary)
"aql" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -6854,16 +6841,6 @@
},
/turf/open/floor/plating,
/area/security/processing)
-"aqT" = (
-/obj/machinery/power/apc{
- areastring = "/area/security/processing";
- dir = 8;
- name = "Labor Shuttle Dock APC";
- pixel_x = -25
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/fore)
"aqW" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -7149,6 +7126,7 @@
"arU" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
/turf/open/floor/wood,
/area/lawoffice)
"arV" = (
@@ -7281,6 +7259,7 @@
/obj/structure/chair/office,
/obj/effect/landmark/start/lawyer,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/wood,
/area/lawoffice)
"asp" = (
@@ -7868,6 +7847,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/construction/mining/aux_base)
"auc" = (
@@ -7893,6 +7873,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/fore)
"aug" = (
@@ -8292,7 +8273,6 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"avk" = (
@@ -9219,6 +9199,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white/corner{
dir = 1
},
@@ -9231,6 +9212,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"axI" = (
@@ -9731,6 +9713,12 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/dorms";
+ name = "Dormitory APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"azf" = (
@@ -9782,6 +9770,7 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"azl" = (
@@ -10096,17 +10085,6 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
-"aAj" = (
-/obj/machinery/power/apc{
- areastring = "/area/security/checkpoint/auxiliary";
- name = "Security Checkpoint APC";
- pixel_x = 1;
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
"aAk" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -10133,7 +10111,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"aAm" = (
@@ -10181,6 +10158,12 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/fitness";
+ name = "Fitness Room APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"aAp" = (
@@ -10234,17 +10217,6 @@
/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
-"aAw" = (
-/obj/machinery/power/apc{
- areastring = "/area/hydroponics/garden";
- dir = 4;
- name = "Garden APC";
- pixel_x = 24;
- pixel_y = 2
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
"aAx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
@@ -10331,19 +10303,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden)
-"aAL" = (
-/obj/machinery/power/apc{
- areastring = "/area/storage/primary";
- name = "Primary Tool Storage APC";
- pixel_x = 1;
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
"aAO" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -10448,21 +10407,12 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/fore)
"aBi" = (
-/obj/machinery/power/apc{
- areastring = "/area/gateway";
- dir = 8;
- name = "Gateway APC";
- pixel_x = -25;
- pixel_y = -1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/fore)
"aBj" = (
@@ -10490,6 +10440,7 @@
name = "Security Maintenance";
req_access_txt = "1"
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"aBm" = (
@@ -10820,6 +10771,14 @@
/obj/machinery/camera{
c_tag = "Theatre Storage"
},
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/theatre";
+ dir = 1;
+ name = "Theatre APC";
+ pixel_x = 0;
+ pixel_y = 23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel/white/side{
dir = 4
},
@@ -11144,6 +11103,7 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/security/checkpoint/auxiliary)
"aDa" = (
@@ -11541,6 +11501,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white/side{
dir = 4
},
@@ -11576,6 +11537,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aEc" = (
@@ -11585,6 +11547,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white/side{
dir = 4
},
@@ -11601,18 +11564,6 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
-"aEg" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/machinery/power/apc{
- areastring = "/area/chapel/main";
- name = "Chapel APC";
- pixel_y = -23
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
"aEh" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -11737,6 +11688,14 @@
/obj/effect/turf_decal/tile/green{
dir = 4
},
+/obj/machinery/power/apc{
+ areastring = "/area/hydroponics/garden";
+ dir = 2;
+ name = "Garden APC";
+ pixel_x = -23;
+ pixel_y = 0
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hydroponics/garden)
"aEG" = (
@@ -11767,6 +11726,7 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/security/checkpoint/auxiliary)
"aEK" = (
@@ -12079,15 +12039,6 @@
"aFx" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
-"aFy" = (
-/obj/machinery/power/apc{
- areastring = "/area/chapel/office";
- name = "Chapel Office APC";
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
@@ -12197,6 +12148,13 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/machinery/power/apc{
+ areastring = "/area/security/checkpoint/auxiliary";
+ name = "Security Checkpoint APC";
+ pixel_x = 1;
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/security/checkpoint/auxiliary)
"aFM" = (
@@ -12623,6 +12581,7 @@
req_access_txt = "12"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aGH" = (
@@ -12652,6 +12611,7 @@
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aGO" = (
@@ -12938,6 +12898,7 @@
pixel_y = 8
},
/obj/effect/landmark/start/assistant,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/storage/primary)
"aHE" = (
@@ -13171,28 +13132,9 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aIb" = (
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/theatre";
- dir = 8;
- name = "Theatre APC";
- pixel_x = -25
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
-"aIc" = (
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/bar";
- name = "Bar APC";
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aId" = (
@@ -13214,6 +13156,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aIg" = (
@@ -13229,18 +13172,6 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
-"aIh" = (
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/kitchen";
- name = "Kitchen APC";
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
"aIj" = (
/obj/structure/disposalpipe/sorting/mail{
dir = 4;
@@ -13271,11 +13202,6 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aIn" = (
-/obj/machinery/power/apc{
- areastring = "/area/hydroponics";
- name = "Hydroponics APC";
- pixel_y = -23
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
@@ -13302,6 +13228,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/library)
"aIt" = (
@@ -13311,6 +13238,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/library)
"aIv" = (
@@ -13320,6 +13248,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/library)
"aIw" = (
@@ -13331,6 +13260,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/library)
"aIx" = (
@@ -13340,11 +13270,13 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/library)
"aIy" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"aIz" = (
@@ -13389,6 +13321,16 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/security/warden)
+"aIG" = (
+/obj/machinery/power/apc{
+ areastring = "/area/vacant_room/office";
+ dir = 8;
+ name = "Vacant Office APC";
+ pixel_x = -25
+ },
+/obj/structure/cable,
+/turf/open/floor/wood,
+/area/vacant_room/office)
"aIH" = (
/obj/structure/table,
/obj/item/storage/box/lights/mixed,
@@ -13406,6 +13348,14 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/machinery/power/apc{
+ areastring = "/area/construction/mining/aux_base";
+ dir = 2;
+ name = "Auxillary Base Construction APC";
+ pixel_x = 0;
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/construction/mining/aux_base)
"aII" = (
@@ -13544,11 +13494,25 @@
/obj/structure/table,
/obj/item/storage/belt/utility,
/obj/item/storage/firstaid/regular,
+/obj/machinery/power/apc{
+ areastring = "/area/storage/primary";
+ name = "Primary Tool Storage APC";
+ pixel_x = 1;
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/storage/primary)
"aJa" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/gateway";
+ dir = 8;
+ name = "Gateway APC";
+ pixel_x = -25;
+ pixel_y = -1
+ },
/turf/open/floor/plasteel,
/area/gateway)
"aJb" = (
@@ -13780,6 +13744,7 @@
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aJB" = (
@@ -13789,6 +13754,7 @@
req_access_txt = "35"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aJC" = (
@@ -13818,6 +13784,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/library)
"aJG" = (
@@ -13833,6 +13800,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"aJH" = (
@@ -14008,19 +13976,6 @@
dir = 4
},
/area/chapel/main)
-"aKf" = (
-/obj/machinery/power/apc{
- areastring = "/area/construction/mining/aux_base";
- dir = 8;
- name = "Auxillary Base Construction APC";
- pixel_x = -25
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
"aKj" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/tile/neutral,
@@ -14044,6 +13999,7 @@
/obj/machinery/door/airlock/public/glass{
name = "Garden"
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hydroponics/garden)
"aKn" = (
@@ -14127,6 +14083,7 @@
"aKC" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
"aKD" = (
@@ -14134,6 +14091,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hydroponics)
"aKE" = (
@@ -14361,6 +14319,7 @@
/obj/machinery/light{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/library)
"aLi" = (
@@ -14444,6 +14403,7 @@
req_one_access_txt = "32;47;48"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/construction/mining/aux_base)
"aLv" = (
@@ -14782,6 +14742,7 @@
dir = 5
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hydroponics)
"aMt" = (
@@ -14840,6 +14801,12 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
+/obj/machinery/power/apc{
+ areastring = "/area/hydroponics";
+ name = "Hydroponics APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hydroponics)
"aMz" = (
@@ -14886,6 +14853,12 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"aMF" = (
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/kitchen";
+ name = "Kitchen APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
"aMG" = (
@@ -14918,6 +14891,12 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
+/obj/machinery/power/apc{
+ areastring = "/area/chapel/office";
+ name = "Chapel Office APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"aML" = (
@@ -14967,6 +14946,7 @@
/area/hallway/primary/port)
"aMT" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aMU" = (
@@ -14995,6 +14975,7 @@
/area/chapel/office)
"aMY" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aMZ" = (
@@ -15047,6 +15028,7 @@
codes_txt = "patrol;next_patrol=CHW";
location = "Lockers"
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aNl" = (
@@ -15397,7 +15379,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aOj" = (
@@ -15482,14 +15463,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"aOv" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aOw" = (
@@ -15497,19 +15470,16 @@
dir = 9
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aOx" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aOy" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aOz" = (
@@ -15606,6 +15576,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
"aON" = (
@@ -15613,6 +15584,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
"aOO" = (
@@ -15889,6 +15861,7 @@
/obj/machinery/door/airlock/public/glass{
name = "Art Storage"
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/storage/art)
"aPI" = (
@@ -16325,6 +16298,7 @@
/turf/open/floor/plasteel,
/area/storage/art)
"aRa" = (
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/storage/art)
"aRb" = (
@@ -16336,6 +16310,7 @@
/obj/machinery/door/airlock{
name = "Port Emergency Storage"
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/storage/emergency/port)
"aRd" = (
@@ -16632,18 +16607,6 @@
"aRJ" = (
/turf/open/floor/plasteel,
/area/hydroponics)
-"aRK" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/power/apc{
- areastring = "/area/library";
- dir = 4;
- name = "Library APC";
- pixel_x = 24
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/starboard/fore)
"aRL" = (
/obj/machinery/door/airlock/security/glass{
name = "Holding Area";
@@ -17615,6 +17578,7 @@
c_tag = "Vacant Office";
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/vacant_room/office)
"aUz" = (
@@ -17761,6 +17725,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aUY" = (
@@ -17768,6 +17733,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aUZ" = (
@@ -18203,6 +18169,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aWd" = (
@@ -18222,6 +18189,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/vacant_room/office)
"aWg" = (
@@ -18262,6 +18230,7 @@
/obj/machinery/light_switch{
pixel_x = -28
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/vacant_room/office)
"aWn" = (
@@ -18277,6 +18246,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aWp" = (
@@ -18284,12 +18254,14 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aWq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aWr" = (
@@ -18326,22 +18298,6 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
-"aWw" = (
-/obj/machinery/power/apc{
- areastring = "/area/storage/art";
- dir = 1;
- name = "Art Storage";
- pixel_y = 23
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
"aWx" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment{
@@ -18357,22 +18313,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/crew_quarters/toilet/locker)
-"aWz" = (
-/obj/machinery/power/apc{
- areastring = "/area/storage/emergency/port";
- dir = 1;
- name = "Port Emergency Storage APC";
- pixel_y = 23
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
"aWB" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -18753,6 +18693,7 @@
name = "Unisex Restrooms"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/toilet/locker)
"aXq" = (
@@ -18808,6 +18749,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/carpet,
/area/chapel/main)
"aXz" = (
@@ -18822,12 +18764,14 @@
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aXB" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/carpet,
/area/chapel/main)
"aXD" = (
@@ -18837,6 +18781,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white/corner{
dir = 1
},
@@ -18895,6 +18840,7 @@
name = "Cargo Bay Warehouse Maintenance";
req_access_txt = "31"
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"aXN" = (
@@ -18974,6 +18920,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/wood,
/area/vacant_room/office)
"aXY" = (
@@ -19359,6 +19306,7 @@
/area/hydroponics)
"aYU" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aYV" = (
@@ -19399,6 +19347,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"aZc" = (
@@ -19439,6 +19388,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/carpet,
/area/chapel/main)
"aZj" = (
@@ -19461,6 +19411,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
"aZm" = (
@@ -19735,6 +19686,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"bae" = (
@@ -19745,6 +19697,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"baf" = (
@@ -19766,6 +19719,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"bah" = (
@@ -19776,6 +19730,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"bai" = (
@@ -19784,6 +19739,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"baj" = (
@@ -19929,6 +19885,12 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
+/obj/machinery/power/apc{
+ areastring = "/area/chapel/main";
+ name = "Chapel APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"baD" = (
@@ -19965,6 +19927,7 @@
/obj/machinery/light{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"baH" = (
@@ -19997,18 +19960,6 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
-"baM" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/toilet/locker";
- dir = 4;
- name = "Locker Restrooms APC";
- pixel_x = 24;
- pixel_y = 2
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
"baN" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -20017,6 +19968,14 @@
/area/maintenance/port)
"baO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/toilet/locker";
+ dir = 4;
+ name = "Locker Restrooms APC";
+ pixel_x = 24;
+ pixel_y = 2
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel/freezer,
/area/crew_quarters/toilet/locker)
"baP" = (
@@ -20079,6 +20038,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/closet/crate,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"baZ" = (
@@ -20110,6 +20070,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bbd" = (
@@ -20117,15 +20078,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/turf/open/floor/plating,
-/area/maintenance/port)
-"bbe" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bbf" = (
@@ -20135,6 +20088,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bbg" = (
@@ -20143,6 +20097,7 @@
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bbh" = (
@@ -20213,6 +20168,7 @@
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"bbs" = (
@@ -20315,19 +20271,8 @@
dir = 1
},
/area/hallway/secondary/exit)
-"bbI" = (
-/obj/machinery/power/apc{
- areastring = "/area/vacant_room/office";
- dir = 8;
- name = "Vacant Office APC";
- pixel_x = -25
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
"bbK" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bbL" = (
@@ -20367,6 +20312,7 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"bbQ" = (
@@ -20386,6 +20332,7 @@
/obj/structure/disposalpipe/junction/flip{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bbR" = (
@@ -20416,6 +20363,7 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bbW" = (
@@ -20451,6 +20399,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bcc" = (
@@ -20499,6 +20448,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bcj" = (
@@ -20518,6 +20468,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bcl" = (
@@ -20540,6 +20491,7 @@
codes_txt = "patrol;next_patrol=Dorm";
location = "HOP2"
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bcp" = (
@@ -20581,6 +20533,7 @@
req_access_txt = "12"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bcv" = (
@@ -20665,6 +20618,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bcH" = (
@@ -20678,6 +20632,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bcI" = (
@@ -20780,6 +20735,7 @@
/area/bridge/meeting_room)
"bdb" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel/white/side,
/area/hallway/primary/starboard)
"bdc" = (
@@ -20851,7 +20807,6 @@
/area/hallway/primary/starboard)
"bdm" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bdn" = (
@@ -20870,6 +20825,7 @@
/area/hallway/primary/central)
"bdo" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bdp" = (
@@ -20882,12 +20838,14 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bdr" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bds" = (
@@ -20914,6 +20872,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bdv" = (
@@ -20997,11 +20956,6 @@
},
/turf/open/floor/carpet,
/area/bridge/meeting_room)
-"bdG" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plating,
-/area/maintenance/port)
"bdH" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -21043,6 +20997,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/navbeacon/wayfinding,
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"bdO" = (
@@ -21067,13 +21022,6 @@
},
/turf/closed/wall,
/area/maintenance/disposal)
-"bdR" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
"bdS" = (
/obj/structure/closet/crate/internals,
/obj/effect/decal/cleanable/dirt,
@@ -21260,6 +21208,7 @@
codes_txt = "patrol;next_patrol=Stbd";
location = "HOP"
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bep" = (
@@ -21370,7 +21319,6 @@
c_tag = "Starboard Primary Hallway 3";
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"beD" = (
@@ -21555,6 +21503,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"beY" = (
@@ -21583,16 +21532,9 @@
/turf/open/floor/plating,
/area/chapel/main)
"bfc" = (
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/locker";
- dir = 1;
- name = "Locker Room APC";
- pixel_y = 23
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bfd" = (
@@ -21604,6 +21546,7 @@
/area/maintenance/port)
"bfe" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bff" = (
@@ -21648,12 +21591,6 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/storage";
- name = "Cargo Bay APC";
- pixel_x = 1;
- pixel_y = -23
- },
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
@@ -21827,12 +21764,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bfP" = (
-/obj/machinery/power/apc{
- areastring = "/area/hallway/primary/starboard";
- name = "Starboard Primary Hallway APC";
- pixel_y = -23
- },
-/obj/structure/cable,
/obj/structure/closet/emcloset,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
@@ -22008,6 +21939,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bgn" = (
@@ -22019,18 +21951,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
-"bgo" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/power/apc{
- areastring = "/area/science/robotics/mechbay";
- dir = 4;
- name = "Mech Bay APC";
- pixel_x = 24
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/department/medical/morgue)
"bgp" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel/white,
@@ -22442,6 +22362,7 @@
/obj/machinery/door/airlock{
name = "Starboard Emergency Storage"
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/storage/emergency/starboard)
"bhs" = (
@@ -22646,6 +22567,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"bhO" = (
@@ -22958,10 +22880,18 @@
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"biC" = (
+/obj/structure/cable,
/turf/open/floor/plating,
/area/storage/emergency/starboard)
"biD" = (
/obj/item/storage/box/lights/mixed,
+/obj/machinery/power/apc{
+ areastring = "/area/storage/emergency/starboard";
+ dir = 1;
+ name = "Starboard Emergency Storage APC";
+ pixel_y = 23
+ },
+/obj/structure/cable,
/turf/open/floor/plating,
/area/storage/emergency/starboard)
"biE" = (
@@ -23818,7 +23748,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"bkQ" = (
@@ -23827,7 +23756,6 @@
},
/obj/machinery/light/small,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"bkR" = (
@@ -23840,7 +23768,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"bkS" = (
@@ -23871,7 +23798,6 @@
dir = 4
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"bkV" = (
@@ -23923,7 +23849,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"blb" = (
@@ -23980,7 +23905,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/department/medical/morgue)
"blh" = (
@@ -24043,22 +23967,6 @@
/obj/machinery/cell_charger,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
-"blo" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/power/apc{
- areastring = "/area/storage/emergency/starboard";
- dir = 1;
- name = "Starboard Emergency Storage APC";
- pixel_y = 23
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/department/medical/morgue)
"blp" = (
/obj/machinery/power/apc{
areastring = "/area/security/checkpoint/medical";
@@ -24095,6 +24003,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"bls" = (
@@ -24731,7 +24640,6 @@
req_access_txt = "6;5"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"bmW" = (
@@ -25149,7 +25057,6 @@
dir = 9
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bod" = (
@@ -25820,6 +25727,7 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bpS" = (
@@ -25896,6 +25804,7 @@
/area/science/robotics/lab)
"bqc" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bqd" = (
@@ -25916,15 +25825,6 @@
},
/turf/open/floor/plasteel/white,
/area/science/genetics)
-"bqf" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/white,
-/area/science/research)
"bqg" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance,
@@ -25960,13 +25860,6 @@
},
/turf/open/floor/plating,
/area/quartermaster/storage)
-"bqk" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/turf/open/floor/plasteel/white,
-/area/science/research)
"bql" = (
/obj/machinery/conveyor{
dir = 4;
@@ -26244,13 +26137,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
-"bqW" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
"bqX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
@@ -26333,7 +26219,6 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/structure/cable,
/turf/open/floor/plasteel/white/side{
dir = 9
},
@@ -26395,6 +26280,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/research)
"bru" = (
@@ -26419,16 +26305,6 @@
/obj/effect/landmark/start/geneticist,
/turf/open/floor/plasteel/white,
/area/science/genetics)
-"brx" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel/white,
-/area/science/research)
"bry" = (
/obj/machinery/door/airlock/maintenance{
name = "Genetics Lab Maintenance";
@@ -26707,16 +26583,6 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/teleporter)
-"bsp" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/central)
"bsq" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -26775,6 +26641,7 @@
name = "Robotics Lab";
req_access_txt = "29"
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bsx" = (
@@ -26845,10 +26712,12 @@
dir = 1;
network = list("ss13","rd")
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bsT" = (
/obj/machinery/light,
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
"bsU" = (
@@ -26884,6 +26753,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/research)
"bta" = (
@@ -26927,6 +26797,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/research)
"btm" = (
@@ -27200,6 +27071,7 @@
"btR" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"btS" = (
@@ -27224,6 +27096,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/research)
"btV" = (
@@ -29177,6 +29050,7 @@
/obj/machinery/door/airlock/medical/glass{
name = "Recovery Room"
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bzd" = (
@@ -29511,6 +29385,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bzY" = (
@@ -29562,6 +29437,7 @@
/area/hallway/primary/central)
"bAf" = (
/obj/machinery/holopad,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bAg" = (
@@ -29571,6 +29447,7 @@
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bAh" = (
@@ -29579,6 +29456,7 @@
location = "AIE"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bAi" = (
@@ -30014,7 +29892,6 @@
dir = 1;
pixel_y = -22
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bBk" = (
@@ -30023,7 +29900,6 @@
c_tag = "Central Primary Hallway South-West";
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bBm" = (
@@ -30151,7 +30027,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bBB" = (
-/obj/structure/cable,
/obj/structure/disposalpipe/junction/yjunction{
dir = 8
},
@@ -30164,6 +30039,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bBD" = (
@@ -30527,6 +30403,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/janitor)
"bCu" = (
@@ -30551,6 +30428,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/janitor)
"bCx" = (
@@ -30653,6 +30531,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bCL" = (
@@ -30747,6 +30626,7 @@
"bCV" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bCW" = (
@@ -30945,7 +30825,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/aft)
"bDv" = (
@@ -31003,17 +30882,10 @@
/area/storage/tech)
"bDA" = (
/obj/structure/disposalpipe/segment,
-/obj/machinery/power/apc{
- areastring = "/area/medical/sleeper";
- dir = 4;
- name = "Treatment Center APC";
- pixel_x = 24
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/aft)
"bDB" = (
@@ -31040,6 +30912,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bDE" = (
@@ -31080,6 +30953,7 @@
"bDI" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bDJ" = (
@@ -31098,6 +30972,13 @@
/turf/open/floor/plasteel,
/area/janitor)
"bDL" = (
+/obj/machinery/power/apc{
+ areastring = "/area/janitor";
+ dir = 8;
+ name = "Custodial Closet APC";
+ pixel_x = -25
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/janitor)
"bDM" = (
@@ -31110,6 +30991,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bDO" = (
@@ -31145,6 +31027,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/heads/cmo)
"bDT" = (
@@ -31165,6 +31048,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/heads/cmo)
"bDV" = (
@@ -31540,10 +31424,12 @@
"bFf" = (
/obj/structure/chair/stool,
/obj/effect/landmark/start/janitor,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/janitor)
"bFg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/janitor)
"bFh" = (
@@ -31557,6 +31443,7 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/janitor)
"bFj" = (
@@ -31573,16 +31460,6 @@
/obj/item/reagent_containers/glass/bucket,
/turf/open/floor/plasteel,
/area/janitor)
-"bFl" = (
-/obj/machinery/power/apc{
- areastring = "/area/janitor";
- dir = 8;
- name = "Custodial Closet APC";
- pixel_x = -25
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/aft)
"bFm" = (
/obj/structure/disposalpipe/sorting/mail/flip{
dir = 8;
@@ -31628,6 +31505,7 @@
req_access_txt = "26"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/aft)
"bFt" = (
@@ -31663,6 +31541,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bFx" = (
@@ -31791,6 +31670,14 @@
"bFJ" = (
/obj/structure/bed,
/obj/item/bedsheet/medical,
+/obj/machinery/power/apc{
+ areastring = "/area/medical/sleeper";
+ dir = 2;
+ name = "Treatment Center APC";
+ pixel_x = 0;
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bFK" = (
@@ -31814,6 +31701,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bFN" = (
@@ -32036,7 +31924,6 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/science/mixing)
"bGB" = (
@@ -32229,6 +32116,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/heads/cmo)
"bHa" = (
@@ -32247,6 +32135,14 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/heads/cmo";
+ dir = 4;
+ name = "CM Office APC";
+ pixel_x = 24;
+ pixel_y = 0
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/heads/cmo)
"bHc" = (
@@ -33378,6 +33274,7 @@
"bKa" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/science/mixing)
"bKb" = (
@@ -33632,14 +33529,7 @@
/area/maintenance/aft)
"bKK" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/machinery/power/apc{
- areastring = "/area/medical/medbay/central";
- dir = 4;
- name = "Medbay APC";
- pixel_x = 24
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/cable,
/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/area/maintenance/aft)
@@ -33690,19 +33580,6 @@
},
/turf/closed/wall,
/area/medical/medbay/central)
-"bKS" = (
-/obj/machinery/power/apc{
- areastring = "/area/crew_quarters/heads/cmo";
- dir = 1;
- name = "CM Office APC";
- pixel_y = 23
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/aft)
"bKT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -37068,25 +36945,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/tcommsat/computer)
-"bUz" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
-"bUB" = (
-/obj/machinery/power/apc{
- areastring = "/area/tcommsat/computer";
- name = "Telecomms Monitoring APC";
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/aft)
"bUC" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -37808,6 +37666,12 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/machinery/power/apc{
+ areastring = "/area/tcommsat/computer";
+ dir = 1;
+ name = "Telecomms Monitoring APC";
+ pixel_y = 23
+ },
/turf/open/floor/plasteel,
/area/tcommsat/computer)
"bWI" = (
@@ -40210,7 +40074,6 @@
dir = 4
},
/obj/machinery/light/small,
-/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/aft)
"cdN" = (
@@ -40385,11 +40248,6 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
-"ceC" = (
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/aft)
"ceD" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
@@ -40723,6 +40581,19 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
+"cfS" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/bar";
+ name = "Bar APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
"cfT" = (
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 9
@@ -40737,16 +40608,6 @@
},
/turf/open/floor/plating,
/area/maintenance/disposal/incinerator)
-"cfX" = (
-/obj/machinery/power/apc{
- areastring = "/area/maintenance/disposal/incinerator";
- name = "Incinerator APC";
- pixel_y = -23
- },
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/aft)
"cfY" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -42245,6 +42106,7 @@
dir = 4;
pixel_x = 24
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"clh" = (
@@ -42270,6 +42132,7 @@
dir = 1;
name = "Incinerator to Output"
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
"clk" = (
@@ -42366,6 +42229,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"clI" = (
@@ -43053,6 +42917,10 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
+"cpF" = (
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/storage/emergency/port)
"cpG" = (
/obj/structure/table/optable,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
@@ -45677,6 +45545,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/landmark/event_spawn,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
"czP" = (
@@ -45854,6 +45723,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"cAA" = (
@@ -45927,6 +45797,7 @@
/area/maintenance/port/aft)
"cAL" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/mob/living/simple_animal/hostile/lizard{
name = "Wags-His-Tail";
real_name = "Wags-His-Tail"
@@ -46117,6 +45988,7 @@
/obj/effect/landmark/event_spawn,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/warehouse)
"cBj" = (
@@ -46182,6 +46054,7 @@
"cBw" = (
/obj/machinery/door/firedoor,
/obj/effect/landmark/event_spawn,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cBx" = (
@@ -47587,6 +47460,14 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
+/obj/machinery/power/apc{
+ areastring = "/area/science/robotics/mechbay";
+ dir = 2;
+ name = "Mech Bay APC";
+ pixel_x = 0;
+ pixel_y = -23
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/science/robotics/mechbay)
"cHR" = (
@@ -48255,6 +48136,11 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"cWI" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"cYj" = (
/obj/machinery/door/airlock/maintenance{
name = "Psychology Maintenance";
@@ -48360,6 +48246,14 @@
/obj/machinery/chem_heater,
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"dmo" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Diner"
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
"dni" = (
/obj/structure/disposalpipe/segment{
dir = 9
@@ -48623,11 +48517,6 @@
/obj/structure/chair/stool,
/turf/open/floor/plasteel,
/area/security/prison)
-"dPH" = (
-/obj/machinery/light,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/central)
"dRp" = (
/obj/machinery/seed_extractor,
/obj/effect/decal/cleanable/dirt,
@@ -48815,6 +48704,14 @@
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/power/apc{
+ areastring = "/area/vacant_room/commissary";
+ dir = 4;
+ name = "Vacant Commissary APC";
+ pixel_x = 24;
+ pixel_y = 2
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"eAI" = (
@@ -48857,6 +48754,18 @@
},
/turf/open/floor/wood,
/area/crew_quarters/dorms)
+"eMe" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/locker";
+ dir = 4;
+ name = "Locker Room APC";
+ pixel_x = 24;
+ pixel_y = 0
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
"eRs" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/white/line{
@@ -48992,6 +48901,12 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"fkd" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"flc" = (
/obj/item/assembly/prox_sensor{
pixel_x = -4;
@@ -49168,6 +49083,17 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/science/xenobiology)
+"fLe" = (
+/obj/machinery/power/apc{
+ areastring = "/area/lawoffice";
+ dir = 4;
+ name = "Law Office APC";
+ pixel_x = 23;
+ pixel_y = 0
+ },
+/obj/structure/cable,
+/turf/open/floor/wood,
+/area/lawoffice)
"fPm" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -49177,12 +49103,28 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"fTq" = (
+/obj/machinery/power/apc{
+ areastring = "/area/library";
+ dir = 4;
+ name = "Library APC";
+ pixel_x = 24
+ },
+/obj/structure/cable,
+/turf/open/floor/wood,
+/area/library)
"fUn" = (
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone2)
+"fVu" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
"fVK" = (
/obj/machinery/light{
dir = 1
@@ -49286,6 +49228,13 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/science/mixing)
+"gnW" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/medical/sleeper)
"gnX" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -49404,6 +49353,16 @@
/obj/item/bedsheet/medical,
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone2)
+"gGr" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"gGJ" = (
/obj/machinery/camera/autoname{
dir = 5
@@ -49517,6 +49476,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"gNQ" = (
@@ -49543,6 +49503,26 @@
/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/lab)
+"gRI" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/vacant_room/commissary)
+"gRL" = (
+/obj/machinery/power/apc{
+ areastring = "/area/hallway/primary/starboard";
+ name = "Starboard Primary Hallway APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/starboard)
"gUD" = (
/obj/structure/table,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -49613,18 +49593,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
-"hcE" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/warehouse";
- dir = 4;
- name = "Cargo Warehouse APC";
- pixel_x = 24
+"hcu" = (
+/obj/structure/chair{
+ dir = 1
},
/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom)
"hec" = (
/obj/structure/bed/dogbed/renault,
/mob/living/simple_animal/pet/fox/Renault,
@@ -49779,6 +49754,11 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/hallway/secondary/entry)
+"hGn" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"hGP" = (
/obj/machinery/button/door{
id = "xenobio3";
@@ -49839,6 +49819,7 @@
name = "Chemistry Lab";
req_access_txt = "5; 33"
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"hMM" = (
@@ -49889,6 +49870,11 @@
"hTU" = (
/turf/closed/wall/r_wall,
/area/medical/chemistry)
+"hVK" = (
+/obj/effect/landmark/event_spawn,
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"hYR" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/turf/open/floor/plating,
@@ -49986,6 +49972,10 @@
/obj/effect/turf_decal/loading_area,
/turf/open/floor/plasteel/dark,
/area/science/nanite)
+"itz" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
"itG" = (
/obj/item/beacon,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -50006,6 +49996,17 @@
},
/turf/open/floor/plating,
/area/security/execution/transfer)
+"izD" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/crew_quarters/locker)
"izT" = (
/obj/structure/closet/crate{
icon_state = "crateopen"
@@ -50349,6 +50350,7 @@
dir = 4
},
/obj/machinery/door/firedoor/heavy,
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/research)
"jsb" = (
@@ -50359,16 +50361,13 @@
/obj/structure/filingcabinet/filingcabinet,
/turf/open/floor/plasteel/white,
/area/medical/psychology)
-"jsv" = (
-/obj/machinery/power/apc{
- areastring = "/area/lawoffice";
- dir = 1;
- name = "Law Office APC";
- pixel_y = 23
+"jsj" = (
+/obj/machinery/door/airlock/maintenance{
+ req_access_txt = "12"
},
/obj/structure/cable,
/turf/open/floor/plating,
-/area/maintenance/fore)
+/area/maintenance/fore/secondary)
"jsw" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
@@ -50512,6 +50511,11 @@
},
/turf/open/floor/plasteel/dark,
/area/security/prison/safe)
+"jLL" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/starboard)
"jMF" = (
/obj/machinery/door/firedoor/heavy,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -50641,6 +50645,7 @@
/obj/machinery/airalarm{
pixel_y = 23
},
+/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"kdS" = (
@@ -51064,6 +51069,10 @@
"ljx" = (
/turf/closed/wall/r_wall,
/area/medical/medbay/zone2)
+"lmZ" = (
+/obj/structure/cable,
+/turf/open/floor/wood,
+/area/lawoffice)
"lqJ" = (
/obj/structure/table/wood,
/obj/item/flashlight/lantern,
@@ -51304,6 +51313,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"lIv" = (
@@ -51434,6 +51444,13 @@
},
/turf/open/floor/engine,
/area/science/xenobiology)
+"lWa" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/starboard)
"lWA" = (
/obj/machinery/door/airlock/external{
name = "External Access";
@@ -51728,6 +51745,17 @@
},
/turf/open/floor/plasteel,
/area/security/prison/safe)
+"mRq" = (
+/obj/machinery/power/apc{
+ areastring = "/area/storage/art";
+ dir = 4;
+ name = "Art Storage";
+ pixel_x = 23;
+ pixel_y = 0
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/storage/art)
"mSf" = (
/obj/structure/chair/office{
dir = 1
@@ -51739,6 +51767,7 @@
/obj/machinery/light{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"mSR" = (
@@ -51773,6 +51802,10 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"mVj" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hydroponics/garden)
"mWx" = (
/obj/structure/rack,
/obj/item/tank/internals/emergency_oxygen,
@@ -51814,6 +51847,16 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"nls" = (
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/storage";
+ name = "Cargo Bay APC";
+ pixel_x = 1;
+ pixel_y = -23
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"nmn" = (
/obj/structure/chair{
dir = 4
@@ -52109,6 +52152,7 @@
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/science/mixing)
"nWA" = (
@@ -52185,6 +52229,10 @@
/obj/structure/cable,
/turf/open/floor/engine,
/area/science/xenobiology)
+"oeS" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom)
"ofT" = (
/obj/machinery/computer/bounty,
/turf/open/floor/plasteel,
@@ -52321,12 +52369,17 @@
/obj/machinery/light,
/turf/open/floor/plating,
/area/engine/engineering)
+"oEV" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/fore)
"oHe" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"oHH" = (
@@ -52445,6 +52498,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"oXL" = (
@@ -52544,6 +52598,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plasteel/grimy,
/area/security/detectives_office)
"piD" = (
@@ -52863,6 +52918,17 @@
/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone2)
+"pKc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/warehouse";
+ dir = 8;
+ name = "Cargo Warehouse APC";
+ pixel_x = -24
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"pKm" = (
/obj/structure/table,
/obj/item/nanite_remote,
@@ -53002,6 +53068,7 @@
/area/science/genetics)
"pUr" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/structure/cable,
/turf/open/floor/wood,
/area/lawoffice)
"pVb" = (
@@ -53147,6 +53214,13 @@
},
/turf/open/floor/plasteel/freezer,
/area/security/prison/safe)
+"qoQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"qpJ" = (
/obj/machinery/hydroponics/soil,
/obj/effect/turf_decal/tile/green{
@@ -53262,17 +53336,21 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/security/detectives_office)
+"qMk" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/power/apc{
+ areastring = "/area/maintenance/disposal/incinerator";
+ name = "Incinerator APC";
+ pixel_y = -23
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/maintenance/disposal/incinerator)
"qQw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/security/execution/transfer)
-"qQC" = (
-/obj/machinery/portable_atmospherics/canister,
-/obj/effect/turf_decal/bot,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/science/mixing)
"qQH" = (
/obj/effect/spawner/lootdrop/minor/bowler_or_that,
/obj/structure/rack,
@@ -53306,6 +53384,19 @@
/obj/machinery/door/firedoor,
/turf/open/floor/plating,
/area/security/execution/transfer)
+"qWw" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/security/courtroom";
+ dir = 8;
+ name = "Courtroom APC";
+ pixel_x = -25
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/dark,
+/area/security/courtroom)
"qXy" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -53380,6 +53471,16 @@
/obj/item/camera,
/turf/open/floor/plasteel,
/area/security/prison)
+"rqd" = (
+/obj/effect/turf_decal/tile/blue{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/cafeteria,
+/area/crew_quarters/heads/cmo)
"rrf" = (
/obj/machinery/door/airlock/security/glass{
name = "Isolation Cell";
@@ -53390,6 +53491,14 @@
},
/turf/open/floor/plasteel,
/area/security/prison/safe)
+"rrA" = (
+/obj/effect/turf_decal/tile/bar,
+/obj/effect/turf_decal/tile/bar{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/crew_quarters/bar)
"rua" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -53443,6 +53552,10 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"rFc" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/science/robotics/lab)
"rFI" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/white,
@@ -53670,18 +53783,17 @@
/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/turf/open/floor/plating,
/area/maintenance/aft)
-"soQ" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+"sqe" = (
+/obj/machinery/door/firedoor,
/obj/machinery/power/apc{
- areastring = "/area/vacant_room/commissary";
+ areastring = "/area/medical/medbay/central";
dir = 4;
- name = "Vacant Commissary APC";
- pixel_x = 24;
- pixel_y = 2
+ name = "Medbay APC";
+ pixel_x = 24
},
/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"sqR" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -53706,7 +53818,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plasteel/white/side{
dir = 9
},
@@ -53842,6 +53953,10 @@
/obj/machinery/navbeacon/wayfinding,
/turf/open/floor/plating,
/area/hallway/secondary/entry)
+"sIY" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/storage/primary)
"sLv" = (
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance,
@@ -53868,6 +53983,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port)
"sSW" = (
@@ -54116,6 +54232,11 @@
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/turf/open/floor/engine,
/area/science/xenobiology)
+"trR" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/medical/sleeper)
"tsw" = (
/obj/structure/table,
/obj/item/storage/toolbox/emergency,
@@ -54252,6 +54373,13 @@
/obj/effect/turf_decal/loading_area,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
+"tPs" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
"tPW" = (
/obj/machinery/door/poddoor/preopen{
id = "xenobio7";
@@ -54413,6 +54541,13 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/science/xenobiology)
+"ulh" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/fore)
"ulo" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/general/visible{
@@ -54589,15 +54724,6 @@
/obj/item/stack/license_plates/empty/fifty,
/turf/open/floor/plating,
/area/security/prison)
-"uIv" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
- },
-/turf/open/floor/plasteel/white,
-/area/science/research)
"uJo" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -54735,6 +54861,14 @@
dir = 8
},
/area/science/research)
+"vdH" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Central Access"
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"vdT" = (
/obj/machinery/door/window/northleft{
dir = 4;
@@ -54829,12 +54963,6 @@
/area/maintenance/starboard)
"vsa" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/power/apc{
- areastring = "/area/security/detectives_office";
- dir = 8;
- name = "Detective's Office APC";
- pixel_x = -25
- },
/obj/structure/disposalpipe/segment{
dir = 6
},
@@ -54955,6 +55083,12 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
+"vDJ" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/fore)
"vFD" = (
/obj/machinery/door/airlock/security{
name = "Permanent Cell 5"
@@ -55032,6 +55166,16 @@
},
/turf/open/floor/plasteel/freezer,
/area/security/prison/safe)
+"vKX" = (
+/obj/machinery/power/apc{
+ areastring = "/area/security/detectives_office";
+ dir = 8;
+ name = "Detective's Office APC";
+ pixel_x = -25
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/grimy,
+/area/security/detectives_office)
"vLc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
@@ -55158,6 +55302,11 @@
/obj/structure/closet/secure_closet/personal/cabinet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
+"wju" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/aft)
"wkE" = (
/obj/machinery/door/airlock/maintenance{
name = "Permabrig Maintenance";
@@ -55475,6 +55624,11 @@
/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/science/research)
+"xah" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/medical/chemistry)
"xaZ" = (
/obj/effect/decal/cleanable/cobweb,
/obj/structure/sign/warning/securearea{
@@ -55496,6 +55650,10 @@
/obj/structure/sign/warning/electricshock,
/turf/open/floor/plating,
/area/science/xenobiology)
+"xca" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel/white,
+/area/medical/sleeper)
"xeP" = (
/obj/effect/turf_decal/tile/purple{
dir = 1
@@ -55731,6 +55889,16 @@
/obj/effect/spawner/lootdrop/grille_or_trash,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"xKf" = (
+/obj/machinery/power/apc{
+ areastring = "/area/storage/emergency/port";
+ dir = 1;
+ name = "Port Emergency Storage APC";
+ pixel_y = 23
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/storage/emergency/port)
"xKm" = (
/obj/structure/bed,
/turf/open/floor/plasteel,
@@ -55780,6 +55948,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"xVy" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"xXe" = (
/obj/structure/closet/radiation,
/turf/open/floor/plasteel/dark,
@@ -68614,7 +68789,7 @@ aaf
alU
atJ
amC
-aKf
+axk
bEJ
axb
ayr
@@ -68639,8 +68814,8 @@ ayl
ayl
aWc
baG
-ayl
-aIK
+itz
+tPs
ayl
beM
asE
@@ -69133,7 +69308,7 @@ avq
avq
cwH
avq
-aAj
+avq
aBK
aCL
aEG
@@ -69148,7 +69323,7 @@ aPx
aQJ
ayl
czK
-aUO
+aIG
aUy
aWm
aWf
@@ -69668,7 +69843,7 @@ aWr
aXZ
aUQ
czK
-bbe
+bjk
beO
beS
bgj
@@ -69925,7 +70100,7 @@ aXL
aXZ
aUO
czK
-bbe
+bjk
beO
beR
bgj
@@ -70182,7 +70357,7 @@ aXL
aXZ
baJ
czK
-bbe
+bjk
beO
beU
bgk
@@ -70418,7 +70593,7 @@ amC
amC
ayt
alU
-aAw
+aol
aBl
aCZ
aEJ
@@ -70697,7 +70872,7 @@ aYd
aZn
aTt
bbg
-bdG
+bdZ
bdu
bdT
beO
@@ -70956,7 +71131,7 @@ czK
bcI
aPz
bdt
-bdR
+aWv
aSg
aYf
bkD
@@ -71192,7 +71367,7 @@ azq
aAK
aBv
aDa
-aAQ
+mVj
aAQ
azF
aIR
@@ -71449,7 +71624,7 @@ azi
aAx
aBm
aAQ
-aAQ
+mVj
aAQ
azF
azF
@@ -71466,7 +71641,7 @@ aWj
aXP
aZr
baL
-bbI
+aSg
bcK
aPz
bdt
@@ -71706,7 +71881,7 @@ azF
aAT
aBw
aDg
-aAQ
+mVj
vyA
aHz
aIS
@@ -71963,12 +72138,12 @@ azF
aAS
aFP
aAQ
-aAQ
-aAQ
-aAQ
-aAQ
+mVj
+mVj
+mVj
+mVj
aKm
-aLE
+aNl
aNj
aLE
aPz
@@ -71979,7 +72154,7 @@ aQM
aQM
aQM
aQM
-baM
+aQM
aQM
bcL
aQM
@@ -73502,12 +73677,12 @@ avW
amC
ayx
atO
-aAL
+asK
aBQ
aDb
aDo
aFY
-aDo
+sIY
poM
aKp
aLE
@@ -73764,7 +73939,7 @@ aBQ
aDl
bxk
aFS
-aDo
+sIY
aIX
aBQ
aLE
@@ -74021,7 +74196,7 @@ aBQ
aDk
aDo
aDo
-aDo
+sIY
aIW
aBQ
aLE
@@ -75319,7 +75494,7 @@ aQN
aUv
aWp
aXA
-aYX
+izD
aYX
aYX
bbs
@@ -75578,7 +75753,7 @@ aUZ
aXx
aYU
mSB
-aYU
+eMe
bbr
bcu
bfe
@@ -76092,7 +76267,7 @@ aWu
aYa
aZD
aZD
-hcE
+aZD
aZD
aZD
bff
@@ -76339,13 +76514,13 @@ aaa
aJd
aLN
aNl
-aOl
+qoQ
aPH
aRa
aRa
aTG
aPG
-aWw
+aSX
aYc
aZF
aZF
@@ -76599,14 +76774,14 @@ aNl
aOl
aPF
aQZ
-aRa
+mRq
aTF
aPG
aSX
aWC
baS
aZI
-baS
+pKc
baS
bdS
bdU
@@ -77119,7 +77294,7 @@ aRb
aWx
aXE
baS
-baS
+hGn
bbP
baS
bcE
@@ -77130,7 +77305,7 @@ bgu
bic
bku
bmh
-bjr
+nls
aZE
brM
bts
@@ -77366,7 +77541,7 @@ aBa
aaa
aJd
aLN
-aMS
+xVy
aOt
aPK
aPK
@@ -77375,7 +77550,7 @@ aPK
aPK
bjk
aXM
-bfi
+fkd
cBi
bbS
bcS
@@ -77623,14 +77798,14 @@ aBa
aaf
aJd
aLN
-aMS
+xVy
aOi
tsw
aPK
aSl
aTH
aPK
-aWz
+bjk
aWC
gjl
gjl
@@ -77880,11 +78055,11 @@ aaa
aaa
aJd
aLN
-aMS
-aOi
-aLE
+xVy
+gGr
+aNl
aRc
-aSm
+cpF
aTJ
aPK
cCl
@@ -78141,12 +78316,12 @@ aMT
aOi
aPL
aPK
-aSm
+xKf
aTI
aPK
aWB
akj
-soQ
+aRb
sST
bbU
dfx
@@ -78651,8 +78826,8 @@ ayG
ayG
ayG
aLm
-aMS
-aOv
+xVy
+aOz
aPQ
aPQ
aPQ
@@ -79165,7 +79340,7 @@ aHh
aIV
ayG
aLN
-aMS
+xVy
aOx
aRe
dFs
@@ -79433,7 +79608,7 @@ pNh
avr
avr
bbT
-bbT
+gRI
kRN
tav
aZH
@@ -80479,7 +80654,7 @@ btz
bwf
vFS
btz
-btz
+bBh
bBh
bCr
bAK
@@ -80689,7 +80864,7 @@ alq
aot
apc
apS
-aqT
+apS
apS
apS
apS
@@ -80714,16 +80889,16 @@ aJq
aJq
aJq
aJq
-aJq
-aJq
-aJq
-aJq
-aJq
-bHt
-aJq
-aLY
+bBi
+bBi
+bBi
+bBi
+bBi
+hVK
+bBi
+jEy
beX
-aJq
+bBi
bgm
bjx
bBi
@@ -80737,7 +80912,7 @@ bBi
muM
bBi
bAe
-bBi
+aJq
bCq
bCq
bDt
@@ -80949,7 +81124,7 @@ aph
aph
aph
aph
-jsv
+apS
aqR
awe
axy
@@ -80971,7 +81146,7 @@ aLX
aLX
aLX
aLX
-aJq
+bBi
aYl
aYl
aYl
@@ -80993,8 +81168,8 @@ aYl
aKF
oXL
aJq
-aJq
bBi
+aJq
aJw
aaa
aaf
@@ -81206,7 +81381,7 @@ air
aqY
arU
apU
-hhs
+vDJ
hhs
nGv
axy
@@ -81250,8 +81425,8 @@ bqv
adS
aJw
aJq
-aJq
-dPH
+bBi
+byU
aJw
aaa
bEU
@@ -81461,7 +81636,7 @@ aov
cCi
ata
arR
-ata
+lmZ
aph
aph
aph
@@ -81507,8 +81682,8 @@ buK
bqy
aJw
aJq
-aJq
bBi
+aJq
aJw
aaf
bEU
@@ -81718,7 +81893,7 @@ aov
aph
arT
ata
-ata
+lmZ
jBV
auh
aph
@@ -81764,7 +81939,7 @@ bmr
bmr
bmr
byN
-aJq
+bBi
bBj
aJw
aaa
@@ -82021,8 +82196,8 @@ buM
bwi
bmr
aMm
-aJq
bBi
+aJq
bCs
bCs
bEU
@@ -82038,7 +82213,7 @@ bRn
cce
bNI
bNI
-bUz
+bEP
bVI
bWG
bXD
@@ -82233,7 +82408,7 @@ ard
gpE
arX
asl
-ata
+fLe
dtc
aph
awe
@@ -82278,8 +82453,8 @@ bsY
bue
bmr
aMn
-aJq
bBi
+aJq
bCs
bDv
bEX
@@ -82295,7 +82470,7 @@ apV
bLC
cCf
bNI
-bUz
+bEP
bVI
bWB
bWB
@@ -82552,7 +82727,7 @@ apV
xhV
gWd
bNI
-bUz
+bEP
bVJ
bWI
bWI
@@ -82792,8 +82967,8 @@ buN
bwj
bmr
byP
-aJq
bBi
+aJq
bCs
bDw
bEZ
@@ -82809,7 +82984,7 @@ bKx
cjL
gWd
bNI
-bUz
+bEP
bVJ
bWH
bXE
@@ -83050,7 +83225,7 @@ bwl
bxG
byR
bBi
-bBi
+aJq
bCs
bDz
bFa
@@ -83066,7 +83241,7 @@ apV
cjL
nxv
bNI
-bUz
+bEP
bVJ
bOo
bOD
@@ -83261,7 +83436,7 @@ apd
aob
bLE
arV
-bLE
+vKX
pgP
apd
awe
@@ -83306,7 +83481,7 @@ bmr
bmr
bmr
byQ
-aJq
+bBi
aJq
bCs
bDy
@@ -83323,7 +83498,7 @@ bKA
rKP
bSv
bNI
-bUB
+bEP
bVJ
bOl
bOC
@@ -83563,7 +83738,7 @@ aaa
aaa
aJn
aXf
-aJq
+bBi
byV
bCs
bAM
@@ -83820,7 +83995,7 @@ aaa
aaa
aJn
aXf
-aJq
+bBi
byU
bCs
bAL
@@ -84077,7 +84252,7 @@ aaf
aaf
aJn
aXf
-aJq
+bBi
aJq
bCs
bFa
@@ -84334,7 +84509,7 @@ buP
bwm
bxH
byS
-aJq
+bBi
aMh
bCs
bCs
@@ -84800,12 +84975,12 @@ anw
anS
aoy
apj
-anz
-anz
-anz
-anz
-anz
-anz
+oEV
+oEV
+oEV
+oEV
+oEV
+oEV
awk
axB
anz
@@ -85054,7 +85229,7 @@ agj
agj
aiX
anx
-anz
+oEV
aoz
apm
aqd
@@ -85311,7 +85486,7 @@ alz
aml
amT
anw
-anz
+oEV
aoz
apl
aqc
@@ -85362,7 +85537,7 @@ buR
bwo
bxJ
bwb
-aJq
+bBi
bBr
bCv
bCv
@@ -85568,7 +85743,7 @@ alB
amn
amV
anw
-anz
+oEV
aoz
aod
aqf
@@ -85619,7 +85794,7 @@ aaf
aaf
aJn
aJq
-aJq
+bBi
bBu
bCv
bAT
@@ -85876,7 +86051,7 @@ aaa
aaa
aJn
aJq
-aJq
+bBi
bBt
bCv
bDH
@@ -86081,8 +86256,8 @@ akX
alC
alC
amX
-anw
-anz
+ulh
+oEV
aoB
aod
aqe
@@ -86133,7 +86308,7 @@ aaa
aaa
aJn
aJq
-aJq
+bBi
aXf
bCv
bDK
@@ -86390,7 +86565,7 @@ bsh
bsh
bqH
aJq
-aJq
+bBi
aXf
bCv
bDJ
@@ -86647,7 +86822,7 @@ btd
bwr
bqH
aMm
-aJq
+bBi
bBv
cBy
bDM
@@ -86904,7 +87079,7 @@ btc
bwq
bqH
aJq
-aJq
+bBi
aXf
bCv
bAU
@@ -87161,7 +87336,7 @@ buW
bwt
bqH
aLY
-aLY
+jEy
bBx
bCv
apG
@@ -87418,7 +87593,7 @@ buV
bws
bqH
aJq
-aJq
+bBi
byW
bCv
bAV
@@ -87675,7 +87850,7 @@ buY
buY
bqH
aJq
-aJq
+bBi
aXf
bCv
bDP
@@ -87932,11 +88107,11 @@ buX
buX
bqH
aJq
-aJq
+bBi
bBy
bzs
bDO
-bFl
+bDO
bDO
bHU
bJs
@@ -88136,9 +88311,9 @@ akw
alb
alG
amr
-amY
-amY
-ajp
+qWw
+hcu
+oeS
aoH
cSA
aqe
@@ -88189,12 +88364,12 @@ buZ
buZ
bqH
byN
-aJq
+bBi
bBA
bCz
bDQ
bFn
-bDO
+bAw
bHX
bJy
bKE
@@ -88446,12 +88621,12 @@ bqH
bqH
bqH
aJq
-bHt
-aXg
+hVK
+aXf
bzs
bzs
bFm
-bDQ
+ccM
bHW
cBD
bKD
@@ -88697,7 +88872,7 @@ bmE
bmE
bpn
bqL
-bsp
+btO
btO
bva
bwu
@@ -88708,7 +88883,7 @@ bBB
kLd
bzs
bFp
-bDO
+bAw
bHX
bJA
bKG
@@ -88943,18 +89118,18 @@ bBi
jEy
bBi
bco
-aJq
+bBi
beo
-aJq
-aJq
-aJq
-aJq
-aJq
-aJq
-aJq
-aJq
-aLY
-aJq
+bBi
+bBi
+bBi
+bBi
+bBi
+bBi
+bBi
+bBi
+jEy
+bBi
bAk
aJq
aJq
@@ -89166,10 +89341,10 @@ alH
amr
amY
amY
-ajp
+oeS
ajo
aps
-aqk
+aqj
arf
tqd
aHw
@@ -89200,7 +89375,7 @@ aJq
aLY
aJq
bcp
-aJq
+bBi
beq
aJq
bgY
@@ -89457,7 +89632,7 @@ aQg
aJC
aJC
aHP
-aHP
+vdH
aHP
bfF
bfF
@@ -89680,7 +89855,7 @@ akA
amr
amY
amY
-ajp
+oeS
ajo
apt
aqj
@@ -89714,7 +89889,7 @@ aQc
baa
aJC
aYV
-aYV
+bez
aYV
bfF
nQI
@@ -89937,7 +90112,7 @@ ajo
ajo
ajo
ajo
-aoa
+jsj
ajo
apt
aql
@@ -89971,7 +90146,7 @@ aQc
aZZ
aJC
aYV
-aYV
+bez
aYV
bfF
bgZ
@@ -90192,7 +90367,7 @@ ahT
ahT
ahT
ahT
-alL
+ahT
ahT
anb
ahT
@@ -90228,7 +90403,7 @@ aPY
bac
aJC
aYV
-aYV
+bez
aYV
bfF
bhc
@@ -90485,7 +90660,7 @@ aQc
bab
aJC
aYV
-aYV
+bez
ber
bfF
bhb
@@ -90742,7 +90917,7 @@ aQc
aQc
bbx
aYV
-aYV
+bez
aYV
bfF
bhd
@@ -90999,7 +91174,7 @@ aQc
aQc
aQg
aYV
-aYV
+bez
bes
bfF
bfF
@@ -91253,10 +91428,10 @@ aPY
aUg
bFC
aRw
-aQc
-bbx
-aYV
-aYV
+rrA
+dmo
+bez
+bez
bet
bfH
bhf
@@ -91513,7 +91688,7 @@ aQc
bad
bby
aYV
-aYV
+bez
bet
bfG
bhe
@@ -91525,15 +91700,15 @@ boe
bli
bpN
bqX
-bEe
-btg
-bDR
-bDR
-bDR
-bDR
+bHY
+trR
+xca
+xca
+xca
+xca
bzc
-bDR
-bDZ
+xca
+gnW
bCK
bFy
bFF
@@ -91770,7 +91945,7 @@ aXO
aZb
aJC
aYV
-aYV
+bez
bet
bfG
bhe
@@ -92011,7 +92186,7 @@ aCu
aaf
alP
aGH
-aIc
+avI
aJC
aKO
aMw
@@ -92027,7 +92202,7 @@ aQc
bae
aJC
bcr
-aYV
+bez
bet
bfG
bhe
@@ -92541,7 +92716,7 @@ czP
bag
aJC
aYV
-aYV
+bez
bet
bfJ
bhh
@@ -92798,7 +92973,7 @@ aQc
bai
aJC
aYV
-aYV
+bez
bet
bfH
ogj
@@ -93052,10 +93227,10 @@ aac
aQc
aXk
aQc
-aQc
+cfS
aJC
aYV
-aYV
+bez
bev
bfK
bhi
@@ -93312,7 +93487,7 @@ aYK
aJI
aJI
bcs
-aYV
+bez
aYV
bfK
bhk
@@ -93569,7 +93744,7 @@ aYJ
aJI
bbz
aYV
-aYV
+bez
aYV
bfK
bhj
@@ -93612,8 +93787,8 @@ bZM
cbJ
smN
smN
-ceC
-cfX
+smN
+smN
chk
chl
ciz
@@ -93869,7 +94044,7 @@ bzs
bzs
bzs
ccF
-bDO
+bAw
ceE
cfl
cfZ
@@ -94067,7 +94242,7 @@ alP
alP
alP
aGH
-aIh
+avI
aJI
aKT
aMD
@@ -94083,7 +94258,7 @@ aVz
baj
bbz
aYV
-bdp
+lWa
aYV
bfK
bfK
@@ -94095,13 +94270,13 @@ bfK
bnF
bqQ
bsx
-bhh
-bfJ
-bhh
-bhh
-bhh
-bhh
-bhh
+bsx
+cWI
+bsx
+bsx
+bsx
+bsx
+bsx
bzX
bBm
bIr
@@ -94340,7 +94515,7 @@ aVz
bak
bbz
aYV
-bdp
+lWa
aYV
bfL
bhn
@@ -94351,15 +94526,15 @@ bmR
bfL
bol
bqQ
-bsx
+bhh
bst
-bfJ
+sqe
bhh
bhh
bwK
bhh
bhh
-bhh
+bsx
btV
bGU
bGV
@@ -94597,7 +94772,7 @@ cAg
bak
bbz
aYV
-bdp
+lWa
cBm
bfL
bhm
@@ -94607,16 +94782,16 @@ bhm
bkP
bmV
boc
-bqW
+bqQ
+bhh
+bua
+bua
+bua
+bua
+bua
+bua
+bhh
bsx
-bua
-bua
-bua
-bua
-bua
-bua
-bhh
-bhh
btV
bIr
bCR
@@ -94648,7 +94823,7 @@ chm
akD
cju
clf
-cjr
+qMk
cmd
cmZ
cmd
@@ -94854,7 +95029,7 @@ aVz
tXW
bbz
aYV
-bdp
+lWa
bdc
bfL
beY
@@ -94873,7 +95048,7 @@ kMu
uTM
bua
bBJ
-bhh
+bsx
bBn
bof
bDF
@@ -95130,7 +95305,7 @@ bvo
bzl
bua
bzd
-bhh
+bsx
btT
bCU
bCR
@@ -95368,10 +95543,10 @@ aYN
aJI
bbz
aYV
-aYV
+bez
bey
bfL
-bhm
+biB
biz
biz
biz
@@ -95387,7 +95562,7 @@ vhn
bye
bua
bBL
-bhh
+bsx
bBC
bCV
bDN
@@ -95625,13 +95800,13 @@ aJI
aJI
aJI
bcq
-bcq
+jLL
bcq
bfL
bhp
-biB
-biB
-biB
+bhm
+bhm
+bhm
bkU
bmX
bhh
@@ -95670,7 +95845,7 @@ bzs
bJs
cdK
ceH
-cfn
+fVu
cfn
cfn
cgd
@@ -95882,7 +96057,7 @@ aYP
bal
bam
aYV
-aYV
+bez
aYV
bfL
bhq
@@ -96139,8 +96314,8 @@ aYO
aRJ
nCW
aYV
-aYV
-aYV
+bez
+gRL
bfL
bfL
bfL
@@ -96182,9 +96357,9 @@ bZQ
caP
cbO
ccJ
-bLS
+wju
hJq
-cfp
+xah
cfp
cfp
cge
@@ -96396,7 +96571,7 @@ aRJ
aRJ
bbB
aYV
-aYV
+bez
aYV
bfO
bfS
@@ -96418,7 +96593,7 @@ bBP
bCZ
bEk
bFG
-bCY
+rqd
bFP
bBN
bKQ
@@ -96653,14 +96828,14 @@ aYQ
cBg
bam
aYV
-aYV
-aYV
-aYV
+bez
+bez
+bez
bhr
biC
bkc
bfS
-blo
+cTO
qsH
boq
mYY
@@ -96678,7 +96853,7 @@ bCY
bGZ
bFE
bBN
-bKS
+bKT
bJs
bNd
bOs
@@ -96910,7 +97085,7 @@ aYQ
bam
aYV
aYV
-aYV
+bez
aYV
kjH
bfS
@@ -97167,8 +97342,8 @@ aYR
ban
aYV
aYV
-aYV
bez
+aYV
bfP
bfS
bfS
@@ -97685,7 +97860,7 @@ bcb
bdl
cTJ
cHD
-bgo
+cTK
cTK
cTK
blq
@@ -98186,7 +98361,7 @@ aCt
aCt
aCt
aCt
-aRK
+aCt
aCt
aCt
aUx
@@ -98196,7 +98371,7 @@ aZc
aZc
baT
bcj
-bez
+aYV
bfT
cHF
biG
@@ -99981,7 +100156,7 @@ aHd
aIx
aJF
aLh
-aIt
+fTq
aNV
aPd
aIt
@@ -100005,7 +100180,7 @@ blG
biL
cHV
cIa
-biL
+rFc
box
buo
bvc
@@ -100490,7 +100665,7 @@ apE
aBF
aCH
aED
-aFy
+ayd
aGO
aIB
aJJ
@@ -100519,7 +100694,7 @@ cHR
bou
bpT
bqd
-biL
+rFc
box
btS
bxd
@@ -100776,7 +100951,7 @@ blM
bou
cHX
cIc
-biL
+rFc
buj
btQ
bve
@@ -101033,7 +101208,7 @@ bou
cHT
bou
cId
-biL
+rFc
bsw
btU
bxe
@@ -102288,7 +102463,7 @@ avN
iBZ
asB
aCM
-aEg
+aEe
aFw
aHi
aHi
@@ -102831,7 +103006,7 @@ blI
bnn
dgS
bpZ
-uIv
+bve
bta
lxd
isc
@@ -103088,7 +103263,7 @@ blK
bnp
bng
boQ
-brx
+bxe
bro
gLd
suU
@@ -103345,7 +103520,7 @@ blJ
bno
boA
bpZ
-bqf
+bxd
brn
gLd
qea
@@ -103602,7 +103777,7 @@ bka
blZ
bnk
bpo
-bqk
+bvg
brn
gLd
gwd
@@ -104643,7 +104818,7 @@ rYJ
rYJ
bFW
rYJ
-qQC
+rYJ
dCN
bLi
bMz
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 0f72002ad7f..ee6705d4d7e 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -91905,7 +91905,6 @@
"dpg" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
-/obj/structure/cable,
/turf/open/floor/plating,
/area/medical/chemistry)
"dph" = (
@@ -115153,7 +115152,6 @@
dir = 4
},
/obj/structure/cable,
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/medical/surgery/room_b)
"rOf" = (
@@ -116223,7 +116221,6 @@
"wZq" = (
/obj/effect/landmark/start/medical_doctor,
/obj/structure/cable,
-/obj/structure/cable,
/turf/open/floor/plasteel/white,
/area/medical/surgery/room_b)
"xaf" = (
diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm
index 5b0050a85e3..f8ae940db42 100644
--- a/_maps/map_files/Donutstation/Donutstation.dmm
+++ b/_maps/map_files/Donutstation/Donutstation.dmm
@@ -32318,7 +32318,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
-/obj/structure/cable,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -45955,13 +45954,6 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engine_room/external)
-"dpq" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
"dtB" = (
/obj/item/trash/can,
/turf/open/floor/plating,
@@ -73951,7 +73943,7 @@ bkk
bqn
aAJ
bYr
-dpq
+ovO
cbH
aGE
aRz
diff --git a/_maps/map_files/Donutstation/Donutstation_LVL2.dmm b/_maps/map_files/Donutstation/Donutstation_LVL2.dmm
index 1e92ad7c834..d2ab22496ab 100644
--- a/_maps/map_files/Donutstation/Donutstation_LVL2.dmm
+++ b/_maps/map_files/Donutstation/Donutstation_LVL2.dmm
@@ -4717,7 +4717,6 @@
/area/ai_monitored/turret_protected/ai)
"kq" = (
/obj/structure/cable,
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 3361dc2bed3..7d123f7f74b 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -7758,6 +7758,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"apB" = (
@@ -10018,11 +10021,10 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"auJ" = (
-/obj/structure/grille,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/window/reinforced/tinted/fulltile,
+/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"auK" = (
@@ -10050,6 +10052,14 @@
/mob/living/simple_animal/hostile/retaliate/goose/vomit,
/turf/open/floor/wood,
/area/maintenance/port/aft)
+"auT" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"auU" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -10428,6 +10438,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"avI" = (
@@ -10476,7 +10487,13 @@
},
/area/maintenance/port/fore)
"avN" = (
-/obj/item/hand_labeler_refill,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/maintenance/port/fore)
"avO" = (
@@ -10496,11 +10513,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/door/airlock/maintenance{
- req_one_access_txt = "12;50"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
+/turf/closed/wall,
/area/maintenance/port/fore)
"avR" = (
/obj/structure/disposalpipe/sorting/mail/flip{
@@ -10510,9 +10523,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
/obj/structure/cable,
/turf/open/floor/plating,
/area/maintenance/port/fore)
@@ -10850,33 +10860,24 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"awQ" = (
-/obj/effect/turf_decal/stripes/line,
+/obj/machinery/door/airlock/maintenance{
+ name = "Mining Dock Maintenance";
+ req_access_txt = "48"
+ },
/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/area/quartermaster/miningoffice)
"awS" = (
/obj/structure/closet/crate,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port/fore)
-"awT" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
-"awU" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
"awV" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"awW" = (
@@ -11410,29 +11411,33 @@
/turf/closed/wall,
/area/quartermaster/miningoffice)
"ayk" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Dock Maintenance";
- req_access_txt = "48"
+/obj/machinery/power/apc{
+ name = "Mining APC";
+ pixel_y = 3;
+ areastring = "/area/quartermaster/miningoffice";
+ dir = 1;
+ pixel_x = -30
},
/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
"ayl" = (
-/turf/closed/wall,
-/area/quartermaster/warehouse)
+/obj/structure/closet/emcloset,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
"aym" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Cargo Bay Warehouse Maintenance";
- req_one_access_txt = "31;48"
- },
-/obj/structure/disposalpipe/segment,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
/turf/open/floor/plating,
/area/maintenance/port/fore)
"ayn" = (
-/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
+/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"ayo" = (
@@ -11771,43 +11776,6 @@
/turf/open/floor/plating/airless,
/area/space/nearstation)
"azj" = (
-/obj/item/stack/ore/iron,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"azk" = (
-/obj/structure/closet/crate,
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/item/radio/intercom{
- dir = 4;
- pixel_x = 27
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"azl" = (
-/obj/structure/closet/emcloset,
-/obj/machinery/status_display/supply{
- pixel_y = 32
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"azm" = (
/obj/structure/closet/crate,
/obj/item/flashlight{
pixel_x = 1;
@@ -11825,60 +11793,59 @@
pixel_x = 3;
pixel_y = -7
},
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
},
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"azk" = (
+/obj/structure/closet/crate,
+/obj/machinery/light/small{
dir = 4
},
+/obj/item/radio/intercom{
+ dir = 4;
+ pixel_x = 27
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"azl" = (
+/obj/structure/closet/secure_closet/miner,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"azm" = (
+/obj/structure/closet/secure_closet/miner,
+/obj/item/clothing/suit/hooded/wintercoat/miner,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"azn" = (
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/miningoffice";
- dir = 1;
- name = "Mining APC";
- pixel_y = 23
+/obj/structure/closet/secure_closet/miner,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
},
-/obj/machinery/light_switch{
- pixel_y = 38
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
},
-/obj/structure/closet/wardrobe/miner,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"azo" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"azp" = (
-/obj/structure/rack,
-/obj/item/storage/toolbox/emergency{
- pixel_x = 2;
- pixel_y = -3
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
},
-/obj/item/storage/toolbox/emergency,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
+/area/maintenance/port/fore)
"azr" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -11891,36 +11858,26 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"azs" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/machinery/door/airlock/maintenance{
+ name = "Mining Dock Maintenance";
+ req_access_txt = "48"
},
-/obj/structure/sink/kitchen{
- desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
- name = "old sink";
- pixel_y = 28
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/obj/machinery/door/firedoor,
+/turf/open/floor/plating,
+/area/quartermaster/miningoffice)
"azt" = (
-/obj/machinery/airalarm{
- pixel_y = 28
+/obj/structure/disposalpipe/segment{
+ dir = 6
},
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"azu" = (
+/obj/structure/cable,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"azu" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
"azv" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -12389,95 +12346,64 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
+/obj/machinery/door/firedoor,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aAE" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aAF" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 4
- },
+/obj/effect/landmark/start/shaft_miner,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aAG" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 10
+/obj/machinery/light_switch{
+ pixel_y = 38;
+ pixel_x = 28
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
-"aAH" = (
+"aAI" = (
+/obj/machinery/holopad,
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"aAJ" = (
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"aAK" = (
/obj/effect/landmark/start/shaft_miner,
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
-"aAI" = (
-/obj/machinery/button/door{
- id = "qm_mine_warehouse";
- name = "Warehouse Door Control";
- pixel_x = 24;
- pixel_y = 28;
- req_access_txt = "48"
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"aAJ" = (
-/obj/machinery/door/poddoor/shutters{
- id = "qm_mine_warehouse";
- name = "Warehouse Shutters"
- },
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"aAK" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/button/door{
- id = "qm_mine_warehouse";
- name = "Warehouse Door Control";
- pixel_x = -24;
- pixel_y = 28;
- req_access_txt = "48"
- },
-/obj/effect/turf_decal/loading_area{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
"aAL" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aAM" = (
-/obj/structure/closet/crate,
-/obj/effect/spawner/lootdrop/maintenance/three,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aAN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aAO" = (
-/obj/structure/closet/crate,
-/obj/structure/extinguisher_cabinet{
- pixel_x = 27
+/obj/machinery/door/airlock/maintenance{
+ name = "Mining Dock Maintenance";
+ req_access_txt = "48"
+ },
+/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/turf/open/floor/plating,
+/area/quartermaster/miningoffice)
+"aAN" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aAO" = (
+/obj/machinery/mineral/equipment_vendor,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
},
-/obj/effect/spawner/lootdrop/maintenance/three,
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/area/quartermaster/miningoffice)
"aAP" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -12931,6 +12857,19 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
+/obj/structure/rack,
+/obj/item/shovel{
+ pixel_x = -5
+ },
+/obj/item/pickaxe{
+ pixel_x = 5
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aBT" = (
@@ -12940,6 +12879,12 @@
dir = 8
},
/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aBU" = (
@@ -12947,73 +12892,54 @@
/turf/closed/wall,
/area/quartermaster/miningoffice)
"aBV" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/holopad,
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"aBW" = (
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"aBX" = (
-/obj/item/radio/intercom{
- dir = 4;
- pixel_x = 27
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
-/obj/machinery/camera{
- c_tag = "Mining Office";
- dir = 8
- },
-/obj/machinery/mineral/equipment_vendor,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
+"aBW" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"aBX" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
"aBY" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 27
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"aBZ" = (
+/obj/item/hand_labeler_refill,
+/obj/structure/disposalpipe/segment{
dir = 6
},
-/obj/item/storage/box/donkpockets,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aBZ" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aCa" = (
-/obj/structure/closet/crate/freezer,
-/obj/effect/spawner/lootdrop/maintenance/three,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aCb" = (
-/obj/structure/closet/crate,
-/obj/item/stack/ore/glass,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aCc" = (
/obj/structure/rack,
-/obj/item/electronics/apc,
-/obj/item/stock_parts/cell{
- maxcharge = 2000
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aCc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = 24
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
},
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/area/maintenance/port/fore)
"aCd" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/bot_white/right,
@@ -13399,87 +13325,71 @@
/turf/closed/wall,
/area/construction/mining/aux_base)
"aDh" = (
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = -24
- },
/obj/machinery/light{
dir = 8
},
-/obj/machinery/computer/shuttle/mining{
- dir = 4;
- req_access = null
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/machinery/status_display/evac{
+ pixel_x = -32
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aDi" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/landmark/start/shaft_miner,
+/obj/structure/closet/crate,
+/obj/item/flashlight{
+ pixel_x = 1;
+ pixel_y = 5
+ },
+/obj/item/flashlight{
+ pixel_x = 1;
+ pixel_y = 5
+ },
+/obj/item/stock_parts/cell/high{
+ charge = 100;
+ maxcharge = 15000
+ },
+/obj/item/stack/cable_coil{
+ pixel_x = 3;
+ pixel_y = -7
+ },
+/obj/machinery/requests_console{
+ department = "Mining";
+ pixel_y = -30
+ },
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aDj" = (
-/obj/structure/closet/secure_closet/miner,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"aDk" = (
+/obj/structure/table,
+/obj/item/storage/toolbox/emergency,
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
+ },
/obj/machinery/airalarm{
dir = 8;
pixel_x = 24
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
-"aDk" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
"aDl" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
- },
-/obj/structure/closet/crate,
-/obj/effect/spawner/lootdrop/maintenance/three,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/maintenance/port/fore)
"aDm" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/landmark/start/cargo_technician,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/obj/structure/disposalpipe/segment,
+/obj/structure/safe/floor,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
"aDn" = (
-/obj/item/stack/sheet/cardboard,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aDo" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/structure/light_construct/small{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/obj/structure/disposalpipe/segment,
+/obj/structure/grille,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
"aDp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
@@ -13975,107 +13885,43 @@
/turf/open/floor/engine,
/area/engine/engineering)
"aEt" = (
-/obj/structure/table,
-/obj/machinery/microwave{
- pixel_x = -3;
- pixel_y = 6
+/obj/machinery/firealarm{
+ pixel_y = 1;
+ pixel_x = 30
},
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/machinery/light_switch{
- pixel_y = 28
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aEv" = (
-/obj/machinery/computer/security/mining{
+/obj/machinery/light{
dir = 4
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
+"aEv" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/closed/wall,
+/area/maintenance/port/fore)
"aEw" = (
-/obj/structure/chair/office{
+/obj/effect/landmark/start/shaft_miner,
+/obj/machinery/camera{
+ c_tag = "Mining Office";
dir = 8
},
-/obj/effect/landmark/start/shaft_miner,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aEx" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"aEy" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aEz" = (
-/obj/structure/closet/secure_closet/miner,
-/obj/structure/extinguisher_cabinet{
+/obj/item/radio/intercom{
+ dir = 4;
pixel_x = 27
},
-/obj/item/clothing/suit/hooded/wintercoat/miner,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
-"aEA" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/loading_area{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aEB" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/button/door{
- id = "qm_warehouse";
- name = "Warehouse Door Control";
- pixel_y = -24;
- req_access_txt = "31"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aED" = (
-/obj/structure/closet/crate/internals,
-/obj/effect/spawner/lootdrop/maintenance/three,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
-"aEE" = (
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/warehouse";
- dir = 4;
- name = "Warehouse APC";
- pixel_x = 24
- },
-/obj/effect/landmark/blobstart,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
"aEF" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -14446,94 +14292,82 @@
/turf/open/floor/plasteel/cult,
/area/library)
"aFF" = (
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/item/pen,
-/obj/machinery/requests_console{
- department = "Mining";
- pixel_y = -30
+/obj/machinery/computer/shuttle/mining{
+ dir = 1;
+ req_access = null
},
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aFG" = (
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
+/obj/machinery/computer/security/mining{
+ dir = 1
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aFH" = (
-/obj/structure/rack,
-/obj/item/pickaxe{
- pixel_x = 5
- },
-/obj/item/shovel{
- pixel_x = -5
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aFI" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/machinery/door/airlock/mining{
+ name = "Mining Office";
+ req_access_txt = "48"
},
/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aFJ" = (
-/obj/structure/closet/secure_closet/miner,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/machinery/door/airlock/mining{
+ name = "Mining Office";
+ req_access_txt = "48"
},
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aFK" = (
-/obj/machinery/door/poddoor/shutters{
- id = "qm_warehouse";
- name = "Warehouse Shutters"
+/obj/machinery/computer/security/mining{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/radio/intercom{
+ pixel_y = -12;
+ dir = 4;
+ pixel_x = -26
+ },
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/area/security/checkpoint/supply)
"aFL" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/closed/wall,
-/area/quartermaster/warehouse)
-"aFM" = (
-/obj/machinery/door/airlock/maintenance{
- req_one_access_txt = "12;63;48;50"
+/obj/structure/chair/office,
+/obj/machinery/requests_console{
+ department = "Security";
+ departmentType = 5;
+ pixel_y = 30
},
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/effect/landmark/start/depsec/supply,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
"aFN" = (
/turf/closed/wall,
/area/construction/storage_wing)
@@ -14557,38 +14391,33 @@
dir = 8
},
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
/turf/open/floor/plasteel/dark,
/area/construction/storage_wing)
"aFV" = (
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = -26
- },
-/obj/machinery/camera{
- c_tag = "Storage Wing - Security Access Door";
- dir = 4
- },
-/obj/machinery/light/small{
- dir = 8
- },
/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
+/obj/structure/flora/stump,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
"aFW" = (
/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
-"aFX" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
- },
/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
-"aFY" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aFX" = (
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
},
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/miningoffice)
+"aFY" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security{
name = "Security-Storage Backroom";
@@ -14598,9 +14427,6 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/fore)
"aFZ" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/effect/turf_decal/tile/red{
dir = 8
},
@@ -14608,9 +14434,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGb" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/structure/extinguisher_cabinet{
pixel_y = -30
},
@@ -14621,9 +14444,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGd" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/machinery/firealarm{
dir = 1;
pixel_y = -24
@@ -14635,9 +14455,6 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGf" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/machinery/power/apc/highcap/five_k{
areastring = "/area/hallway/primary/fore";
name = "Fore Primary Hallway APC";
@@ -14651,34 +14468,41 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGg" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/effect/turf_decal/tile/red{
dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGh" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/item/radio/intercom{
pixel_y = -26
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposaloutlet{
+ dir = 4;
+ name = "Cargo Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGj" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGk" = (
@@ -14689,10 +14513,10 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGl" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
- },
/obj/effect/turf_decal/tile/red,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGm" = (
@@ -15067,192 +14891,130 @@
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"aHc" = (
-/obj/effect/spawner/structure/window,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plating,
-/area/quartermaster/miningoffice)
-"aHd" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining{
- name = "Mining Office";
- req_access_txt = "48"
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/miningoffice)
-"aHe" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aHf" = (
-/obj/machinery/button/door{
- id = "qm_warehouse";
- name = "Warehouse Door Control";
- pixel_y = 24;
- req_access_txt = "31"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aHg" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/structure/filingcabinet,
+/obj/effect/turf_decal/trimline/red/filled/line{
dir = 10
},
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aHh" = (
-/obj/machinery/firealarm{
- pixel_y = 27
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aHi" = (
-/obj/machinery/light_switch{
- pixel_y = 28
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aHj" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining{
- name = "Cargo Bay";
- req_one_access_txt = "31;48"
- },
-/obj/effect/turf_decal/delivery,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+/area/security/checkpoint/supply)
+"aHe" = (
+/obj/machinery/computer/secure_data{
dir = 4
},
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 4
+ },
+/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/construction/storage_wing)
+/area/security/checkpoint/supply)
+"aHf" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"aHg" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"aHh" = (
+/obj/machinery/power/apc{
+ name = "Security Post - Cargo Bay APC";
+ pixel_y = 5;
+ areastring = "/area/security/checkpoint/supply";
+ dir = 1;
+ pixel_x = 27
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"aHj" = (
+/obj/structure/closet/secure_closet/security/cargo,
+/obj/machinery/airalarm{
+ pixel_y = 23
+ },
+/obj/effect/turf_decal/trimline/red/filled/line,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
"aHk" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aHl" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/closet,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aHm" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aHn" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/rack,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aHp" = (
+/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aHl" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/structure/sign/warning/securearea{
- pixel_y = 30
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aHm" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining{
- name = "Cargo Bay";
- req_one_access_txt = "31;48"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aHn" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aHo" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aHp" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/construction/storage_wing)
"aHq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/construction/storage_wing)
"aHs" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/construction/storage_wing)
"aHt" = (
-/obj/machinery/vending/cigarette,
-/obj/machinery/newscaster{
- pixel_y = 32
- },
-/obj/machinery/airalarm{
- dir = 8;
- pixel_x = 24
- },
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/construction/storage_wing)
"aHu" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/construction/storage_wing)
"aHv" = (
-/obj/structure/chair/office,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
-"aHw" = (
-/obj/structure/table,
-/obj/machinery/recharger,
+/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/construction/storage_wing)
+"aHw" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aHx" = (
/turf/closed/wall/r_wall,
@@ -15267,6 +15029,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aHA" = (
@@ -15492,11 +15255,6 @@
/turf/open/floor/plating,
/area/quartermaster/storage)
"aIh" = (
-/obj/item/radio/intercom{
- dir = 4;
- pixel_x = -28;
- pixel_y = 23
- },
/obj/machinery/status_display/supply{
pixel_y = 32
},
@@ -15504,165 +15262,110 @@
dir = 5;
id = "QMLoad2"
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/quartermaster/storage)
"aIi" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/loading_area{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIj" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 5
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIk" = (
-/obj/structure/sign/map/left{
- desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown).";
- icon_state = "map-left-MS";
- pixel_y = 32
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIl" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
+/obj/item/radio/intercom{
+ pixel_y = 27;
+ dir = 4;
+ pixel_x = 1
},
/obj/machinery/camera{
c_tag = "Cargo Bay - Fore"
},
-/obj/structure/sign/map/right{
- desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown).";
- icon_state = "map-right-MS";
- pixel_y = 32
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIm" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/effect/turf_decal/stripes/corner{
+/obj/machinery/light{
dir = 1
},
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"aIj" = (
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"aIk" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aIn" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/structure/table/reinforced,
+/obj/machinery/recharger{
+ pixel_y = 4
},
-/obj/structure/disposalpipe/segment{
- dir = 10
+/obj/item/radio/off{
+ pixel_y = -3;
+ pixel_x = -11
},
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIo" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
-/obj/effect/turf_decal/stripes/corner,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIp" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIq" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aIr" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/mining{
- name = "Cargo Bay";
- req_one_access_txt = "31;48"
- },
-/obj/effect/turf_decal/delivery,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aIs" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aIt" = (
-/obj/machinery/camera{
- c_tag = "Cargo Bay - Storage Wing Entrance";
+/obj/effect/turf_decal/trimline/red/filled/line{
dir = 1
},
-/obj/effect/turf_decal/stripes/line{
- dir = 6
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"aIo" = (
+/obj/structure/table/reinforced,
+/obj/item/paper_bin{
+ pixel_x = 1;
+ pixel_y = 9
+ },
+/obj/item/pen{
+ pixel_x = 1;
+ pixel_y = 9
+ },
+/obj/item/book/manual/wiki/security_space_law,
+/obj/machinery/camera{
+ c_tag = "Security Post - Cargo";
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 5
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"aIp" = (
+/obj/structure/reagent_dispensers/peppertank{
+ pixel_x = 30
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"aIr" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 5
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 5
},
/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aIu" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/machinery/power/apc{
- areastring = "/area/construction/storage_wing";
- name = "Storage Wing APC";
- pixel_y = -23
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/area/hallway/primary/fore)
+"aIs" = (
/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aIu" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
"aIv" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
@@ -15671,108 +15374,83 @@
},
/area/maintenance/starboard/fore)
"aIw" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/construction/storage_wing)
"aIx" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/item/radio/intercom{
- pixel_y = -26
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ areastring = "/area/construction/storage_wing";
+ name = "Storage Wing APC";
+ pixel_y = -23
},
-/obj/machinery/camera{
- c_tag = "Storage Wing";
- dir = 1
- },
-/obj/machinery/light,
-/obj/effect/landmark/event_spawn,
-/obj/effect/turf_decal/tile/brown{
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/construction/storage_wing)
"aIz" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/machinery/light{
dir = 4
},
-/obj/machinery/navbeacon{
- codes_txt = "patrol;next_patrol=2.2-Leaving-Storage";
- location = "2.1-Storage"
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aIA" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/construction/storage_wing)
-"aIB" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
-"aIC" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/machinery/door/airlock/security{
- name = "Security-Storage Backroom";
- req_access_txt = "63"
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
-"aID" = (
+"aIA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
+/turf/closed/wall,
+/area/construction/storage_wing)
+"aIB" = (
/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aIC" = (
+/obj/machinery/door/airlock/maintenance{
+ req_one_access_txt = "12;63;48;50"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
+"aID" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"aIE" = (
-/obj/structure/table,
-/obj/item/folder/red,
-/obj/item/restraints/handcuffs,
-/obj/machinery/newscaster/security_unit{
- pixel_y = -30
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 8
},
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
-"aIF" = (
-/obj/machinery/light/small,
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/machinery/airalarm{
- dir = 1;
- pixel_y = -22
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 8
},
/obj/structure/cable,
-/turf/open/floor/plasteel/dark,
-/area/hallway/primary/fore)
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aIF" = (
+/obj/item/kirbyplants/random,
+/turf/open/floor/plasteel,
+/area/storage/primary)
"aII" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aIJ" = (
@@ -16082,106 +15760,55 @@
dir = 1;
id = "QMLoad2"
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/quartermaster/storage)
-"aJD" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "QMLoad2";
- pixel_x = 6
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
"aJE" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aJF" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
},
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aJG" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 10
- },
-/obj/effect/landmark/event_spawn,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/security/checkpoint/supply)
"aJH" = (
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aJI" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 8
- },
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/security/checkpoint/supply)
"aJJ" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 10
+/obj/machinery/door/airlock/security/glass{
+ name = "Security Post - Cargo";
+ req_access_txt = "63"
},
-/obj/structure/window/reinforced{
- dir = 1;
- pixel_y = 1
- },
-/obj/effect/turf_decal/loading_area{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aJK" = (
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
- location = "QM #1"
- },
-/obj/machinery/door/window/northleft,
-/obj/machinery/light{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/mob/living/simple_animal/bot/mulebot{
- beacon_freq = 1400;
- home_destination = "QM #1";
- suffix = "#1"
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aJL" = (
+/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/door/airlock/maintenance{
- req_one_access_txt = "12;63;48;50"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
-"aJM" = (
-/obj/machinery/door/airlock/maintenance{
- req_one_access_txt = "12;63;48;50"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/security/checkpoint/supply)
+"aJK" = (
+/turf/closed/wall,
+/area/security/checkpoint/supply)
"aJN" = (
/turf/closed/wall,
/area/storage/primary)
@@ -16190,30 +15817,43 @@
/turf/open/floor/plating,
/area/storage/primary)
"aJP" = (
+/obj/effect/turf_decal/trimline/brown/filled/corner,
+/obj/effect/turf_decal/trimline/brown/filled/corner,
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Primary Tool Storage"
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aJQ" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Primary Tool Storage"
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aJQ" = (
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=8";
+ dir = 8;
+ freq = 1400;
+ location = "QM #2"
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
},
/turf/open/floor/plasteel,
/area/storage/primary)
"aJR" = (
-/turf/closed/wall/r_wall,
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=8";
+ dir = 8;
+ freq = 1400;
+ location = "QM #1"
+ },
+/mob/living/simple_animal/bot/mulebot{
+ beacon_freq = 1400;
+ home_destination = "QM #1";
+ suffix = "#1"
+ },
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
/area/storage/primary)
"aJS" = (
/turf/closed/wall/r_wall,
@@ -16225,6 +15865,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aJV" = (
@@ -16574,6 +16215,9 @@
dir = 4;
id = "QMLoad2"
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
/turf/open/floor/plating,
/area/quartermaster/storage)
"aKO" = (
@@ -16582,6 +16226,7 @@
dir = 4;
id = "QMLoad2"
},
+/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/quartermaster/storage)
"aKP" = (
@@ -16589,13 +16234,10 @@
dir = 10;
id = "QMLoad2"
},
-/turf/open/floor/plating,
-/area/quartermaster/storage)
-"aKQ" = (
/obj/effect/turf_decal/stripes/line{
- dir = 8
+ dir = 6
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/quartermaster/storage)
"aKR" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
@@ -16604,183 +16246,159 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aKS" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
},
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aKT" = (
-/obj/structure/closet/crate,
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 4
- },
-/obj/item/stack/ore/glass,
-/obj/item/stack/ore/iron,
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aKU" = (
+/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
+ dir = 4
},
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aKV" = (
-/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+ dir = 9
},
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aKW" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+/obj/effect/turf_decal/trimline/red/filled/corner{
dir = 4
},
+/obj/machinery/firealarm{
+ pixel_y = 27
+ },
+/obj/machinery/light{
+ dir = 1
+ },
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aKX" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/loading_area{
- dir = 8
+/obj/effect/turf_decal/trimline/red/filled/line{
+ dir = 1
},
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aKY" = (
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
- location = "QM #2"
+/obj/machinery/button/door{
+ name = "Warehouse Door Control";
+ pixel_y = 1;
+ id = "qm_warehouse";
+ pixel_x = 28;
+ req_access_txt = "31"
},
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/window/eastright{
- name = "MULEbot Access";
- req_one_access_txt = "31;48"
- },
-/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aKZ" = (
-/obj/structure/plasticflaps/opaque,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/machinery/microwave{
+ pixel_y = 6;
+ pixel_x = 0
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"aLa" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 5
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/item/reagent_containers/food/drinks/waterbottle/large{
+ pixel_y = 20;
+ pixel_x = 5
},
-/obj/effect/turf_decal/stripes/line{
- dir = 9
+/obj/item/reagent_containers/food/drinks/waterbottle{
+ pixel_y = 6;
+ pixel_x = 7
},
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/item/trash/plate{
+ pixel_x = -9
+ },
+/obj/item/storage/box/donkpockets{
+ pixel_y = 9;
+ pixel_x = -9
+ },
+/obj/item/reagent_containers/food/drinks/waterbottle{
+ pixel_x = 7
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"aLb" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate/freezer,
+/obj/structure/sink/kitchen{
+ desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
+ name = "old sink";
+ pixel_y = 28
},
-/obj/effect/landmark/blobstart,
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"aLc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/official/random{
+ pixel_y = 32
+ },
+/obj/structure/closet/crate{
+ icon_state = "crateopen"
+ },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"aLd" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/maintenance/port)
"aLe" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light_switch{
+ pixel_y = 27;
+ pixel_x = 8
},
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
-"aLf" = (
-/obj/structure/table,
-/obj/item/clothing/gloves/color/fyellow,
-/obj/item/gps{
- gpstag = "AUX0"
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"aLg" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 4
},
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
/turf/open/floor/plasteel,
-/area/storage/primary)
-"aLg" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/construction/storage_wing)
"aLh" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/machinery/door/airlock/mining{
+ name = "Automated Delivery";
+ req_one_access_txt = "31;48"
},
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aLi" = (
-/obj/structure/table,
-/obj/item/stack/cable_coil{
- pixel_x = 2;
- pixel_y = -2
- },
-/obj/item/stack/cable_coil{
- pixel_x = 3;
- pixel_y = 5
- },
-/obj/item/screwdriver{
- pixel_y = 16
- },
-/obj/item/stock_parts/cell/high{
- charge = 100;
- maxcharge = 15000
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/storage/primary)
"aLj" = (
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/cell/high{
- charge = 100;
- maxcharge = 15000
- },
-/obj/machinery/light_switch{
- pixel_y = 28
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
@@ -16794,37 +16412,27 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aLl" = (
-/obj/machinery/vending/tool,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/structure/plasticflaps/opaque,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/storage/primary)
"aLm" = (
-/obj/structure/table,
-/obj/item/assembly/signaler,
-/obj/item/assembly/signaler,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
dir = 4
},
-/turf/open/floor/plasteel,
-/area/storage/primary)
+/obj/structure/cable,
+/turf/open/floor/plating{
+ icon_state = "platingdmg1"
+ },
+/area/maintenance/port/fore)
"aLn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/closed/wall/r_wall,
-/area/storage/primary)
+/area/maintenance/port/fore)
"aLo" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -16916,6 +16524,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aLz" = (
@@ -17243,94 +16852,97 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aMv" = (
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aMw" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aMx" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/landmark/start/cargo_technician,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aMy" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 1
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
},
-/obj/effect/turf_decal/loading_area{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
+"aMy" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"aMz" = (
+/obj/machinery/door/poddoor/shutters{
+ id = "qm_warehouse";
+ name = "Warehouse Shutters"
+ },
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"aMA" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aMB" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aMC" = (
+/obj/machinery/door/airlock/mining{
+ name = "Automated Delivery";
+ req_one_access_txt = "31;48"
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"aMD" = (
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"aME" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
dir = 8;
freq = 1400;
- location = "QM #3"
+ location = "QM #4"
},
/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/mob/living/simple_animal/bot/mulebot{
- home_destination = "QM #3";
- suffix = "#3"
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aMA" = (
-/obj/machinery/camera/autoname{
- dir = 4
- },
-/obj/structure/rack,
-/obj/item/storage/toolbox/electrical{
- pixel_x = 1;
- pixel_y = -1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aMB" = (
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aMC" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aMD" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aME" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
},
/turf/open/floor/plasteel,
/area/storage/primary)
"aMF" = (
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = 24
+/obj/machinery/door/poddoor{
+ id = "QMLoaddoor2";
+ name = "Supply Dock Loading Door"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 9
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "QMLoad2"
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plating,
+/area/quartermaster/storage)
"aMG" = (
/obj/structure/table,
/obj/item/aiModule/core/full/asimov,
@@ -17382,6 +16994,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aMK" = (
@@ -17794,154 +17407,82 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aNF" = (
-/obj/effect/landmark/start/cargo_technician,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aNG" = (
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aNH" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 8
+/obj/machinery/door/airlock/mining{
+ name = "Warehouse";
+ req_one_access_txt = "31;48"
+ },
+/obj/effect/mapping_helpers/airlock/abandoned,
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"aNH" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
},
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aNI" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
dir = 4
},
/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aNJ" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/arrow_cw{
+ dir = 9
},
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aNK" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 4;
+ pixel_x = -16
},
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/stripes/corner,
+/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aNL" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/window/reinforced,
-/obj/effect/turf_decal/loading_area{
- dir = 8
+/obj/effect/turf_decal/trimline/brown/arrow_cw{
+ dir = 1
},
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aNM" = (
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
- location = "QM #4"
+/obj/machinery/door/poddoor/shutters{
+ id = "qm_warehouse";
+ name = "Warehouse Shutters"
},
-/obj/machinery/door/window/southleft,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+/obj/effect/turf_decal/loading_area{
dir = 4
},
-/obj/effect/turf_decal/delivery,
/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aNN" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/quartermaster/qm)
-"aNO" = (
-/obj/structure/closet/secure_closet/quartermaster,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aNP" = (
-/obj/machinery/camera/autoname,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
- },
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/qm";
- dir = 1;
- name = "Quartermaster's Office APC";
- pixel_y = 23
- },
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aNQ" = (
-/obj/machinery/airalarm{
- pixel_y = 23
- },
-/obj/machinery/light{
- dir = 1
- },
-/obj/machinery/computer/bounty,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aNR" = (
-/obj/structure/table,
-/obj/item/cartridge/quartermaster{
- pixel_x = -4;
- pixel_y = 7
- },
-/obj/item/cartridge/quartermaster{
- pixel_x = 6;
- pixel_y = 5
- },
-/obj/item/cartridge/quartermaster,
-/obj/item/gps{
- gpstag = "QM0"
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/bot,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aNS" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
@@ -17952,55 +17493,65 @@
},
/area/maintenance/starboard/fore)
"aNT" = (
-/obj/structure/window/reinforced{
- dir = 1;
- pixel_y = 1
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
},
-/obj/structure/closet/crate/internals,
-/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/construction/storage_wing)
"aNU" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/storage)
"aNV" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light_switch{
+ pixel_y = 26;
+ pixel_x = -24
+ },
+/obj/machinery/button/door{
+ name = "Warehouse Door Control";
+ pixel_y = 33;
+ id = "qm_warehouse";
+ pixel_x = -25;
+ req_access_txt = "31"
+ },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aNW" = (
+/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aNX" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/start/cargo_technician,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
+ dir = 9
},
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aNY" = (
-/obj/structure/table,
-/obj/item/assembly/igniter{
- pixel_x = -4;
- pixel_y = -4
- },
-/obj/item/assembly/igniter,
-/obj/item/screwdriver{
- pixel_y = 16
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate,
+/obj/effect/turf_decal/bot,
+/obj/item/electronics/apc,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aNZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
@@ -18470,165 +18021,111 @@
/turf/open/floor/plating,
/area/quartermaster/storage)
"aPe" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
+/obj/machinery/rnd/production/techfab/department/cargo,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aPf" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/turf/closed/wall,
+/area/quartermaster/warehouse)
"aPg" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -26
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining/glass{
- name = "Quartermaster";
- req_access_txt = "41"
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aPh" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
+/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 9
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/qm)
-"aPi" = (
-/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
-"aPj" = (
-/obj/effect/landmark/start/quartermaster,
-/obj/structure/disposalpipe/segment{
+/area/quartermaster/warehouse)
+"aPi" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
-/obj/structure/chair/office{
- dir = 4
- },
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
-"aPk" = (
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/item/pen{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/item/pen/red,
-/obj/machinery/requests_console{
- department = "Cargo Bay";
- departmentType = 2;
- pixel_x = 32
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aPl" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 28
},
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
-"aPm" = (
-/obj/structure/plasticflaps/opaque,
-/obj/machinery/navbeacon{
- codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Tool Storage"
- },
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/storage/primary)
-"aPn" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aPo" = (
/obj/structure/table,
-/obj/item/weldingtool,
-/obj/item/crowbar,
-/obj/item/stack/packageWrap,
-/obj/item/stack/packageWrap,
-/obj/item/stack/packageWrap,
-/obj/item/stack/packageWrap,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown,
-/turf/open/floor/plasteel,
+/obj/item/storage/toolbox/mechanical{
+ pixel_y = 10;
+ pixel_x = -2
+ },
+/obj/item/storage/toolbox/mechanical{
+ pixel_y = 2;
+ pixel_x = -2
+ },
+/obj/machinery/light_switch{
+ pixel_y = 28
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line,
+/obj/effect/turf_decal/trimline/neutral/filled/line,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aPp" = (
+/obj/structure/sign/poster/official/random{
+ pixel_y = 32
+ },
/obj/structure/table,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -2;
- pixel_y = -1
+/obj/item/analyzer,
+/obj/item/screwdriver{
+ pixel_y = 20
},
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/trimline/neutral/filled/line,
+/obj/effect/turf_decal/trimline/neutral/filled/line,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aPq" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/bot,
+/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aPr" = (
-/obj/structure/table,
-/obj/item/wirecutters,
-/obj/item/flashlight{
- pixel_x = 1;
- pixel_y = 5
+/obj/machinery/navbeacon{
+ codes_txt = "delivery;dir=8";
+ dir = 8;
+ freq = 1400;
+ location = "QM #3"
},
-/obj/machinery/requests_console{
- department = "Tool Storage";
- pixel_x = 30
+/mob/living/simple_animal/bot/mulebot{
+ home_destination = "QM #3";
+ suffix = "#3"
},
/obj/machinery/light{
dir = 4
},
-/obj/machinery/camera{
- c_tag = "Tool Storage";
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
},
/turf/open/floor/plasteel,
/area/storage/primary)
@@ -18941,6 +18438,9 @@
dir = 8;
id = "QMLoad"
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
/turf/open/floor/plating,
/area/quartermaster/storage)
"aQh" = (
@@ -18949,6 +18449,9 @@
dir = 8;
id = "QMLoad"
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/quartermaster/storage)
"aQi" = (
@@ -18956,143 +18459,121 @@
dir = 6;
id = "QMLoad"
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/quartermaster/storage)
"aQj" = (
-/obj/effect/landmark/start/cargo_technician,
-/obj/effect/turf_decal/delivery,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aQk" = (
-/obj/structure/closet/crate{
- icon_state = "crateopen"
- },
+/obj/machinery/holopad,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/spawner/lootdrop/maintenance/two,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aQl" = (
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aQm" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aQn" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aQo" = (
-/obj/structure/table,
-/obj/machinery/airalarm{
- dir = 8;
- pixel_x = 24
- },
-/obj/machinery/camera{
- c_tag = "Cargo Bay - Starboard";
- dir = 8
- },
-/obj/item/paper_bin{
- pixel_x = -1;
- pixel_y = 6
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aQp" = (
-/turf/closed/wall,
-/area/quartermaster/qm)
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/blobstart,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"aQq" = (
-/obj/machinery/light_switch{
- pixel_x = -23
- },
-/obj/machinery/computer/cargo{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
+"aQr" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/start/cargo_technician,
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
-"aQr" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aQs" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/holopad,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/item/airlock_painter/decal,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aQt" = (
-/obj/structure/table,
-/obj/item/clipboard,
-/obj/item/stamp/qm,
-/obj/machinery/status_display/supply{
- pixel_x = 32
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aQu" = (
-/obj/structure/closet/crate{
- icon_state = "crateopen"
+/obj/structure/cable,
+/obj/machinery/status_display/evac{
+ pixel_x = -32
},
-/obj/machinery/light{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/construction/storage_wing)
"aQv" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -2;
- pixel_y = -1
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aQw" = (
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/item/folder/yellow,
-/obj/item/storage/firstaid/regular,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aQx" = (
-/obj/machinery/holopad,
-/turf/open/floor/plasteel,
+/obj/structure/table,
+/obj/item/wrench,
+/obj/item/crowbar,
+/obj/item/stack/cable_coil{
+ pixel_y = 15;
+ pixel_x = 3
+ },
+/obj/item/stack/cable_coil{
+ pixel_y = 18;
+ pixel_x = 0
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 8
+ },
+/obj/machinery/requests_console{
+ department = "Tool Storage";
+ pixel_x = 30
+ },
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aQy" = (
-/obj/structure/table,
-/obj/item/radio/intercom{
- dir = 4;
- pixel_x = 27
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/bot,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/item/stock_parts/cell{
+ maxcharge = 2000
},
-/obj/item/t_scanner,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/item/clothing/gloves/color/fyellow,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aQz" = (
/obj/structure/table,
/obj/item/aiModule/reset,
@@ -19163,6 +18644,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aQF" = (
@@ -19595,134 +19077,107 @@
dir = 1;
id = "QMLoad"
},
-/turf/open/floor/plating,
-/area/quartermaster/storage)
-"aRI" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/chair/office{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aRJ" = (
-/obj/item/radio/intercom{
- dir = 4;
- pixel_x = 27
- },
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/item/folder/yellow,
-/obj/item/paper,
-/obj/item/paper,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/structure/cable,
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"aRI" = (
+/obj/structure/table,
+/obj/item/paper_bin{
+ pixel_y = 1;
+ pixel_x = 8
+ },
+/obj/item/paper_bin{
+ pixel_y = 6;
+ pixel_x = 8
+ },
+/obj/item/paper_bin{
+ pixel_y = 11;
+ pixel_x = 8
+ },
+/obj/item/folder/yellow{
+ pixel_y = 8;
+ pixel_x = -6
+ },
+/obj/item/folder/yellow{
+ pixel_y = 1;
+ pixel_x = -9
+ },
+/obj/item/paper{
+ pixel_x = -5
+ },
+/obj/item/radio/intercom{
+ dir = 4;
+ pixel_x = 30
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aRK" = (
-/obj/machinery/computer/security/qm{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate/internals,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
+/area/quartermaster/warehouse)
"aRL" = (
-/obj/structure/chair/office{
- dir = 8
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/reagent_dispensers/watertank,
+/obj/machinery/power/apc{
+ areastring = "/area/quartermaster/warehouse";
+ dir = 4;
+ name = "Warehouse APC";
+ pixel_x = 24
},
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/obj/item/radio/intercom{
- pixel_y = -28
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/qm)
-"aRM" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
+/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/qm)
-"aRN" = (
-/obj/structure/table,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/item/paper_bin/carbon{
- pixel_x = -3;
- pixel_y = 7
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/qm)
-"aRO" = (
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
- dir = 1;
- pixel_y = 2
- },
-/obj/machinery/disposal/deliveryChute{
- dir = 4;
- name = "Crate Disposal Chute";
- pixel_x = -5;
- pixel_y = 2
- },
-/obj/machinery/door/window/westleft{
- base_state = "right";
- dir = 4;
- icon_state = "right";
- name = "Crate Disposal Chute"
- },
-/obj/structure/disposalpipe/trunk{
+/area/quartermaster/warehouse)
+"aRQ" = (
+/obj/structure/closet/crate/internals,
+/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/trimline/neutral/filled/end{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/end{
dir = 4
},
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aRP" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aRQ" = (
-/obj/structure/disposalpipe/junction{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aRR" = (
+/obj/machinery/holopad,
+/obj/structure/cable,
/obj/structure/disposalpipe/segment{
dir = 10
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aRS" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate{
+ icon_state = "crateopen"
},
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/warehouse)
"aRT" = (
/obj/machinery/flasher{
id = "AI";
@@ -20082,139 +19537,144 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"aSQ" = (
-/obj/machinery/conveyor_switch/oneway{
- dir = 8;
- id = "QMLoad";
- pixel_x = 6
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aSR" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aSS" = (
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
+/obj/effect/landmark/start/cargo_technician,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aST" = (
-/obj/structure/closet/crate,
-/obj/structure/disposalpipe/segment,
-/obj/effect/spawner/lootdrop/maintenance/three,
-/obj/effect/turf_decal/bot,
+/obj/effect/turf_decal/trimline/brown/arrow_cw{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aSU" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment{
dir = 5
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aSV" = (
-/obj/structure/disposalpipe/segment,
+/obj/structure/table,
+/obj/item/pen/red{
+ pixel_y = 15;
+ pixel_x = 8
+ },
+/obj/item/gps{
+ pixel_y = 10;
+ gpstag = "QM0";
+ pixel_x = -4
+ },
+/obj/item/pen/fountain{
+ pixel_y = 4;
+ pixel_x = 9
+ },
+/obj/item/pen/blue{
+ pixel_y = -3;
+ pixel_x = 3
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
/obj/structure/disposalpipe/segment{
- dir = 4
+ dir = 10
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
-"aSW" = (
-/obj/machinery/light{
- dir = 4
- },
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/status_display/supply{
- pixel_x = 32
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aSX" = (
-/turf/closed/wall,
-/area/security/checkpoint/supply)
"aSZ" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Tool Storage Maintenance";
- req_access_txt = "12"
- },
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port)
+/turf/closed/wall,
+/area/quartermaster/warehouse)
"aTa" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/construction/storage_wing)
"aTb" = (
/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aTc" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aTc" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aTd" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
},
/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aTe" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/structure/table,
+/obj/item/assembly/igniter{
+ pixel_y = -6;
+ pixel_x = -3
},
-/obj/structure/cable,
-/turf/open/floor/plasteel,
+/obj/item/assembly/igniter{
+ pixel_x = 9
+ },
+/obj/item/t_scanner{
+ pixel_y = 15;
+ pixel_x = -3
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 8
+ },
+/obj/item/radio/intercom{
+ dir = 4;
+ pixel_x = 27
+ },
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aTf" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/effect/turf_decal/trimline/brown/filled/corner{
dir = 4
},
-/obj/structure/cable,
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/construction/storage_wing)
"aTg" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
dir = 4
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/cable,
+/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/storage)
"aTh" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
+ },
/obj/structure/cable,
-/turf/open/floor/plating,
-/area/storage/primary)
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"aTi" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/highsecurity{
@@ -20610,195 +20070,203 @@
/turf/closed/wall,
/area/quartermaster/storage)
"aUf" = (
-/obj/machinery/light{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Cargo Bay - Port";
- dir = 4
- },
/obj/machinery/conveyor{
dir = 1;
id = "QMLoad"
},
-/turf/open/floor/plating,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aUg" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aUh" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aUi" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/firealarm{
+ pixel_y = 27
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"aUj" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/sign/map/left{
+ desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown).";
+ icon_state = "map-left-MS";
+ pixel_y = 32
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aUk" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/sign/map/right{
+ desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown).";
+ icon_state = "map-right-MS";
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aUl" = (
+/obj/effect/turf_decal/delivery,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aUm" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aUo" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aUp" = (
+/obj/structure/rack,
+/obj/item/storage/belt/utility,
+/obj/item/screwdriver{
+ pixel_y = 16
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel/dark,
+/area/storage/primary)
+"aUq" = (
+/obj/structure/rack,
+/obj/item/storage/box/shipping{
+ pixel_x = -6
+ },
+/obj/item/storage/box/lights/mixed{
+ pixel_x = 9
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
+/area/storage/primary)
+"aUr" = (
+/obj/structure/table,
+/obj/item/clothing/gloves/color/fyellow{
+ pixel_y = 9
+ },
+/obj/machinery/cell_charger{
+ pixel_x = -3
+ },
+/obj/item/stock_parts/cell/high{
+ maxcharge = 15000;
+ pixel_y = -2;
+ charge = 100;
+ pixel_x = -2
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel/dark,
+/area/storage/primary)
+"aUs" = (
+/obj/structure/table,
+/obj/item/storage/firstaid/regular{
+ pixel_y = -5;
+ pixel_x = 5
+ },
+/obj/item/wirecutters{
+ pixel_y = 25
+ },
+/obj/item/assembly/signaler{
+ pixel_y = 13;
+ pixel_x = -10
+ },
+/obj/item/assembly/signaler{
+ pixel_x = -8
+ },
+/obj/item/assembly/prox_sensor{
+ pixel_y = 12;
+ pixel_x = 0
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/corner{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 4
+ },
/obj/machinery/firealarm{
dir = 8;
pixel_x = 24
},
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/rnd/production/techfab/department/cargo,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aUj" = (
-/obj/structure/closet/secure_closet/security/cargo,
-/obj/machinery/light_switch{
- pixel_x = -25
- },
-/obj/machinery/airalarm{
- pixel_y = 23
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aUk" = (
-/obj/machinery/power/apc{
- areastring = "/area/security/checkpoint/supply";
- dir = 1;
- name = "Security Post - Cargo Bay APC";
- pixel_x = 1;
- pixel_y = 23
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aUl" = (
-/obj/item/screwdriver{
- pixel_y = 10
- },
-/obj/item/radio/off,
-/obj/machinery/light{
- dir = 1
- },
-/obj/machinery/requests_console{
- department = "Security";
- departmentType = 5;
- pixel_y = 30
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aUm" = (
-/obj/structure/filingcabinet,
-/obj/structure/reagent_dispensers/peppertank{
- pixel_x = 30
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aUo" = (
-/obj/structure/table,
-/obj/item/storage/belt/utility,
-/obj/machinery/airalarm{
- dir = 1;
- pixel_y = -22
- },
-/obj/item/storage/box/lights/mixed,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aUp" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aUq" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aUr" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aUs" = (
-/obj/structure/table,
-/obj/item/crowbar,
-/obj/item/assembly/prox_sensor{
- pixel_x = -8;
- pixel_y = 4
- },
-/obj/item/clothing/gloves/color/fyellow,
-/obj/machinery/light/small,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aUt" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/storage/primary)
-"aUu" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/light_switch{
- pixel_x = 28
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
dir = 4
},
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
},
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/quartermaster/storage)
+"aUu" = (
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"aUv" = (
/turf/closed/wall/r_wall,
/area/hallway/primary/central)
@@ -20915,6 +20383,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aUD" = (
@@ -21397,117 +20866,112 @@
},
/area/hallway/secondary/entry)
"aVG" = (
-/obj/machinery/status_display/supply,
-/turf/closed/wall,
+/obj/effect/turf_decal/trimline/brown/arrow_cw{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aVH" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/item/storage/firstaid/regular,
-/obj/effect/turf_decal/delivery,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aVJ" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
},
-/obj/effect/landmark/start/cargo_technician,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aVK" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aVL" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 10
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aVM" = (
+/obj/machinery/door/airlock/mining{
+ name = "Cargo Bay";
+ req_one_access_txt = "31;48"
+ },
+/obj/structure/cable,
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/security/glass{
- name = "Security Post - Cargo";
- req_access_txt = "63"
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aVN" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aVO" = (
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aVP" = (
-/obj/structure/chair/office,
-/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/obj/effect/landmark/start/depsec/supply,
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aVQ" = (
-/obj/item/radio/intercom{
- dir = 4;
- pixel_x = 27
- },
-/obj/machinery/computer/security/mining{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
+/area/construction/storage_wing)
+"aVN" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aVO" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aVP" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aVQ" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"aVR" = (
/obj/effect/spawner/structure/window,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/storage/primary)
"aVS" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Primary Tool Storage"
+/obj/structure/table,
+/obj/item/clothing/gloves/color/fyellow{
+ pixel_y = 6
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/item/clothing/gloves/color/fyellow{
+ pixel_x = 0
},
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/neutral/filled/corner{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/corner{
+ dir = 8
+ },
+/obj/machinery/light{
dir = 4
},
-/obj/structure/cable,
-/obj/machinery/navbeacon/wayfinding,
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"aVT" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Primary Tool Storage"
+/obj/machinery/door/airlock/maintenance{
+ req_one_access_txt = "12;63;48;50"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/structure/cable,
+/turf/open/floor/plating{
+ icon_state = "platingdmg1"
},
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/maintenance/port/fore)
"aVU" = (
/obj/structure/closet/firecloset,
/obj/effect/turf_decal/tile/neutral{
@@ -21638,6 +21102,7 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aWf" = (
@@ -22058,162 +21523,98 @@
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/entry)
"aXe" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "QMLoad"
- },
-/turf/open/floor/plating,
+/obj/machinery/vending/wardrobe/cargo_wardrobe,
+/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aXf" = (
-/obj/machinery/holopad,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aXg" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 5
- },
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aXh" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aXi" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aXj" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aXk" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aXl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/extinguisher_cabinet{
- pixel_x = 27
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
-"aXm" = (
+"aXi" = (
+/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/closed/wall,
-/area/security/checkpoint/supply)
-"aXn" = (
-/obj/machinery/recharger{
- pixel_y = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aXo" = (
-/obj/item/paper_bin{
- pixel_x = 1;
- pixel_y = 9
- },
-/obj/item/pen,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/machinery/camera{
- c_tag = "Security Post - Cargo";
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aXp" = (
-/obj/item/book/manual/wiki/security_space_law,
-/obj/machinery/newscaster{
- pixel_y = -32
- },
+/area/quartermaster/storage)
+"aXj" = (
+/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aXq" = (
-/obj/machinery/computer/secure_data{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/security/checkpoint/supply)
-"aXr" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 5
- },
-/obj/effect/landmark/blobstart,
+/area/quartermaster/storage)
+"aXk" = (
/obj/structure/cable,
-/turf/open/floor/plating{
- icon_state = "panelscorched"
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"aXl" = (
+/obj/machinery/door/poddoor{
+ id = "QMLoaddoor";
+ name = "Supply Dock Loading Door"
},
-/area/maintenance/port/fore)
-"aXs" = (
-/obj/item/trash/popcorn,
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "QMLoad"
+ },
+/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/turf/open/floor/plating,
+/area/quartermaster/storage)
+"aXm" = (
+/obj/machinery/mineral/ore_redemption,
+/turf/open/floor/plating,
+/area/construction/storage_wing)
+"aXn" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aXo" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aXp" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aXq" = (
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aXr" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"aXs" = (
/obj/structure/disposalpipe/segment{
dir = 6
},
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"aXt" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -22228,18 +21629,16 @@
/turf/open/floor/plating,
/area/maintenance/port)
"aXu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
+/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/door/airlock/maintenance{
- req_one_access_txt = "12;63;48;50"
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"aXv" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -22247,12 +21646,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/area/construction/storage_wing)
"aXw" = (
/obj/structure/disposalpipe/segment{
dir = 10
@@ -22260,9 +21656,6 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
@@ -22271,41 +21664,47 @@
dir = 4
},
/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aXy" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+/obj/machinery/disposal/bin,
+/obj/machinery/airalarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/light{
dir = 4
},
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
+"aXz" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/machinery/firealarm{
pixel_y = 32
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/central)
-"aXz" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aXA" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/item/storage/box/lights/mixed,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/neutral{
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/area/quartermaster/warehouse)
"aXB" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -22436,6 +21835,7 @@
/obj/effect/turf_decal/plaque{
icon_state = "L5"
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aXN" = (
@@ -22864,83 +22264,107 @@
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/entry)
"aYJ" = (
-/obj/machinery/light_switch{
- pixel_x = -38
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = -24
- },
-/obj/effect/turf_decal/loading_area{
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/area/quartermaster/warehouse)
"aYK" = (
-/obj/effect/turf_decal/loading_area{
- dir = 1
+/obj/machinery/door/airlock/maintenance{
+ name = "Cargo Bay Maintenance";
+ req_one_access_txt = "31;48"
},
/obj/structure/cable,
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/quartermaster/storage)
"aYL" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
-/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/area/construction/storage_wing)
"aYM" = (
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aYO" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/stripes/corner,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/machinery/conveyor{
+ dir = 8;
+ id = "packageExternal"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/camera{
+ dir = 1;
+ c_tag = "Cargo Bay - Fore";
+ pixel_x = 14
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aYP" = (
-/obj/machinery/camera{
- c_tag = "Cargo Bay - Aft";
- dir = 1
+/obj/machinery/conveyor/inverted{
+ dir = 6;
+ id = "packageExternal"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
},
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"aYQ" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aYR" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/light_switch{
- pixel_x = 27
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 6
+/obj/machinery/power/apc{
+ name = "Cargo Bay APC";
+ pixel_y = 0;
+ areastring = "/area/quartermaster/storage";
+ pixel_x = 29
},
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aYS" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/security/checkpoint/supply)
-"aYT" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/maintenance{
- req_one_access_txt = "12;63;48;50"
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/machinery/door/window/westleft{
+ dir = 2;
+ name = "Cargo Desk";
+ req_access_txt = "50"
+ },
+/obj/machinery/door/window/southright{
+ name = "Cargo Desk";
+ req_access_txt = "50"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"aYU" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aYV" = (
@@ -22951,6 +22375,9 @@
dir = 1
},
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aYW" = (
@@ -22958,6 +22385,9 @@
dir = 9
},
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aYY" = (
@@ -22966,6 +22396,9 @@
location = "2.2-Leaving-Storage"
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aYZ" = (
@@ -22981,6 +22414,9 @@
"aZc" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aZd" = (
@@ -22991,6 +22427,9 @@
"aZe" = (
/obj/machinery/holopad,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aZg" = (
@@ -22998,6 +22437,9 @@
icon_state = "L2"
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aZh" = (
@@ -23005,6 +22447,9 @@
icon_state = "L4"
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aZi" = (
@@ -23017,6 +22462,9 @@
icon_state = "L6"
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aZk" = (
@@ -23559,254 +23007,139 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"bak" = (
-/obj/machinery/door/airlock/maintenance{
- name = "Cargo Bay Maintenance";
- req_one_access_txt = "31;48"
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
},
+/obj/effect/spawner/lootdrop/maintenance,
/obj/structure/cable,
-/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"bal" = (
-/obj/item/radio/intercom{
- pixel_y = -28
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
},
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bam" = (
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"ban" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/machinery/door/window/southleft{
- name = "Cargo Disposal";
- req_access_txt = "50"
- },
-/obj/structure/window/reinforced{
- dir = 8
+/obj/structure/chair/office{
+ dir = 4
},
+/mob/living/simple_animal/sloth/citrus,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"bao" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "packageSort2";
- pixel_x = -8;
- pixel_y = -2
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/qm)
"bap" = (
-/obj/structure/rack,
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
+/obj/machinery/door/airlock/mining/glass{
+ name = "Quartermaster";
+ req_access_txt = "41"
},
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/wrapping_paper,
-/obj/item/stack/wrapping_paper,
-/obj/item/destTagger{
- pixel_x = 4;
- pixel_y = 3
- },
-/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"baq" = (
-/obj/structure/rack,
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/storage";
- name = "Cargo Bay APC";
- pixel_x = 1;
- pixel_y = -23
- },
-/obj/machinery/light,
-/obj/item/hand_labeler,
-/obj/item/hand_labeler,
-/obj/item/screwdriver{
- pixel_y = 10
- },
-/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
+/obj/machinery/door/firedoor,
/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/area/quartermaster/qm)
"bar" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/vending/wardrobe/cargo_wardrobe,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
-"bas" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/machinery/vending/wardrobe/cargo_wardrobe,
-/turf/open/floor/plasteel,
-/area/quartermaster/storage)
+/obj/effect/spawner/structure/window,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/qm)
"bat" = (
-/turf/closed/wall,
-/area/quartermaster/office)
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "packageExternal"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/door/window/westleft{
+ dir = 2;
+ name = "Crate Security Door";
+ req_access_txt = "50"
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"bau" = (
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining{
- name = "Cargo Bay";
- req_one_access_txt = "31;48"
- },
-/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/storage)
"bav" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining{
- name = "Cargo Bay";
- req_one_access_txt = "31;48"
+/obj/machinery/light_switch{
+ pixel_x = 27
},
-/obj/effect/turf_decal/delivery,
/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/storage)
"baw" = (
-/obj/structure/noticeboard{
- desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests.";
- name = "requests board";
- pixel_x = 32;
- pixel_y = 32
- },
-/obj/machinery/requests_console{
- department = "Cargo Bay";
- departmentType = 2;
- pixel_y = 30
- },
-/obj/machinery/computer/bounty,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/structure/filingcabinet/filingcabinet,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bax" = (
+/obj/machinery/computer/cargo{
dir = 4
},
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bay" = (
+/obj/structure/chair/office{
+ dir = 1
+ },
+/obj/effect/landmark/start/cargo_technician,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"baA" = (
+/obj/machinery/computer/bounty{
dir = 8
},
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bax" = (
-/obj/machinery/computer/cargo,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
},
/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bay" = (
-/obj/structure/sign/directions/supply{
- pixel_y = -5
- },
-/turf/closed/wall,
-/area/quartermaster/office)
-"baz" = (
-/obj/machinery/computer/cargo/request,
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"baA" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/obj/machinery/status_display/supply{
- pixel_y = 32
- },
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"baB" = (
-/obj/machinery/firealarm{
- pixel_y = 24
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"baC" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"baD" = (
-/obj/machinery/airalarm{
- pixel_y = 23
- },
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
+/obj/item/storage/box/lights/mixed{
+ pixel_y = 11;
+ pixel_x = 11
},
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/item/multitool{
+ pixel_y = -4;
+ pixel_x = -3
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"baE" = (
/turf/closed/wall,
/area/hallway/primary/port)
"baF" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27
- },
-/obj/machinery/light{
+/obj/effect/turf_decal/trimline/brown/filled/corner{
dir = 8
},
-/obj/machinery/camera{
- c_tag = "Central Primary Hallway - Fore - Port Corner";
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
@@ -23816,20 +23149,25 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baH" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/effect/turf_decal/tile/neutral,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
dir = 6
},
-/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baJ" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral,
/mob/living/simple_animal/bot/cleanbot{
auto_patrol = 1;
icon_state = "cleanbot1";
name = "Mopficcer Sweepsky"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baK" = (
@@ -23846,6 +23184,9 @@
},
/obj/machinery/light,
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baM" = (
@@ -23857,6 +23198,9 @@
pixel_y = -22
},
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baN" = (
@@ -23865,6 +23209,9 @@
/obj/structure/extinguisher_cabinet{
pixel_y = -30
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baO" = (
@@ -23874,6 +23221,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baP" = (
@@ -23883,6 +23233,9 @@
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baQ" = (
@@ -23895,6 +23248,9 @@
"baR" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baS" = (
@@ -23902,6 +23258,9 @@
dir = 4
},
/obj/machinery/holopad,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baT" = (
@@ -23911,6 +23270,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baU" = (
@@ -23924,6 +23286,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baV" = (
@@ -23937,6 +23302,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baW" = (
@@ -23947,6 +23315,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baX" = (
@@ -23961,6 +23332,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baY" = (
@@ -23971,6 +23345,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"baZ" = (
@@ -23984,6 +23361,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bba" = (
@@ -23992,6 +23372,9 @@
},
/obj/structure/disposalpipe/segment,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bbb" = (
@@ -24003,6 +23386,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bbc" = (
@@ -24447,132 +23833,71 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"bbN" = (
-/obj/effect/spawner/structure/window/reinforced,
-/turf/open/floor/plating,
-/area/quartermaster/office)
-"bbO" = (
-/obj/structure/plasticflaps/opaque,
-/obj/machinery/conveyor{
- backwards = 1;
- forwards = 2;
- id = "packageSort2"
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/item/stack/packageWrap{
+ pixel_x = 2;
+ pixel_y = -3
},
-/obj/effect/turf_decal/loading_area,
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
-"bbP" = (
-/obj/structure/disposalpipe/segment,
-/turf/closed/wall,
+/obj/item/stack/packageWrap{
+ pixel_y = 5;
+ pixel_x = -3
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"bbQ" = (
+/obj/effect/spawner/structure/window,
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/office";
- dir = 8;
- name = "Cargo Office APC";
- pixel_x = -25
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
"bbR" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/machinery/door/airlock/mining{
+ name = "Deliveries";
+ req_one_access_txt = "31;48"
},
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bbT" = (
+/obj/machinery/light{
+ dir = 8
},
/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bbS" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/obj/machinery/status_display/supply{
- pixel_y = 32
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bbT" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bbU" = (
-/obj/effect/landmark/start/cargo_technician,
-/obj/structure/chair/office{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bbV" = (
-/obj/structure/table/reinforced,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/window/westleft{
- name = "Cargo Desk";
- req_access_txt = "50"
- },
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/pen,
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bbW" = (
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bbX" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
+"bbV" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"bbY" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bbZ" = (
+/obj/machinery/newscaster{
+ pixel_y = 34;
+ pixel_x = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
+ },
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bca" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/light{
- dir = 4
- },
-/obj/machinery/camera{
- c_tag = "Cargo - Foyer";
- dir = 8
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bcb" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/status_display/evac{
@@ -24581,6 +23906,12 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bcc" = (
@@ -24630,6 +23961,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bcn" = (
@@ -25120,172 +24452,166 @@
/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/maintenance/port/fore)
-"bdf" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
+"bdi" = (
+/obj/structure/closet/secure_closet/quartermaster,
+/obj/machinery/airalarm{
+ pixel_y = 23
},
-/turf/closed/wall,
-/area/quartermaster/sorting)
-"bdg" = (
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/machinery/conveyor{
- dir = 4;
- id = "packageSort2"
- },
-/obj/structure/disposaloutlet{
+/obj/machinery/camera/autoname,
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"bdl" = (
+/obj/structure/plasticflaps,
+/obj/structure/window/reinforced{
dir = 4
},
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
-"bdh" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "packageSort2"
- },
-/obj/effect/spawner/lootdrop/maintenance,
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
-"bdi" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "packageSort2"
- },
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
-"bdj" = (
-/obj/machinery/conveyor{
- dir = 4;
- id = "packageSort2"
- },
-/obj/structure/plasticflaps,
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
-"bdk" = (
-/obj/structure/disposalpipe/trunk{
- dir = 1
+/obj/structure/window/reinforced{
+ dir = 8
},
/obj/machinery/disposal/deliveryChute{
- dir = 8
+ dir = 2
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
-"bdl" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/structure/disposalpipe/trunk{
dir = 1
},
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bdm" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
+"bdo" = (
/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bdn" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bdo" = (
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bdp" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
},
-/obj/structure/table/reinforced,
-/obj/item/stamp/denied{
- pixel_x = 4;
- pixel_y = -2
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
},
-/obj/item/stamp{
- pixel_x = -3;
- pixel_y = 3
+/obj/item/hand_labeler{
+ pixel_y = 11
},
-/obj/item/pen/red,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/item/stack/packageWrap{
+ pixel_x = 2;
+ pixel_y = -3
},
+/obj/item/stack/packageWrap{
+ pixel_x = 2;
+ pixel_y = -3
+ },
+/obj/item/hand_labeler_refill{
+ pixel_y = 3;
+ pixel_x = -8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bdq" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/turf/open/floor/plating,
-/area/quartermaster/office)
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/item/stack/packageWrap{
+ pixel_y = 9;
+ pixel_x = -7
+ },
+/obj/item/destTagger{
+ pixel_y = -2;
+ pixel_x = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"bdr" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/item/stack/packageWrap{
+ pixel_y = -9;
+ pixel_x = -9
+ },
+/obj/item/paper_bin{
+ pixel_x = 1;
+ pixel_y = 9
},
-/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bds" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 4
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 5
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 5
+ },
+/obj/item/folder/yellow{
+ pixel_y = 1;
+ pixel_x = 3
+ },
+/obj/item/folder/yellow{
+ pixel_y = 3;
+ pixel_x = 3
+ },
+/obj/item/folder/yellow{
+ pixel_y = 6;
+ pixel_x = 3
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bdt" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
- },
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bdu" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 4
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bdv" = (
+/obj/machinery/airalarm{
+ pixel_y = 23
+ },
+/obj/machinery/light{
+ dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bdv" = (
-/obj/structure/chair{
+/area/quartermaster/sorting)
+"bdw" = (
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/computer/cargo/request{
dir = 4
},
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bdw" = (
-/obj/effect/spawner/structure/window,
-/turf/open/floor/plating,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bdx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
/turf/open/floor/plasteel,
@@ -25358,6 +24684,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bdE" = (
@@ -25462,6 +24789,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bdR" = (
@@ -25924,115 +25252,133 @@
/area/maintenance/port/fore)
"beU" = (
/obj/machinery/door/airlock/maintenance{
- name = "Mailroom Maintenance";
- req_access_txt = "50"
+ name = "Quartermaster Maintenance";
+ req_one_access_txt = "41"
},
-/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
-/area/maintenance/port/fore)
+/area/quartermaster/qm)
"beV" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"beW" = (
-/obj/structure/chair/stool,
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"beX" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "packageSort2";
- pixel_x = -2;
- pixel_y = 12
- },
-/obj/machinery/light{
- dir = 4
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"beY" = (
-/obj/machinery/airalarm{
- dir = 4;
- pixel_x = -22
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/light{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Cargo - Office";
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"beZ" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 5
- },
/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bfa" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"beW" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bfb" = (
/obj/structure/disposalpipe/segment,
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"beX" = (
+/obj/machinery/holopad,
+/obj/structure/cable,
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"beZ" = (
+/obj/structure/chair/stool,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
+"bfa" = (
+/obj/machinery/holopad,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bfb" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"bfc" = (
-/obj/structure/filingcabinet/filingcabinet,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 10
+ },
+/obj/item/stack/wrapping_paper,
+/obj/item/stack/wrapping_paper{
+ pixel_y = 5;
+ pixel_x = -3
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bfd" = (
-/obj/effect/turf_decal/bot,
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/item/stack/packageWrap{
+ pixel_y = -3;
+ pixel_x = -8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/paperslip{
+ pixel_y = 10;
+ pixel_x = -5
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bff" = (
-/obj/effect/turf_decal/tile/brown{
+/obj/structure/chair/office{
+ dir = 4
+ },
+/obj/effect/landmark/start/cargo_technician,
+/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bfg" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
},
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/door/window/westright{
+ name = "Cargo Desk";
+ req_access_txt = "50"
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bfh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bfi" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bfj" = (
@@ -26080,6 +25426,7 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bfn" = (
@@ -26183,6 +25530,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bfG" = (
@@ -26603,223 +25951,152 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
-"bgE" = (
-/obj/structure/disposalpipe/sorting/wrap{
- dir = 1
- },
-/turf/closed/wall,
-/area/quartermaster/sorting)
"bgF" = (
-/obj/structure/disposaloutlet{
- dir = 4
+/obj/structure/table/wood,
+/obj/item/paper_bin/carbon{
+ pixel_y = 4;
+ pixel_x = -10
},
-/obj/structure/disposalpipe/trunk{
- dir = 8
+/obj/item/paper_bin/carbon{
+ pixel_y = 9;
+ pixel_x = -10
},
-/obj/structure/window/reinforced{
- dir = 1
+/obj/item/cartridge/quartermaster{
+ pixel_y = 0;
+ pixel_x = 9
},
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
+/obj/item/cartridge/quartermaster{
+ pixel_y = 11;
+ pixel_x = 5
+ },
+/obj/item/cartridge/quartermaster{
+ pixel_y = 4;
+ pixel_x = 8
+ },
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"bgG" = (
+/obj/structure/table/wood,
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"bgH" = (
+/obj/structure/table/wood,
+/turf/open/floor/wood{
+ icon_state = "wood-broken6"
+ },
+/area/quartermaster/qm)
+"bgI" = (
+/obj/structure/table/wood,
+/obj/item/stamp{
+ pixel_y = 9;
+ pixel_x = 7
+ },
+/obj/item/stamp/denied{
+ pixel_y = 4;
+ pixel_x = 7
+ },
+/obj/item/stamp/qm{
+ pixel_y = -2;
+ pixel_x = 7
+ },
+/obj/item/clipboard{
+ pixel_y = 4;
+ pixel_x = -6
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"bgJ" = (
+/turf/open/floor/wood{
+ icon_state = "wood-broken7"
+ },
+/area/quartermaster/qm)
+"bgK" = (
+/turf/open/floor/carpet/red,
+/area/quartermaster/qm)
+"bgL" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/carpet/red,
+/area/quartermaster/qm)
+"bgN" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "packageExternal"
+ },
+/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
-/area/quartermaster/sorting)
-"bgG" = (
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/structure/window/reinforced,
-/obj/machinery/door/window/eastleft{
- name = "Mail";
- req_access_txt = "50"
- },
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgH" = (
-/obj/effect/turf_decal/loading_area{
- dir = 4
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgI" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgJ" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 6
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgK" = (
-/obj/machinery/firealarm{
- pixel_y = 24
- },
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgL" = (
-/obj/machinery/status_display/supply{
- pixel_y = 32
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgM" = (
-/obj/machinery/light_switch{
- pixel_y = 28
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgN" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining/glass{
- name = "Mailroom";
- req_access_txt = "50"
- },
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bgO" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/qm)
"bgP" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/machinery/conveyor_switch/oneway{
+ id = "packageSort2";
+ name = "Sort and Deliver";
+ pixel_x = -2;
+ pixel_y = 12
+ },
+/obj/machinery/conveyor_switch/oneway{
+ dir = 8;
+ id = "packageExternal";
+ name = "Crate Returns";
+ pixel_x = -5;
+ pixel_y = -3
},
-/obj/effect/landmark/event_spawn,
-/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bgQ" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bgR" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/start/cargo_technician,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
},
-/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bgS" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 9
+ },
/obj/structure/disposalpipe/segment{
dir = 6
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bgT" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining/glass{
- name = "Cargo Office";
- req_one_access_txt = "31;48"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/delivery,
-/obj/structure/cable,
-/obj/machinery/navbeacon/wayfinding,
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bgU" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bgV" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bgW" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bgX" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 4
- },
-/obj/structure/disposalpipe/junction{
- dir = 2
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bgY" = (
-/obj/effect/turf_decal/tile/brown,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bgZ" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
+"bgZ" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/machinery/door/window/westleft{
+ name = "Cargo Desk";
+ req_access_txt = "50"
+ },
+/obj/item/newspaper,
+/obj/item/paper_bin{
+ pixel_y = 9;
+ pixel_x = -3
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"bha" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table/reinforced,
@@ -26834,6 +26111,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bhb" = (
@@ -26845,11 +26125,17 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bhc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bhd" = (
@@ -26870,6 +26156,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/vacant_room/commissary)
"bhe" = (
@@ -27115,6 +26404,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bhD" = (
@@ -27128,6 +26420,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bhE" = (
@@ -27621,138 +26916,131 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall,
/area/maintenance/port/fore)
-"biD" = (
-/obj/machinery/door/window/eastleft{
- base_state = "right";
- icon_state = "right";
- name = "Deliveries";
- req_access_txt = "50"
- },
-/obj/effect/turf_decal/delivery,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
"biE" = (
-/obj/machinery/conveyor_switch/oneway{
- dir = 8;
- id = "packageExternal";
- pixel_y = 18
- },
-/obj/effect/turf_decal/loading_area{
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/quartermaster/qm)
+"biG" = (
+/obj/machinery/computer/security/qm{
dir = 4
},
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"biF" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"biG" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/wood,
+/area/quartermaster/qm)
"biH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
+/obj/effect/turf_decal/trimline/green/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"biI" = (
+/obj/machinery/firealarm{
+ pixel_y = 0;
+ pixel_x = 30
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"biI" = (
-/obj/structure/chair/office{
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"biK" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "packageSort2"
+ },
+/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/structure/cable,
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/quartermaster/sorting)
-"biJ" = (
-/obj/structure/table,
-/obj/machinery/light_switch{
- pixel_x = 27
+"biL" = (
+/obj/structure/rack,
+/obj/effect/turf_decal/trimline/brown/filled/end{
+ dir = 1
},
-/obj/effect/turf_decal/tile/blue{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/filled/end{
+ dir = 1
},
/obj/item/storage/box/shipping,
-/turf/open/floor/plasteel/white/corner,
+/turf/open/floor/plasteel,
/area/quartermaster/sorting)
-"biK" = (
-/obj/structure/table,
-/obj/item/clipboard,
-/obj/item/folder/yellow,
-/obj/item/folder/yellow,
-/obj/item/multitool,
-/obj/item/pen/red,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"biL" = (
-/obj/structure/chair/office{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
"biM" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/machinery/light_switch{
- pixel_x = 27
- },
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/obj/effect/turf_decal/trimline/yellow/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"biN" = (
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"biO" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"biP" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+/obj/effect/turf_decal/trimline/blue/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
+"biO" = (
+/obj/machinery/autolathe,
+/obj/effect/turf_decal/trimline/brown/filled/end{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/end{
+ dir = 1
+ },
+/obj/machinery/camera{
+ c_tag = "Cargo - Mailroom";
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"biP" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/kirbyplants/random,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"biQ" = (
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"biR" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/effect/landmark/start/assistant,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
+/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
+"biR" = (
+/obj/structure/table/reinforced,
+/obj/item/stamp/denied{
+ pixel_x = 4;
+ pixel_y = -2
+ },
+/obj/item/stamp{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/item/pen/red{
+ pixel_y = 10
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/item/destTagger{
+ pixel_y = 10;
+ pixel_x = 9
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"biT" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/button/door{
@@ -27954,6 +27242,7 @@
dir = 4
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bjp" = (
@@ -28249,300 +27538,166 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bkf" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = 30
- },
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
- },
/obj/structure/sign/map/right{
desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown).";
icon_state = "map-right-MS";
pixel_y = 32
},
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 10
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bkg" = (
-/obj/machinery/conveyor{
- dir = 1;
- id = "packageExternal"
+/obj/machinery/vending/cigarette,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
+"bkh" = (
+/obj/machinery/vending/cola/random,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
+"bki" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/quartermaster/qm)
+"bkk" = (
+/obj/machinery/computer/bounty{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"bkl" = (
+/obj/machinery/computer/cargo{
+ dir = 1
+ },
+/turf/open/floor/wood,
+/area/quartermaster/qm)
+"bkn" = (
+/obj/structure/disposaloutlet{
+ dir = 1
},
-/obj/structure/plasticflaps/opaque,
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/window/reinforced{
dir = 8
},
+/obj/structure/disposalpipe/trunk,
/turf/open/floor/plating,
/area/quartermaster/sorting)
-"bkh" = (
-/obj/structure/table/reinforced,
-/obj/item/folder/yellow,
-/obj/item/pen{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white/corner,
-/area/quartermaster/sorting)
-"bki" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/chair/office,
-/obj/effect/landmark/start/cargo_technician,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white/corner,
-/area/quartermaster/sorting)
-"bkj" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white/corner,
-/area/quartermaster/sorting)
-"bkk" = (
-/obj/structure/filingcabinet/filingcabinet,
-/obj/item/radio/intercom{
- pixel_y = -28
- },
-/obj/machinery/camera{
- c_tag = "Cargo - Mailroom";
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/turf/open/floor/plasteel/white/corner,
-/area/quartermaster/sorting)
-"bkl" = (
-/obj/structure/table,
-/obj/item/stack/wrapping_paper,
-/obj/item/stack/wrapping_paper,
-/obj/machinery/requests_console{
- department = "Cargo Bay";
- departmentType = 2;
- pixel_y = -30
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/storage/box/lights/mixed,
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel/white/corner,
-/area/quartermaster/sorting)
-"bkm" = (
-/obj/item/storage/box,
-/obj/structure/table,
-/obj/item/storage/box,
-/obj/item/storage/box,
-/obj/machinery/airalarm{
- dir = 1;
- pixel_y = -22
- },
-/obj/item/hand_labeler,
-/obj/machinery/power/apc{
- areastring = "/area/quartermaster/sorting";
- dir = 4;
- name = "Delivery Office APC";
- pixel_x = 24
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel/white/corner,
-/area/quartermaster/sorting)
-"bkn" = (
-/obj/structure/table,
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = -26
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bko" = (
-/obj/machinery/photocopier,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
"bkp" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/machinery/disposal/deliveryChute{
+ dir = 1;
+ name = "Service Deliveries"
+ },
+/obj/structure/plasticflaps/opaque{
+ name = "Service Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 2
},
/turf/open/floor/plasteel,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bkq" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/holopad,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/obj/machinery/disposal/deliveryChute{
+ dir = 1;
+ name = "Security Deliveries"
},
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bkr" = (
-/obj/machinery/autolathe,
-/obj/machinery/newscaster{
- pixel_x = 28
+/obj/structure/plasticflaps/opaque{
+ name = "Security Deliveries"
},
-/obj/item/radio/intercom{
- pixel_y = -28
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
-"bks" = (
-/obj/structure/closet/crate{
- icon_state = "crateopen"
- },
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/tile/brown{
+/obj/structure/disposalpipe/trunk{
dir = 1
},
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkr" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 1;
+ name = "Engineering Deliveries"
+ },
+/obj/structure/plasticflaps/opaque{
+ name = "Engineering Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bkt" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/holopad,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
+/area/quartermaster/sorting)
+"bks" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 1;
+ name = "Medical Deliveries"
+ },
+/obj/structure/plasticflaps/opaque{
+ name = "Medical Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bku" = (
-/obj/structure/disposalpipe/segment{
- dir = 6
+/obj/machinery/disposal/bin,
+/obj/machinery/firealarm{
+ pixel_y = 0;
+ pixel_x = -31
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 6
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bkv" = (
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 9
- },
-/obj/structure/rack,
-/obj/item/storage/box,
-/obj/item/storage/box,
-/obj/item/storage/box,
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/stack/packageWrap{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/hand_labeler,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
+/obj/machinery/light{
dir = 8
},
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bkw" = (
-/obj/structure/table,
-/obj/item/toner,
-/obj/item/radio/intercom{
- pixel_x = 30
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
+/obj/structure/disposalpipe/trunk{
dir = 4
},
-/obj/effect/turf_decal/tile/brown{
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkv" = (
+/obj/structure/disposalpipe/junction{
+ dir = 2
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
+"bkw" = (
+/obj/machinery/photocopier,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"bkx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bky" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bkz" = (
@@ -28755,6 +27910,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bkU" = (
@@ -28764,6 +27922,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bkV" = (
@@ -28774,6 +27935,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bkW" = (
@@ -28794,6 +27958,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bkY" = (
@@ -28806,6 +27973,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bkZ" = (
@@ -28816,6 +27986,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bla" = (
@@ -28826,6 +27999,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"blb" = (
@@ -28841,6 +28017,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"blc" = (
@@ -28850,6 +28029,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bld" = (
@@ -28860,6 +28042,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"ble" = (
@@ -28871,6 +28056,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"blf" = (
@@ -28885,6 +28073,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"blg" = (
@@ -28898,6 +28089,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"blh" = (
@@ -29283,94 +28477,24 @@
/area/hallway/primary/port)
"bmd" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/segment,
-/obj/effect/turf_decal/tile/neutral,
-/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
-"bme" = (
-/obj/machinery/conveyor{
- dir = 1;
- id = "packageExternal"
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
"bmf" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/door/firedoor,
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/westleft{
- dir = 1;
- name = "Delivery Desk";
- req_access_txt = "50"
- },
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/effect/turf_decal/bot,
+/obj/machinery/pinpointer_dispenser,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
-"bmg" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
+/area/hallway/primary/port)
"bmh" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/mineral/ore_redemption,
-/turf/open/floor/plasteel/dark,
-/area/quartermaster/office)
-"bmi" = (
-/obj/effect/spawner/structure/window/reinforced,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/plating,
-/area/quartermaster/office)
-"bmj" = (
-/obj/structure/sign/directions/supply{
- dir = 1;
- pixel_y = 8
- },
/turf/closed/wall,
-/area/quartermaster/office)
+/area/quartermaster/sorting)
"bmk" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bml" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/turf/closed/wall,
+/area/quartermaster/sorting)
"bmm" = (
-/obj/structure/sign/directions/security{
- dir = 1;
- pixel_y = 8
- },
-/obj/structure/sign/directions/engineering{
- dir = 4
- },
-/obj/structure/sign/directions/command{
- pixel_y = -8
- },
-/turf/closed/wall/r_wall,
-/area/hallway/primary/port)
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
"bmn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/light{
@@ -29381,6 +28505,7 @@
pixel_x = 24
},
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bmo" = (
@@ -29641,6 +28766,10 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bmX" = (
@@ -30091,8 +29220,8 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bnT" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 1
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
@@ -30110,6 +29239,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bnV" = (
@@ -30119,14 +29251,8 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bnW" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
@@ -30134,17 +29260,25 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bnY" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bnZ" = (
@@ -30160,6 +29294,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"boa" = (
@@ -30170,9 +29307,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
-"bob" = (
/obj/machinery/power/apc{
areastring = "/area/hallway/primary/port";
dir = 1;
@@ -30180,23 +29314,49 @@
pixel_x = -1;
pixel_y = 23
},
+/obj/structure/cable,
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
+"bob" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/structure/cable,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"boc" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
-/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bod" = (
@@ -30209,43 +29369,58 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"boe" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bof" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bog" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"boh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/brown{
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"boi" = (
@@ -30259,6 +29434,12 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"boj" = (
@@ -30268,6 +29449,12 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bok" = (
@@ -30632,6 +29819,18 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposaloutlet{
+ name = "Cargo Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 5
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bpe" = (
@@ -31070,12 +30269,16 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bqk" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/obj/structure/cable,
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/warehouse)
"bql" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -31114,65 +30317,52 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai)
-"bqn" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
"bqo" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bqp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bqq" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/machinery/door/firedoor,
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bqs" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bqt" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/disposalpipe/sorting/mail{
- dir = 8;
- sortType = 3
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bqu" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/disposalpipe/segment{
+/obj/machinery/disposal/bin,
+/obj/effect/turf_decal/trimline/neutral/filled/end{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/end{
+ dir = 8
+ },
+/obj/structure/disposalpipe/trunk{
dir = 4
},
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/turf/open/floor/plasteel/dark,
+/area/storage/primary)
"bqv" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/structure/disposalpipe/segment{
@@ -31206,6 +30396,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bqB" = (
@@ -32155,10 +31346,15 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsz" = (
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsA" = (
@@ -32171,6 +31367,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsB" = (
@@ -32184,6 +31383,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsC" = (
@@ -32195,6 +31397,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsD" = (
@@ -32205,6 +31410,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsE" = (
@@ -32217,6 +31425,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsG" = (
@@ -32240,6 +31451,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsI" = (
@@ -32250,6 +31464,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsJ" = (
@@ -32263,6 +31480,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bsK" = (
@@ -32273,6 +31493,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bsL" = (
@@ -32605,6 +31828,13 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 6
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bty" = (
@@ -32875,6 +32105,7 @@
/obj/machinery/door/airlock/public/glass{
name = "Library"
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/wood,
/area/library)
"buh" = (
@@ -32900,6 +32131,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"buk" = (
@@ -32919,6 +32151,7 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bum" = (
@@ -33207,9 +32440,21 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/effect/landmark/blobstart,
/obj/structure/cable,
-/turf/open/floor/plating,
+/obj/structure/disposaloutlet{
+ dir = 8;
+ name = "Cargo Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
/area/maintenance/starboard)
"bve" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
@@ -33609,6 +32854,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bwi" = (
@@ -34307,6 +33553,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"byb" = (
@@ -34584,14 +33831,8 @@
/turf/open/floor/wood,
/area/crew_quarters/bar)
"byI" = (
-/obj/structure/window/reinforced{
- dir = 1
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
+/turf/open/floor/wood,
+/area/quartermaster/qm)
"byJ" = (
/obj/structure/chair/wood/wings{
dir = 8
@@ -34670,6 +33911,16 @@
},
/turf/open/floor/plasteel/dark/corner,
/area/hallway/primary/starboard)
+"byW" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
"byZ" = (
/obj/machinery/space_heater,
/obj/machinery/firealarm{
@@ -34990,6 +34241,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bzJ" = (
@@ -35849,9 +35101,6 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"bBG" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/structure/cable,
/turf/open/floor/goonplaque{
desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of sentient postcards in a realm of darkness. The station model number is MSv42A-160516"
@@ -36334,6 +35583,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bCX" = (
@@ -36357,6 +35607,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bCZ" = (
@@ -36995,6 +36246,9 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/carpet,
/area/library)
"bEy" = (
@@ -37002,18 +36256,27 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/carpet,
/area/library)
"bEz" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/carpet,
/area/library)
"bEA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/carpet,
/area/library)
"bEB" = (
@@ -37023,6 +36286,9 @@
location = "11-Command-Port"
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bEC" = (
@@ -37031,6 +36297,10 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bED" = (
@@ -37045,6 +36315,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEE" = (
@@ -37055,6 +36328,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEF" = (
@@ -37066,6 +36342,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEG" = (
@@ -37076,6 +36355,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEH" = (
@@ -37087,6 +36369,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEI" = (
@@ -37107,6 +36392,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEK" = (
@@ -37119,6 +36407,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEM" = (
@@ -37130,6 +36421,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEO" = (
@@ -37139,6 +36433,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEP" = (
@@ -37146,6 +36443,9 @@
dir = 4
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEQ" = (
@@ -37154,6 +36454,9 @@
dir = 4
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bER" = (
@@ -37162,6 +36465,9 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bES" = (
@@ -37170,6 +36476,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bET" = (
@@ -37179,6 +36488,9 @@
/obj/machinery/light,
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEV" = (
@@ -37190,6 +36502,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEX" = (
@@ -37199,6 +36514,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEY" = (
@@ -37207,6 +36525,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bEZ" = (
@@ -37218,6 +36539,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bFa" = (
@@ -37231,6 +36555,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bFc" = (
@@ -37238,12 +36565,18 @@
/obj/effect/landmark/event_spawn,
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bFd" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bFf" = (
@@ -37256,6 +36589,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"bFg" = (
@@ -37266,6 +36602,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bFh" = (
@@ -37274,6 +36613,9 @@
location = "7-Command-Starboard"
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bFi" = (
@@ -37282,6 +36624,9 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bFj" = (
@@ -37815,6 +37160,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bGx" = (
@@ -38031,6 +37377,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bGY" = (
@@ -38432,6 +37779,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bHY" = (
@@ -38657,6 +38005,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/bar,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bIt" = (
@@ -39121,6 +38470,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bJD" = (
@@ -39392,6 +38742,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bKe" = (
@@ -40542,6 +39893,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bMS" = (
@@ -40841,6 +40193,7 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/bar,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bNv" = (
@@ -41151,6 +40504,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bOo" = (
@@ -41192,14 +40546,15 @@
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva)
"bOq" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/airalarm{
+ pixel_y = 28
},
-/obj/structure/cable,
-/turf/open/floor/plating{
- icon_state = "platingdmg1"
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
},
-/area/maintenance/port/fore)
+/turf/open/floor/plasteel,
+/area/quartermaster/warehouse)
"bOr" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{
@@ -41871,6 +41226,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bPZ" = (
@@ -42330,6 +41686,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bRp" = (
@@ -42931,6 +42288,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bSE" = (
@@ -43025,6 +42383,7 @@
"bSR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/green,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bSS" = (
@@ -43121,7 +42480,16 @@
dir = 1
},
/obj/structure/cable,
-/turf/open/floor/plating,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 10
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
/area/maintenance/starboard)
"bTc" = (
/obj/machinery/power/apc{
@@ -43131,14 +42499,16 @@
pixel_x = -1;
pixel_y = 23
},
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/structure/cable,
-/turf/open/floor/plating,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/brown/warning,
+/obj/effect/turf_decal/trimline/brown/warning,
+/turf/open/floor/plasteel,
/area/maintenance/starboard)
"bTd" = (
/obj/structure/disposalpipe/segment,
@@ -43310,6 +42680,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTG" = (
@@ -43319,6 +42692,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTH" = (
@@ -43331,6 +42707,9 @@
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTI" = (
@@ -43359,6 +42738,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTL" = (
@@ -43371,6 +42753,9 @@
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTM" = (
@@ -43383,6 +42768,9 @@
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTN" = (
@@ -43398,6 +42786,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTO" = (
@@ -43411,6 +42802,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTP" = (
@@ -43423,6 +42817,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTQ" = (
@@ -43435,6 +42832,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTR" = (
@@ -43445,6 +42845,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTS" = (
@@ -43469,6 +42872,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTU" = (
@@ -43485,6 +42891,9 @@
dir = 1
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTV" = (
@@ -43499,6 +42908,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTW" = (
@@ -43513,6 +42925,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTX" = (
@@ -43525,6 +42940,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTY" = (
@@ -43541,6 +42959,9 @@
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bTZ" = (
@@ -43573,6 +42994,7 @@
/obj/effect/turf_decal/tile/green{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bUd" = (
@@ -43874,6 +43296,10 @@
},
/turf/open/floor/plasteel/dark,
/area/aisat)
+"bUN" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/hallway/secondary/service)
"bUQ" = (
/obj/item/cigbutt,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -43941,6 +43367,9 @@
dir = 4
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bVa" = (
@@ -43948,6 +43377,9 @@
dir = 9
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bVb" = (
@@ -44048,6 +43480,7 @@
dir = 4
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bVq" = (
@@ -44434,6 +43867,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWk" = (
@@ -44444,6 +43880,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWl" = (
@@ -44457,6 +43896,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWm" = (
@@ -44469,6 +43911,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWn" = (
@@ -44479,6 +43924,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWo" = (
@@ -44607,6 +44055,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWD" = (
@@ -44667,6 +44116,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWJ" = (
@@ -44683,6 +44135,9 @@
/obj/effect/turf_decal/tile/green{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bWK" = (
@@ -44714,6 +44169,9 @@
/obj/effect/turf_decal/tile/green{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWL" = (
@@ -44731,6 +44189,9 @@
/obj/effect/turf_decal/tile/green{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWM" = (
@@ -44744,6 +44205,9 @@
/obj/effect/turf_decal/tile/green{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWN" = (
@@ -44756,6 +44220,9 @@
/obj/effect/turf_decal/tile/green{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWO" = (
@@ -44763,6 +44230,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWP" = (
@@ -44770,6 +44240,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWQ" = (
@@ -44791,6 +44264,9 @@
"bWS" = (
/obj/machinery/hydroponics/constructable,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWT" = (
@@ -44802,10 +44278,16 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWV" = (
/obj/machinery/vending/wardrobe/hydro_wardrobe,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"bWX" = (
@@ -44819,6 +44301,9 @@
/obj/machinery/light{
dir = 1
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
"bWY" = (
@@ -45162,6 +44647,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bXN" = (
@@ -46158,26 +45644,27 @@
dir = 4;
pixel_x = -22
},
-/obj/structure/table,
-/obj/effect/turf_decal/tile/blue{
+/obj/structure/disposaloutlet{
+ dir = 4;
+ name = "Cargo Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
dir = 1
},
-/obj/effect/turf_decal/tile/blue{
- dir = 8
- },
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
+/obj/effect/turf_decal/trimline/brown/warning,
+/obj/effect/turf_decal/trimline/brown/warning,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cak" = (
-/obj/effect/turf_decal/tile/blue{
- dir = 1
- },
-/obj/effect/turf_decal/tile/blue{
+/obj/structure/window/reinforced{
dir = 4
},
-/obj/effect/turf_decal/trimline/blue/filled/corner,
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 6
+ },
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cal" = (
@@ -46294,49 +45781,43 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"caz" = (
-/obj/structure/table,
-/obj/item/stack/cable_coil,
-/obj/item/assembly/igniter{
- pixel_x = -4;
- pixel_y = -4
+/obj/structure/window/reinforced{
+ dir = 8
},
-/obj/item/screwdriver{
- pixel_y = 16
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 10
},
-/obj/item/gps{
- gpstag = "RD0"
- },
-/obj/effect/turf_decal/tile/purple{
- dir = 1
- },
-/obj/effect/turf_decal/tile/purple{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 10
},
/turf/open/floor/plasteel/white,
/area/science/research)
"caA" = (
/obj/structure/table,
-/obj/item/stack/sheet/glass,
-/obj/item/electronics/airlock,
-/obj/item/assembly/timer{
- pixel_x = -4;
- pixel_y = 2
+/obj/item/weldingtool{
+ pixel_y = 6;
+ pixel_x = -5
},
-/obj/effect/turf_decal/tile/purple{
- dir = 1
+/obj/item/flashlight{
+ pixel_y = 3;
+ pixel_x = 5
},
-/obj/effect/turf_decal/tile/purple{
- dir = 4
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 8
},
-/turf/open/floor/plasteel/white,
-/area/science/research)
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 8
+ },
+/obj/machinery/power/apc{
+ name = "Tool Storage APC";
+ pixel_y = 1;
+ areastring = "/area/storage/primary";
+ pixel_x = 31
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel/dark,
+/area/storage/primary)
"caB" = (
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -2;
- pixel_y = 4
- },
-/obj/item/pen,
/obj/machinery/status_display/evac{
pixel_y = 32
},
@@ -46351,12 +45832,15 @@
c_tag = "Research Division - Lobby";
network = list("ss13","rd")
},
-/obj/effect/turf_decal/tile/purple{
+/obj/structure/disposaloutlet{
+ dir = 8;
+ name = "Cargo Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
dir = 1
},
-/obj/effect/turf_decal/tile/purple{
- dir = 4
- },
+/obj/effect/turf_decal/trimline/brown/warning,
+/obj/effect/turf_decal/trimline/brown/warning,
/turf/open/floor/plasteel/white,
/area/science/research)
"caC" = (
@@ -47124,6 +46608,10 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
+/obj/structure/table,
+/obj/item/stack/medical/mesh,
+/obj/item/stack/medical/gauze,
+/obj/item/stack/medical/suture,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cbU" = (
@@ -47967,6 +47455,18 @@
dir = 4
},
/obj/structure/cable,
+/obj/structure/table,
+/obj/item/stack/cable_coil,
+/obj/item/gps{
+ gpstag = "RD0"
+ },
+/obj/item/assembly/igniter{
+ pixel_x = -4;
+ pixel_y = -4
+ },
+/obj/item/screwdriver{
+ pixel_y = 16
+ },
/turf/open/floor/plasteel/white,
/area/science/research)
"cdP" = (
@@ -50233,6 +49733,7 @@
dir = 4
},
/obj/structure/cable,
+/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
/area/maintenance/starboard)
"cjs" = (
@@ -61435,6 +60936,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cMR" = (
@@ -64465,6 +63969,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cVe" = (
@@ -64519,7 +64024,9 @@
/turf/open/space,
/area/engine/atmos)
"cVC" = (
-/mob/living/simple_animal/sloth/citrus,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"cVD" = (
@@ -67015,16 +66522,15 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"dhy" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/structure/chair,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/obj/structure/closet/cardboard,
-/obj/structure/sign/poster/official/random{
- pixel_y = 32
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/area/construction/storage_wing)
"dhz" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -67054,18 +66560,9 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"dhC" = (
-/obj/structure/rack,
-/obj/item/stack/sheet/cardboard,
-/obj/item/stack/rods/fifty,
-/obj/item/paper,
-/obj/item/storage/box/lights/mixed,
-/obj/structure/sign/poster/official/random{
- pixel_y = -32
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/quartermaster/warehouse)
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/security/checkpoint/supply)
"dhD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
@@ -67102,18 +66599,15 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/dorms)
"dhG" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/structure/sign/poster/official/random{
- pixel_y = -32
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
+/obj/machinery/door/airlock/maintenance{
+ req_one_access_txt = "12;63;48;50"
},
/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/port/fore)
"dhH" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/spawner/lootdrop/maintenance,
@@ -67124,17 +66618,11 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"dhI" = (
-/obj/machinery/vending/assist,
-/obj/machinery/light/small{
- dir = 1
+/obj/machinery/door/window/eastright{
+ name = "MULEbot Access";
+ req_one_access_txt = "31;48"
},
-/obj/structure/sign/poster/official/random{
- pixel_y = 32
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
@@ -67155,28 +66643,13 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"dhL" = (
-/obj/structure/table,
-/obj/item/analyzer,
-/obj/machinery/power/apc{
- areastring = "/area/storage/primary";
- name = "Tool Storage APC";
- pixel_y = -23
- },
-/obj/item/wrench,
-/obj/structure/sign/poster/official/random{
- pixel_x = -32
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
/obj/structure/cable,
-/obj/item/storage/box/shipping,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
-/area/storage/primary)
+/area/construction/storage_wing)
"dhM" = (
/obj/item/radio/intercom{
pixel_y = 21
@@ -67547,6 +67020,9 @@
/obj/item/reagent_containers/glass/bucket,
/obj/item/cultivator,
/obj/item/wirecutters,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hydroponics)
"dix" = (
@@ -67874,6 +67350,19 @@
},
/turf/open/floor/plating,
/area/chapel/main)
+"dkR" = (
+/obj/effect/landmark/event_spawn,
+/obj/effect/turf_decal/tile/green{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/green{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
"dlI" = (
/turf/closed/wall/r_wall,
/area/engine/supermatter)
@@ -67925,18 +67414,23 @@
/turf/open/floor/wood,
/area/library)
"dmF" = (
-/turf/closed/wall,
-/area/quartermaster/sorting)
-"dmH" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/item/emptysandbag,
+/obj/item/emptysandbag,
+/obj/item/emptysandbag,
+/obj/item/emptysandbag,
+/obj/item/emptysandbag,
/turf/open/floor/plating,
-/area/quartermaster/sorting)
+/area/maintenance/port/fore)
+"dmH" = (
+/turf/closed/wall,
+/area/quartermaster/qm)
"dmT" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 1
+/obj/structure/chair/office,
+/obj/effect/landmark/start/quartermaster,
+/turf/open/floor/wood{
+ icon_state = "wood-broken4"
},
-/turf/open/floor/plasteel,
-/area/quartermaster/sorting)
+/area/quartermaster/qm)
"dmU" = (
/obj/machinery/computer/crew{
dir = 8
@@ -68340,6 +67834,15 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"dxo" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"dxQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -68719,15 +68222,13 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"dCl" = (
-/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/landmark/event_spawn,
-/obj/structure/cable,
+/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"dCn" = (
-/obj/effect/landmark/event_spawn,
/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"dCo" = (
@@ -68767,8 +68268,17 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"dCt" = (
-/obj/effect/landmark/event_spawn,
-/turf/open/floor/plasteel,
+/obj/machinery/firealarm{
+ pixel_y = 32
+ },
+/obj/machinery/vending/assist,
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 10
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
/area/storage/primary)
"dCv" = (
/obj/effect/landmark/event_spawn,
@@ -68776,13 +68286,9 @@
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"dCx" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/landmark/event_spawn,
-/obj/structure/cable,
-/turf/open/floor/plating{
- icon_state = "panelscorched"
- },
-/area/maintenance/port/fore)
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/warehouse)
"dCz" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/dark,
@@ -68795,7 +68301,12 @@
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"dCB" = (
-/obj/effect/landmark/event_spawn,
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"dCC" = (
@@ -68818,10 +68329,37 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"dCI" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/landmark/event_spawn,
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 6
+ },
+/obj/item/paper_bin/bundlenatural{
+ pixel_y = 5;
+ pixel_x = -19
+ },
+/obj/item/paper_bin/bundlenatural{
+ pixel_y = 5;
+ pixel_x = -7
+ },
+/obj/item/paper_bin/bundlenatural{
+ pixel_y = 9;
+ pixel_x = -19
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/item/paperplane{
+ pixel_x = 9
+ },
+/obj/item/paperplane{
+ pixel_y = 7;
+ pixel_x = 7
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/port)
+/area/quartermaster/sorting)
"dCJ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -68847,6 +68385,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"dCN" = (
@@ -68855,6 +68396,7 @@
},
/obj/effect/landmark/event_spawn,
/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"dCO" = (
@@ -68897,6 +68439,9 @@
dir = 4
},
/obj/effect/landmark/event_spawn,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/carpet,
/area/library)
"dDa" = (
@@ -68908,6 +68453,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"dDb" = (
@@ -69319,6 +68867,18 @@
dir = 5
},
/area/crew_quarters/kitchen)
+"ecO" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"eds" = (
/obj/structure/closet/l3closet/virology,
/obj/effect/turf_decal/tile/green{
@@ -69415,6 +68975,18 @@
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
+"ekE" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"ekW" = (
/obj/effect/turf_decal/tile/yellow{
dir = 8
@@ -69439,11 +69011,20 @@
/area/medical/virology)
"enV" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
},
-/obj/item/radio/intercom{
- pixel_x = -29
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eoc" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
@@ -69493,18 +69074,15 @@
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"ewb" = (
-/obj/effect/turf_decal/tile/blue{
+/obj/effect/turf_decal/trimline/brown/filled/line{
dir = 1
},
-/obj/effect/turf_decal/tile/blue{
- dir = 4
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
},
-/obj/structure/table,
-/obj/item/stack/medical/mesh,
-/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/suture,
-/turf/open/floor/plasteel/white,
-/area/medical/medbay/central)
+/obj/item/chair,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"exA" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -69614,6 +69192,14 @@
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
+"eIt" = (
+/obj/machinery/holopad,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"eIP" = (
/obj/effect/turf_decal/tile/yellow,
/obj/structure/sign/poster/official/safety_eye_protection{
@@ -69683,6 +69269,22 @@
icon_state = "wood-broken4"
},
/area/maintenance/port/aft)
+"eUK" = (
+/obj/machinery/computer/cargo/request{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"eUQ" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
@@ -69873,6 +69475,15 @@
/obj/effect/turf_decal/trimline/blue/filled/warning,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"fnP" = (
+/obj/effect/turf_decal/trimline/brown/corner{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"fos" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/start/prisoner,
@@ -70104,6 +69715,12 @@
},
/turf/open/floor/plating,
/area/security/checkpoint/engineering)
+"fNH" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"fRx" = (
/obj/effect/turf_decal/tile/blue{
dir = 8
@@ -70117,6 +69734,16 @@
},
/turf/open/floor/plasteel/white,
/area/medical/paramedic)
+"fSg" = (
+/obj/structure/table,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"fSV" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
@@ -70139,6 +69766,12 @@
},
/turf/open/floor/circuit,
/area/science/misc_lab/range)
+"fVm" = (
+/obj/structure/cable,
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/port/fore)
"fVx" = (
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
@@ -70212,6 +69845,53 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/maintenance/department/science)
+"gcj" = (
+/obj/structure/table/wood/fancy/orange,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/item/clothing/mask/cigarette/cigar{
+ pixel_x = -4;
+ pixel_y = 1
+ },
+/obj/item/clothing/mask/cigarette/cigar{
+ pixel_y = 6;
+ pixel_x = -6
+ },
+/obj/item/clothing/mask/cigarette/cigar{
+ pixel_y = -2;
+ pixel_x = -1
+ },
+/obj/item/lighter{
+ pixel_y = -7;
+ pixel_x = 11
+ },
+/obj/item/coin/gold{
+ pixel_y = 9;
+ pixel_x = 9
+ },
+/turf/open/floor/carpet/red,
+/area/quartermaster/qm)
+"gdH" = (
+/obj/structure/table/wood/fancy/orange,
+/obj/machinery/requests_console{
+ department = "Cargo Bay";
+ departmentType = 2;
+ pixel_x = 32
+ },
+/obj/item/reagent_containers/food/drinks/bottle/whiskey{
+ pixel_y = 16;
+ pixel_x = -5
+ },
+/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{
+ pixel_y = 6;
+ pixel_x = 2
+ },
+/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{
+ pixel_y = 6;
+ pixel_x = -8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/carpet/red,
+/area/quartermaster/qm)
"geT" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -70250,6 +69930,19 @@
/obj/structure/reagent_dispensers/watertank,
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
+"gly" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/item/stack/sheet/glass,
+/obj/item/electronics/airlock,
+/obj/item/assembly/timer{
+ pixel_x = -4;
+ pixel_y = 2
+ },
+/turf/open/floor/plasteel/white,
+/area/science/research)
"glT" = (
/obj/structure/cable,
/obj/effect/turf_decal/tile/blue{
@@ -70396,6 +70089,13 @@
dir = 5
},
/area/crew_quarters/kitchen)
+"gsF" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"gtf" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -70476,6 +70176,16 @@
},
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
+"gCM" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Library"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/wood,
+/area/library)
"gDK" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -70519,6 +70229,12 @@
},
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
+"gHt" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"gHT" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -70532,6 +70248,16 @@
},
/turf/open/floor/plasteel/white,
/area/medical/surgery/room_c)
+"gIg" = (
+/obj/machinery/vending/tool,
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 10
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel/dark,
+/area/storage/primary)
"gJs" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
@@ -70684,6 +70410,14 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
+"hdT" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"hdX" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/emcloset,
@@ -70794,6 +70528,10 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"hpn" = (
+/obj/structure/cable,
+/turf/open/floor/wood,
+/area/quartermaster/qm)
"hpQ" = (
/obj/effect/turf_decal/trimline/green/filled/corner{
dir = 1
@@ -70848,6 +70586,14 @@
/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"hxH" = (
+/obj/structure/disposalpipe/sorting/mail{
+ dir = 8;
+ sortType = 3
+ },
+/obj/structure/cable,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"hxP" = (
/obj/structure/cable,
/obj/effect/turf_decal/stripes/line{
@@ -71082,6 +70828,14 @@
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
+"hVz" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"hWp" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
@@ -71242,6 +70996,33 @@
},
/turf/open/floor/plasteel,
/area/science/misc_lab/range)
+"irW" = (
+/obj/structure/closet/crate{
+ icon_state = "crateopen"
+ },
+/obj/item/stack/packageWrap,
+/obj/item/stack/packageWrap{
+ pixel_y = 2
+ },
+/obj/item/stack/packageWrap{
+ pixel_y = 5
+ },
+/obj/item/stack/packageWrap{
+ pixel_y = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
+"iuX" = (
+/obj/effect/landmark/event_spawn,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"ixg" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/structure/disposalpipe/segment{
@@ -71434,12 +71215,23 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"jeV" = (
-/obj/machinery/conveyor/inverted{
- dir = 10;
- id = "QMLoad"
+/obj/effect/turf_decal/bot_white/right,
+/obj/effect/turf_decal/arrows/red{
+ dir = 4
},
-/turf/open/floor/plating,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
/area/quartermaster/storage)
+"jiz" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/door/airlock/mining{
+ name = "Deliveries";
+ req_one_access_txt = "31;48"
+ },
+/obj/machinery/door/firedoor,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"jjg" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/button/door{
@@ -71668,6 +71460,10 @@
/obj/machinery/vending/coffee,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
+"jHm" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/science/research)
"jHw" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -71915,6 +71711,14 @@
/obj/effect/landmark/start/janitor,
/turf/open/floor/plasteel,
/area/janitor)
+"kex" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"kfZ" = (
/obj/structure/table/wood,
/obj/effect/decal/cleanable/dirt/dust,
@@ -71935,12 +71739,33 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
+"kiy" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "QMLoad"
+ },
+/obj/structure/window/reinforced,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"kjh" = (
/obj/effect/decal/cleanable/dirt,
/obj/vehicle/ridden/janicart,
/obj/item/key/janitor,
/turf/open/floor/plasteel,
/area/janitor)
+"kjJ" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"kkA" = (
/obj/structure/cable,
/obj/machinery/door/firedoor,
@@ -71966,6 +71791,16 @@
},
/turf/open/floor/plasteel/white,
/area/medical/patients_rooms)
+"klF" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"kmq" = (
/turf/closed/wall/r_wall,
/area/medical/morgue)
@@ -72004,6 +71839,13 @@
"krD" = (
/turf/open/floor/plasteel/white,
/area/science/misc_lab/range)
+"ksI" = (
+/obj/item/radio/intercom{
+ pixel_x = -29
+ },
+/obj/item/kirbyplants/random,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"ksN" = (
/obj/effect/turf_decal/tile/blue{
dir = 1
@@ -72068,6 +71910,9 @@
pixel_x = 24
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
"kyI" = (
@@ -72162,6 +72007,19 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"kEb" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "packageExternal"
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/qm)
"kEz" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/white,
@@ -72490,6 +72348,16 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"lqU" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/obj/effect/turf_decal/tile/yellow{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/starboard)
"lui" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -72499,6 +72367,21 @@
},
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
+"luZ" = (
+/obj/machinery/power/apc{
+ name = "Quartermaster's Office APC";
+ pixel_y = 30;
+ areastring = "/area/quartermaster/qm";
+ dir = 1
+ },
+/obj/structure/cable,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/wood{
+ icon_state = "wood-broken5"
+ },
+/area/quartermaster/qm)
"lwx" = (
/obj/effect/turf_decal/delivery,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
@@ -72545,11 +72428,29 @@
"lAu" = (
/turf/open/space/basic,
/area/space/nearstation)
+"lCL" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"lCP" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"lDf" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/pinpointer_dispenser,
-/turf/open/floor/plating,
-/area/quartermaster/sorting)
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"lEV" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -73010,6 +72911,12 @@
},
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
+"mpe" = (
+/obj/machinery/disposal/bin,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/trunk,
+/turf/open/floor/wood,
+/area/quartermaster/qm)
"mqo" = (
/obj/machinery/door/poddoor/shutters{
id = "maintwarehouse"
@@ -73031,6 +72938,16 @@
/obj/machinery/photocopier,
/turf/open/floor/plasteel,
/area/engine/break_room)
+"muk" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"mvj" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -73073,6 +72990,13 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/maintenance/aft)
+"mBz" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"mCu" = (
/obj/item/clothing/suit/snowman,
/obj/item/clothing/head/snowman,
@@ -73130,6 +73054,18 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/checker,
/area/engine/storage_shared)
+"mIU" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"mKb" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -73283,6 +73219,13 @@
},
/turf/open/floor/grass,
/area/medical/virology)
+"niJ" = (
+/obj/effect/turf_decal/trimline/red/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"njJ" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -73410,6 +73353,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
"nBA" = (
@@ -73470,17 +73416,14 @@
},
/area/medical/break_room)
"nIb" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining{
- name = "Cargo Bay";
- req_one_access_txt = "31;48"
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
-/obj/effect/turf_decal/delivery,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
},
-/turf/open/floor/plasteel,
-/area/construction/storage_wing)
+/area/maintenance/port/fore)
"nJh" = (
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 10
@@ -73538,11 +73481,22 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"nMU" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/construction/storage_wing)
"nOl" = (
/obj/effect/landmark/start/medical_doctor,
/obj/structure/chair/office/light,
/turf/open/floor/plasteel/white,
/area/medical/patients_rooms)
+"nOZ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/qm)
"nPC" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -73745,6 +73699,13 @@
"ojg" = (
/turf/closed/wall,
/area/science/misc_lab/range)
+"okr" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/wood{
+ icon_state = "wood-broken3"
+ },
+/area/quartermaster/qm)
"ong" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -73912,6 +73873,17 @@
},
/turf/open/floor/plasteel/dark/corner,
/area/engine/storage_shared)
+"oEx" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"oJL" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -74150,6 +74122,14 @@
},
/turf/open/floor/plasteel,
/area/hydroponics)
+"plu" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"plC" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -74201,6 +74181,12 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"puy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/hydroponics)
"puQ" = (
/obj/effect/turf_decal/tile/yellow{
dir = 8
@@ -74301,6 +74287,36 @@
/obj/structure/displaycase/forsale,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
+"pAA" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/machinery/conveyor_switch/oneway{
+ dir = 8;
+ id = "packageExternal";
+ name = "Crate Returns";
+ pixel_x = -5;
+ pixel_y = 23
+ },
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/corner{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction/flip{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
+"pBs" = (
+/obj/effect/turf_decal/trimline/brown/warning,
+/obj/effect/turf_decal/trimline/brown/warning,
+/turf/open/floor/plasteel/white,
+/area/science/research)
"pCp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
@@ -74350,6 +74366,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/surgery/room_c)
+"pHd" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/quartermaster/sorting)
"pKP" = (
/obj/machinery/power/apc/highcap/five_k{
areastring = "/area/medical/virology";
@@ -74407,6 +74430,13 @@
/obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy,
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"pMn" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"pMX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -74681,6 +74711,18 @@
},
/turf/open/floor/plasteel,
/area/maintenance/department/science)
+"qsb" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"qte" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment,
@@ -74833,6 +74875,7 @@
/area/crew_quarters/kitchen)
"qBS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/disposalpipe/segment,
/turf/closed/wall,
/area/vacant_room/commissary)
"qEU" = (
@@ -74893,6 +74936,14 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
+"qHJ" = (
+/obj/effect/landmark/event_spawn,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"qLf" = (
/obj/structure/table/wood,
/obj/item/storage/photo_album/library,
@@ -74998,6 +75049,20 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
+"qYo" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "packageExternal"
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/plasticflaps/opaque,
+/turf/open/floor/plating,
+/area/quartermaster/qm)
"qZf" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -75074,6 +75139,31 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"rli" = (
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/machinery/door/window/westleft{
+ dir = 2;
+ name = "Cargo Desk";
+ req_access_txt = "50"
+ },
+/obj/item/paper_bin{
+ pixel_y = 6;
+ pixel_x = -7
+ },
+/obj/item/paper/crumpled{
+ pixel_x = 7
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"rmY" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment,
@@ -75310,7 +75400,10 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
-/obj/structure/chair{
+/obj/effect/turf_decal/trimline/brown/warning{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/brown/warning{
dir = 4
},
/turf/open/floor/plasteel,
@@ -75433,6 +75526,12 @@
},
/turf/open/floor/plasteel/white,
/area/security/checkpoint/medical)
+"rVn" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"rWg" = (
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -75450,6 +75549,11 @@
},
/turf/open/floor/plasteel/white,
/area/medical/paramedic)
+"rYl" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/carpet,
+/area/library)
"rYC" = (
/turf/open/floor/plating{
icon_state = "platingdmg2"
@@ -75527,6 +75631,13 @@
/obj/effect/turf_decal/trimline/blue/filled/warning,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"scu" = (
+/obj/machinery/hydroponics/constructable,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
"scY" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
@@ -75620,6 +75731,19 @@
/obj/structure/grille,
/turf/open/floor/plating/airless,
/area/space/nearstation)
+"sjs" = (
+/obj/machinery/disposal/deliveryChute{
+ dir = 1;
+ name = "Science Deliveries"
+ },
+/obj/structure/plasticflaps/opaque{
+ name = "Science Deliveries"
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"sjZ" = (
/obj/structure/sign/directions/evac,
/turf/closed/wall,
@@ -75801,6 +75925,12 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"sBo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/carpet,
+/area/library)
"sEG" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -76196,6 +76326,11 @@
},
/turf/open/floor/engine,
/area/engine/supermatter)
+"tDQ" = (
+/obj/effect/spawner/structure/window,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/medical/medbay/central)
"tFJ" = (
/obj/structure/disposalpipe/trunk{
dir = 8
@@ -76479,6 +76614,23 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"uzn" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"uzx" = (
+/obj/effect/turf_decal/trimline/brown/warning,
+/obj/effect/turf_decal/trimline/brown/warning,
+/turf/open/floor/plasteel/white,
+/area/medical/medbay/central)
"uzM" = (
/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6{
pixel_x = 32
@@ -76498,6 +76650,15 @@
},
/turf/open/floor/plasteel/white,
/area/medical/surgery)
+"uDW" = (
+/obj/effect/turf_decal/trimline/purple/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/effect/turf_decal/trimline/brown/filled/warning,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"uEH" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -76516,6 +76677,19 @@
/obj/structure/cable,
/turf/open/space,
/area/space/nearstation)
+"uGf" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "packageExternal"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/qm)
"uGS" = (
/turf/closed/wall,
/area/medical/pharmacy)
@@ -76765,6 +76939,17 @@
},
/turf/open/floor/plasteel/white,
/area/medical/virology)
+"vju" = (
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ name = "Delivery Office APC";
+ pixel_y = 32;
+ areastring = "/area/quartermaster/sorting";
+ dir = 4;
+ pixel_x = -1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"vkR" = (
/obj/machinery/door/poddoor/preopen{
id = "medbreakroom";
@@ -76805,6 +76990,22 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/dark,
/area/engine/storage_shared)
+"vpU" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"vpX" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"vqh" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/engineering{
@@ -77068,6 +77269,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"vLD" = (
@@ -77147,6 +77349,14 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
+"vTZ" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"vUg" = (
/obj/structure/cable,
/turf/open/floor/plasteel,
@@ -77249,8 +77459,23 @@
dir = 8;
pixel_x = 24
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
+"wgX" = (
+/obj/machinery/conveyor{
+ dir = 1;
+ id = "packageExternal"
+ },
+/obj/structure/plasticflaps/opaque,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/quartermaster/qm)
"wgZ" = (
/obj/effect/turf_decal/tile/blue{
dir = 1
@@ -77301,6 +77526,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"wnR" = (
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/structure/rack,
+/turf/open/floor/plating{
+ icon_state = "platingdmg3"
+ },
+/area/maintenance/port/fore)
"woz" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -77360,6 +77592,21 @@
"wtq" = (
/turf/closed/wall,
/area/maintenance/aft/secondary)
+"wtw" = (
+/obj/machinery/camera{
+ c_tag = "Central Primary Hallway - Fore - Port Corner";
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -27
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/obj/effect/turf_decal/trimline/brown/filled/line,
+/turf/open/floor/plasteel,
+/area/construction/storage_wing)
"wtW" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -77421,6 +77668,21 @@
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
+"wxr" = (
+/obj/structure/table,
+/obj/item/storage/firstaid/regular{
+ pixel_y = 5;
+ pixel_x = 7
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"wyn" = (
/obj/structure/table/optable,
/obj/effect/turf_decal/tile/blue,
@@ -77448,6 +77710,18 @@
dir = 5
},
/area/crew_quarters/kitchen)
+"wzA" = (
+/obj/machinery/firealarm{
+ pixel_y = -1;
+ pixel_x = -29
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/item/banner/cargo/mundane,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"wAb" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -77521,6 +77795,13 @@
/obj/effect/turf_decal/stripes/line,
/turf/closed/wall,
/area/science/misc_lab/range)
+"wLo" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/plating,
+/area/maintenance/starboard)
"wNt" = (
/obj/effect/turf_decal/tile/yellow{
dir = 1
@@ -77716,6 +77997,16 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/janitor)
+"xdZ" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/sorting)
"xel" = (
/obj/structure/table/reinforced,
/obj/item/storage/backpack/duffelbag/med/surgery,
@@ -77941,6 +78232,11 @@
/obj/structure/cable,
/turf/open/floor/plasteel,
/area/maintenance/department/science)
+"xAO" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"xBk" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/closet,
@@ -77965,6 +78261,12 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor,
/area/medical/coldroom)
+"xCQ" = (
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/storage)
"xDR" = (
/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -77979,6 +78281,21 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"xHh" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/brown/filled/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/port)
"xIf" = (
/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -78003,6 +78320,17 @@
icon_state = "platingdmg1"
},
/area/maintenance/aft/secondary)
+"xMX" = (
+/obj/effect/turf_decal/tile/green,
+/obj/effect/turf_decal/tile/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hydroponics)
"xNe" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable,
@@ -78021,6 +78349,13 @@
"xOf" = (
/turf/open/floor/plasteel/white,
/area/medical/virology)
+"xOI" = (
+/obj/effect/turf_decal/delivery,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/vacant_room/commissary)
"xVb" = (
/obj/structure/cable,
/obj/machinery/power/solar{
@@ -78029,6 +78364,29 @@
},
/turf/open/floor/plasteel/airless/solarpanel,
/area/solar/port/aft)
+"xVe" = (
+/obj/structure/table/wood/fancy/orange,
+/obj/item/gps{
+ pixel_y = 12;
+ gpstag = "QM0";
+ pixel_x = 10
+ },
+/obj/machinery/status_display/supply{
+ pixel_x = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/item/storage/wallet{
+ pixel_y = 10;
+ pixel_x = -3
+ },
+/obj/item/ammo_casing/caseless/rocket{
+ name = "Dud Rocket";
+ pixel_y = -7;
+ pixel_x = -4;
+ desc = "Your grandpappy brought this home after the war. You're pretty sure it's a dud."
+ },
+/turf/open/floor/carpet/red,
+/area/quartermaster/qm)
"xVl" = (
/turf/closed/wall,
/area/hallway/secondary/service)
@@ -78076,6 +78434,14 @@
/obj/item/clothing/head/fedora,
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"xYW" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/tile/neutral,
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"xYY" = (
/obj/effect/turf_decal/tile/blue{
dir = 8
@@ -78130,6 +78496,18 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"ydI" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
"yej" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/preopen{
@@ -78187,6 +78565,10 @@
},
/turf/open/floor/plasteel/white,
/area/medical/virology)
+"yjY" = (
+/obj/structure/disposalpipe/segment,
+/turf/closed/wall,
+/area/hallway/primary/central)
"ylE" = (
/obj/effect/turf_decal/trimline/blue/filled/corner,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -94221,7 +94603,7 @@ aaa
aaf
ayi
azj
-aAC
+aEx
aBS
ayi
aaf
@@ -94497,7 +94879,7 @@ aaf
aaf
aaf
dne
-asb
+doJ
bbM
bde
beT
@@ -94740,7 +95122,7 @@ aBU
ayj
ayi
ayi
-ayj
+aUe
aaf
aIg
aKO
@@ -94750,20 +95132,20 @@ aPd
aQh
aIg
aaf
-aaf
+lAu
aUe
aUe
aUe
-bak
-dmF
-bdf
+doJ
+dne
+dmH
beU
-bgE
-bbP
+dmH
+dmH
bkf
bmd
bnT
-bqk
+bqw
bsv
btZ
bvV
@@ -94992,35 +95374,35 @@ dne
dne
ayj
azl
-aAE
+aAC
aAE
aDh
-aEv
+aAC
aFF
-ayj
+aUe
aIg
aIg
-aKN
+aMF
dIs
aIg
dIs
-aQg
+aXl
aIg
aIg
aUe
-aVG
+aUe
aXe
-aYJ
-bal
+aUe
+doJ
dmF
-bdg
+dmH
byI
bgF
-dmF
-dmF
-dmF
+dmH
+baE
+baE
bnU
-bql
+bqw
bsw
baE
bvW
@@ -95250,11 +95632,11 @@ awP
ayj
azm
aAF
-aAC
+aFH
aAC
aEw
aFG
-ayj
+aUe
aIh
aJC
aKP
@@ -95265,17 +95647,17 @@ aQi
aRH
aRH
aUf
-aRH
-jeV
+kiy
+aYM
aYK
-bam
+doJ
dmH
-bdh
-byI
+dmH
+luZ
bgG
-biD
+nOZ
bkg
-bme
+lDf
bnV
bBG
bsx
@@ -95506,35 +95888,35 @@ dne
dne
ayj
azn
-aAG
+aAC
aBV
aDi
-aEx
-aFH
-aHc
+ayj
+ayj
+aUe
aIi
-aJD
-aKQ
-aKQ
-aKQ
-aKQ
-aKQ
-aKQ
aSQ
-aKQ
-aKQ
-aKQ
-aYL
-ban
-bbO
+aSQ
+aSQ
+aSQ
+aSQ
+aSQ
+aSQ
+aSQ
+aSQ
+aSQ
+aYM
+aUe
+dmH
+dmH
bdi
beV
bgH
-biE
+nOZ
bkh
lDf
-bnW
-bqn
+boc
+bqp
bsy
bub
bvX
@@ -95757,37 +96139,37 @@ anX
apt
dnk
doJ
-atu
-aRG
-dnZ
+avN
+aHk
+azp
awQ
ayk
-azo
-aAH
+dCn
+dCn
aBW
dCn
-aEy
+dCn
aFI
-aHd
+aIj
aIj
aJE
-aKR
-aMv
-aNF
-aMv
-aMv
+aYM
aMv
aKR
+aTg
+cVC
aMv
+aKR
+aTg
cVC
aXf
-aYM
+wzA
bao
-dmH
-bdh
+mpe
+okr
beW
bgI
-biF
+bki
bki
bmf
bnX
@@ -96015,40 +96397,40 @@ ahp
dhu
doJ
atu
-dnk
-dnk
-doJ
-ayj
-azp
+aRG
+aRG
+azs
+aAG
+aAC
aAI
aBX
aDj
aEz
aFJ
-ayj
aIk
-aJE
-aKS
-aMv
-aNG
-aMv
-aQj
-aMv
+aIk
+aID
aKS
dCB
-aMv
-aMv
+aXh
+aTh
+aQj
+bak
+aXh
+dCB
+xAO
+aXi
aYM
bap
-dmF
-bdi
+hpn
+hpn
beX
bgJ
biG
-bkj
-bmg
+dmH
+dmH
bnY
-bql
+bqw
bsA
baE
bvW
@@ -96273,39 +96655,39 @@ aqL
asi
atu
auG
-avN
-doJ
-ayj
-ayj
+dne
+dne
+aAO
+aAC
aAJ
-ayj
-ayj
-ayj
-ayj
-ayj
-aIl
+aAC
+aFX
+aJK
+aJK
+aJG
+aJG
aJF
-aKT
+aVH
aMw
aNH
-aMw
+aUt
aQk
-aMw
+bal
aSR
-aMw
+jeV
aVH
aXg
-aYM
-baq
-dmF
-bdj
-dmF
+fSg
+biE
+bgK
+bgK
+bgK
bgK
dmT
bkk
-dmF
+dmH
bnZ
-bql
+bqw
bsB
alK
aoe
@@ -96531,37 +96913,37 @@ doJ
atD
dnk
dnk
-doJ
+dne
ayl
aEt
aAK
aBY
aDk
-aEA
+aJK
aFK
aHe
-aIm
+aJG
aJG
aKU
-aMv
aNI
-aMv
-aQl
-aMv
+aYM
+aUu
+aSQ
+aTg
aSS
aMv
-aQl
+xCQ
aXh
-aMv
+wxr
bar
-dmF
-bdi
-dmF
+gdH
+xVe
+gcj
bgL
biI
bkl
-dmF
-bnW
+dmH
+boc
bqp
bsC
bud
@@ -96788,36 +97170,36 @@ asj
atv
auH
avO
-doJ
-ayl
-dhy
+dne
+ayj
+ayj
aAL
-aBZ
-aDl
-aEB
+ayj
+ayj
+aJK
aFL
aHf
aIn
aJH
aKV
-aJH
+aNU
aNJ
-aJH
-aQm
-aJH
+aVG
aST
-aJH
-aJH
+aST
+aST
+fnP
+aKV
aXi
aYO
-bas
-bbP
-bdk
-dmF
-bgM
-biJ
-bkm
-dmF
+dmH
+dmH
+dmH
+nOZ
+nOZ
+dmH
+dmH
+dmH
boa
bqq
bsD
@@ -97044,39 +97426,39 @@ aqN
ask
dpG
auI
-aol
-awS
-ayl
-azs
-aAM
-aCa
+aok
+dne
+aBZ
+auL
+aAN
+aDn
aDm
dhC
-ayl
+aHc
aHg
aIo
-aJI
+dhC
aKW
-aMx
-aNK
-aJI
-aQn
-aQn
+aVK
+aNL
+aUh
+bau
+bam
aSU
aUg
aVJ
aXj
aYP
bat
-dmF
-dmF
-dmF
+kEb
+uGf
bgN
-dmF
-dmF
-dmF
+bgN
+bgN
+wgX
+qYo
bob
-bql
+bqw
bsE
bue
bue
@@ -97299,17 +97681,17 @@ aRG
alE
dou
dne
-dne
+cWA
auJ
avQ
dne
-ayl
+aCc
azt
aAN
-aCb
aDn
-aED
-ayl
+aDn
+dhC
+aHj
aHh
aIp
aJJ
@@ -97317,24 +97699,24 @@ aKX
aMy
aNL
aPe
-aJH
+aXy
aRI
aSV
aUh
aVK
aXk
-aYQ
+bau
bau
bbQ
bdl
-beY
-bgO
+biK
+biK
biK
bkn
-bat
-bnW
+bmh
+pAA
bqs
-bsx
+ecO
bue
bwa
bxU
@@ -97559,37 +97941,37 @@ dne
atx
auK
avR
-awT
+aAN
aym
azu
-aAO
-aCc
-aDo
-aEE
-ayl
-aHi
-aIq
+doJ
+doJ
+aHl
aJK
-aKY
+aJK
+aJK
+aJK
+aJK
+aSZ
aMz
aNM
aPf
-aQo
-aRJ
-aSW
+aSZ
+aSZ
+aSZ
aUi
-aVL
-aXl
+aXi
+aYM
aYR
bav
bbR
-bdm
+bdo
beZ
bgP
biL
-bko
-bbN
-bnV
+bmk
+bmk
+qsb
dCN
apA
bue
@@ -97816,45 +98198,45 @@ dne
aty
auL
avS
-awU
-ayl
-ayl
-ayl
-ayl
-ayl
-ayl
-ayl
-aHj
-aIr
-dne
+aAN
+aDl
+aEv
+aRG
+aFV
+aRG
+dnZ
+aHm
+aRG
+dnZ
+aSZ
aKZ
-dne
-aNN
+aNV
+aNP
aPg
aQp
-aQp
-aSX
-aSX
+bqk
+aSZ
+nMU
aVM
aXm
-aSX
-bat
-bbS
-bdn
+bmk
+bmk
+bmk
+vju
bfa
bgQ
biH
bkp
bmh
-bnV
-bql
+bnX
+plu
avH
bug
-bCV
-bCV
-bCV
-bCV
-bCV
+rYl
+rYl
+rYl
+rYl
+rYl
bEx
bCV
bCV
@@ -98075,34 +98457,34 @@ ash
asj
awV
ayn
-ayn
+biC
dCl
-ayn
-ayn
-ayn
-aFM
+aFW
+aHk
+aHk
+aHk
aHk
aIs
-aJL
+aSZ
aLa
-dne
-aNO
+aNW
+aNP
aPh
aQq
aRK
-aSX
+aSZ
aUj
aVN
aXn
-aSX
+bmk
baw
bbT
bdo
bfb
bgR
-bfb
+niJ
bkq
-bmi
+bmk
boc
bqt
bsy
@@ -98339,19 +98721,19 @@ dne
dne
dne
aHl
-aIt
-dne
+aIu
+aSZ
aLb
-dne
+aNX
aNP
aPi
aQr
aRL
-aSX
+aSZ
aUk
aVO
aXo
-aSX
+eUK
bax
bbU
bdp
@@ -98359,7 +98741,7 @@ bfc
bgS
biM
bkr
-bat
+bmk
bnV
bql
awL
@@ -98594,31 +98976,31 @@ aaa
aaf
aaa
aaa
-aFN
-aHm
+dne
+dnk
nIb
-dne
+aSZ
aLc
-dne
+aNR
aNQ
-aPj
+aQq
aQs
-aRM
-aSX
+aSZ
+aSZ
aUl
aVP
aXp
-aSX
+rli
bay
bbV
bdq
bbN
-bgT
-bat
-bat
-bmj
+bgY
+uDW
+sjs
+bmk
bod
-bql
+hxH
bsG
bue
bue
@@ -98851,31 +99233,31 @@ awW
awW
awW
aaf
-aEH
+dne
aHn
aIu
-dne
+aSZ
bOq
-dne
+aNY
aNR
-aPk
+aQq
aQt
-aRN
-aSX
+dCx
+dhy
aUm
aVQ
aXq
aYS
-baz
-bbW
+bgQ
+bbY
bdr
bfd
-bgU
+bgY
biN
bks
-bdw
+bmh
boe
-bql
+plu
bsH
bue
aAz
@@ -99108,39 +99490,39 @@ aAP
aCd
aDp
aaa
-aEH
-aHo
+dne
+dne
dhG
-dne
-aLc
-dne
-dne
-dne
-dne
-dne
-dne
-dne
-dne
-dne
-dne
+aSZ
+aQq
+aPq
+aQy
+aQq
+aXA
+dCx
+dhy
+rVn
+eIt
+aXq
+bmm
baA
-bbX
+bbY
bds
dCI
-bgV
+bgY
biO
-bkt
+bmk
bmk
bof
-bqu
-bsz
+bql
+lCP
bue
bwg
bxX
bue
bBv
bwc
-bwc
+sBo
bzE
bPT
bzE
@@ -99368,26 +99750,26 @@ aEF
aEF
aHp
aIw
-aJM
+aSZ
aLe
-asj
-aJi
+aQq
+aRS
aPl
-asj
+aYJ
dCx
-aPl
-asj
-asj
+ewb
+fNH
+aVO
aXr
-dne
+bmm
baB
bbY
bdt
-bbY
-bgW
+dxo
+bgY
biP
bku
-bml
+bmm
bog
bqv
bsI
@@ -99397,7 +99779,7 @@ bue
bue
cUT
bwc
-bwc
+sBo
bHU
bHV
bJB
@@ -99625,36 +100007,36 @@ aEG
aFR
aHq
aIx
-aJN
-aJN
-aJN
-aJN
-aPm
-aJN
-aJN
aSZ
-aJN
-aJN
+aNF
+aNF
+dCx
+aSZ
+aSZ
+aSZ
+aSZ
+irW
+mBz
aXs
-aYT
-baC
+bmh
+bmh
bbZ
bdu
-bbZ
-bgX
+xdZ
+biQ
biQ
bkv
-bdw
+jiz
boh
bqw
-bsx
+ecO
bue
bwf
bxW
bzH
bzE
dCX
-bwc
+sBo
bzE
cVb
cVe
@@ -99879,39 +100261,39 @@ aAS
aCg
aDs
aEH
-aEH
-aHo
-aIw
-aJO
-aLf
+aHu
+aVP
+dhL
+aIE
+aMA
aMA
aNT
-aPn
+aTa
aQu
-aRO
+aTa
aTa
dhL
-aJN
-atA
-dne
-baD
-bca
+pMn
+vpX
+ksI
+bmk
+bmk
bdv
bff
bgY
biR
bkw
-bdw
-bnV
+bmm
+xHh
bqw
-bsx
+ecO
bue
aFE
bxX
bue
bBw
bwc
-bwc
+sBo
bBx
bue
bue
@@ -100136,28 +100518,28 @@ aAT
aCh
awW
aaa
-aEH
-aHo
+aHu
+aIB
aIz
aJP
aLg
aMB
-aMB
-aMB
-aMB
-aRP
+aTf
+aXo
+aYL
+aXo
aTb
aUo
-aJN
+aXo
aXu
-dne
-baE
-baE
+gHt
+wtw
+bmk
bdw
bfg
bgZ
-bdw
-baE
+pHd
+bmm
bmm
boi
bqx
@@ -100168,7 +100550,7 @@ bue
bue
cUU
aZO
-aZO
+gCM
cUU
bue
buf
@@ -100392,27 +100774,27 @@ awW
awW
awW
awW
-aaf
-aEH
+lAu
+aHv
aHs
aIA
-aJQ
+aJO
aLh
aMC
-aNU
+aJN
dCt
-aMB
-aRP
-aTb
+aQv
+bqu
+aTc
aUp
-aJO
+gIg
aXv
enV
baF
bcb
bdx
bfh
-bdx
+bfh
bfh
bkx
aYU
@@ -100425,7 +100807,7 @@ bxY
bzI
buj
bCW
-buj
+oEx
buj
cVd
buj
@@ -100436,7 +100818,7 @@ buj
bwh
bSD
buj
-buj
+klF
bWh
css
bYS
@@ -100652,11 +101034,11 @@ aaa
aaa
aFN
aHt
-aIB
-aJO
-aLi
+aFN
+aIF
+aLj
aMD
-aNV
+aJN
aPo
aQv
aRQ
@@ -100668,9 +101050,9 @@ aYV
baG
baG
baG
-baG
-baG
-baG
+auT
+auT
+auT
bdP
baG
bok
@@ -100906,14 +101288,14 @@ aaa
aaa
aaa
aaa
-aDu
-aDu
-aDu
+dne
+dne
aIC
-aJN
+dne
+aJQ
aLj
aME
-aNW
+aJN
aPp
aQw
aRR
@@ -100925,9 +101307,9 @@ aYW
baH
bfi
bfi
-bfi
-bfi
-bfi
+xYW
+vTZ
+lCL
wgP
bmn
bfi
@@ -101163,27 +101545,27 @@ aaa
aaa
aaa
aaa
-azC
-aFV
-aHu
-aID
-aJN
+anb
+doA
+doJ
+dne
+aJR
dhI
-aME
-aNW
-dCt
+aPr
+aJN
+aVS
aQx
-aMB
+caA
aTe
aUs
-aJR
-aXy
-dCE
-baQ
+aJO
+aXR
+qHJ
+muk
rrB
pqy
cXT
-cXT
+xOI
dtM
bkz
bkz
@@ -101420,20 +101802,20 @@ aaa
aaa
aaa
aaa
-azC
-aFW
-aHv
-aIE
+anb
+wnR
+doJ
+dne
aJN
aLl
-aME
-aNX
-aPq
-aPq
-aPq
-aTf
-aUt
-aVS
+aJN
+aJN
+aJN
+aJN
+aJN
+aJN
+aJN
+aJN
aXz
aYY
baQ
@@ -101677,22 +102059,22 @@ aaa
aaa
aaa
aaa
-azC
-aFW
-aHw
-aIF
-aJN
+anb
+doJ
+doJ
+doJ
+doJ
aLm
-aMF
-aNY
-aPr
-aQy
-aRS
-aTg
-aUu
+doJ
+doJ
+doJ
+fVm
+doJ
+doJ
+doJ
aVT
-aXA
-aYZ
+aXD
+gsF
baJ
rrB
bdB
@@ -101720,7 +102102,7 @@ bOp
bMT
bRp
bSE
-bTI
+mIU
aWf
bWm
css
@@ -101934,22 +102316,22 @@ aaa
aAV
aaa
aaa
-aDu
-aFX
-aHx
-aHy
-aJR
+dne
+doJ
+aio
+anb
+anb
aLn
-aJR
-aJR
-aJR
-aJR
-aJR
-aTh
-aJR
-aJR
+aio
+aio
+aio
+aio
+anb
+anb
+aio
+aio
aXB
-aZa
+kex
baK
rrB
bdC
@@ -101977,9 +102359,9 @@ dbm
bPZ
bRq
bSE
-bTI
+mIU
aWf
-bWj
+eoc
bXL
bXL
cae
@@ -102206,7 +102588,7 @@ aaa
aUv
aVU
aXC
-aWf
+gsF
baL
qBS
bdD
@@ -102234,9 +102616,9 @@ bOr
bQa
bRr
bSF
-bTI
+mIU
aWf
-bWj
+eoc
bXL
bYY
rVd
@@ -102463,7 +102845,7 @@ aaa
aUw
aVV
aXD
-aWf
+gsF
baM
rrB
rrB
@@ -102491,9 +102873,9 @@ bOs
bJD
bJD
bGy
-bTJ
+uzn
aWf
-bWj
+eoc
bXL
bYZ
cag
@@ -102977,7 +103359,7 @@ aJS
aUx
aUx
aXE
-aZd
+hdT
baO
bch
bdF
@@ -103007,9 +103389,9 @@ bRs
bGC
bTL
aWf
-bWj
+ydI
bXM
-bZa
+tDQ
cai
cbT
oTh
@@ -103234,7 +103616,7 @@ aJS
aUy
aVX
aXF
-aYZ
+hVz
baP
bcg
bdG
@@ -103262,12 +103644,12 @@ bOu
bQc
bRt
bSG
-bTI
+mIU
bVb
bWo
bXN
bZb
-ewb
+uzx
cbU
cdz
ceE
@@ -103492,7 +103874,7 @@ aUz
aVY
aXG
aZe
-baQ
+kjJ
bci
aaf
aaf
@@ -103519,7 +103901,7 @@ bMY
bQd
bRu
bSH
-bTI
+mIU
bVc
aXR
bXN
@@ -103748,8 +104130,8 @@ aJS
aUA
aVZ
aXH
-aWf
-baQ
+gsF
+kjJ
bci
aaf
aaf
@@ -104005,8 +104387,8 @@ aJS
aUx
aUx
aXI
-dCE
-baQ
+iuX
+kjJ
bci
aaf
bfr
@@ -104262,8 +104644,8 @@ aaa
aUv
aWa
aXC
-aWf
-baQ
+gsF
+kjJ
bci
aaf
bfr
@@ -104519,8 +104901,8 @@ aaa
aUw
aWb
aXJ
-aWf
-baQ
+gsF
+kjJ
bci
aaf
bfr
@@ -104762,7 +105144,7 @@ nEv
aCk
aDw
aEN
-aFZ
+aHw
aHy
aaa
aaa
@@ -104777,7 +105159,7 @@ aUv
aWc
aXK
aZg
-baQ
+kjJ
bci
aaf
bfr
@@ -105019,7 +105401,7 @@ ajx
adY
aDz
aEN
-aGg
+aIr
aHx
aHy
aHx
@@ -105034,7 +105416,7 @@ aUB
aWd
aXL
aZh
-baQ
+kjJ
bci
aaf
bfv
@@ -105533,7 +105915,7 @@ aBb
hql
aDw
aEN
-aGk
+aHA
aHA
aIJ
aEN
@@ -106603,7 +106985,7 @@ bOC
bQn
bRF
chw
-bTS
+ekE
aWf
aXR
bXW
@@ -106860,7 +107242,7 @@ bOF
dip
bRG
bLv
-bTS
+ekE
aWf
aXR
bXV
@@ -108150,7 +108532,7 @@ aWf
bWB
bXZ
bZj
-caA
+pBs
ccj
cdN
ceT
@@ -108403,12 +108785,12 @@ bQt
bJS
bGM
bTY
-aZa
+vpU
bWC
-bSS
-bZn
+yjY
+jHm
caB
-ccj
+gly
cdO
ceU
cgi
@@ -111979,7 +112361,7 @@ bdU
bfJ
bhG
bjr
-bkW
+lqU
bmO
bmO
bmO
@@ -112773,7 +113155,7 @@ grA
rBy
bUk
bVv
-bWQ
+byW
bWQ
bWQ
caL
@@ -113030,7 +113412,7 @@ bRU
bSV
bUh
bVw
-dDl
+dkR
bWR
bZu
caM
@@ -113544,7 +113926,7 @@ bRW
oub
bUm
pgY
-bWT
+scu
bYj
bWT
caN
@@ -113801,7 +114183,7 @@ bRX
bST
bUn
lkf
-qkD
+xMX
bYk
qkD
tQN
@@ -114315,7 +114697,7 @@ bRZ
bST
bST
bST
-bST
+puy
bST
bST
caQ
@@ -115086,7 +115468,7 @@ rUK
bSZ
bUr
rUK
-bST
+puy
bST
bST
caT
@@ -115855,8 +116237,8 @@ bPd
cco
byN
bTc
-rBU
-xVl
+wLo
+bUN
kys
cow
xVl
@@ -116091,7 +116473,7 @@ bec
bfO
bhG
bjA
-bkW
+lqU
alq
alq
brp
diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm
index 2f24af453e6..5b51661c0e1 100644
--- a/_maps/map_files/debug/multiz.dmm
+++ b/_maps/map_files/debug/multiz.dmm
@@ -1387,12 +1387,6 @@
dir = 1
},
/area/hallway/primary/central)
-"va" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/structure/cable,
-/obj/structure/cable,
-/turf/open/floor/plasteel,
-/area/construction)
"vt" = (
/obj/effect/turf_decal/stripes/asteroid/line{
dir = 1
@@ -2662,7 +2656,7 @@ gY
bO
bO
yt
-va
+vT
dn
dn
dn
diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm
index 3cb64ed49f3..267c5f36c3c 100644
--- a/code/__DEFINES/atmospherics.dm
+++ b/code/__DEFINES/atmospherics.dm
@@ -86,6 +86,9 @@
#define PLASMA_MINIMUM_BURN_TEMPERATURE (100+T0C)
#define PLASMA_UPPER_TEMPERATURE (1370+T0C)
#define PLASMA_OXYGEN_FULLBURN 10
+#define HYDROGEN_MINIMUM_BURN_TEMPERATURE (100+T0C)
+#define HYDROGEN_UPPER_TEMPERATURE (1370+T0C)
+#define HYDROGEN_OXYGEN_FULLBURN 10
//COLD FIRE (this is used only for the freon-o2 reaction, there is no fire still)
#define COLD_FIRE_MAXIMUM_TEMPERATURE_TO_SPREAD 263 //fire will spread if the temperature is -10 °C
diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm
index 62bdd1d8c38..a21fcbb1858 100644
--- a/code/__DEFINES/food.dm
+++ b/code/__DEFINES/food.dm
@@ -13,6 +13,7 @@
#define PINEAPPLE (1<<12)
#define BREAKFAST (1<<13)
#define CLOTH (1<<14)
+#define GRILLED (1<<15)
#define DRINK_NICE 1
#define DRINK_GOOD 2
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 2b1252eb504..ebc0e0b028e 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -489,3 +489,9 @@ GLOBAL_LIST_INIT(pda_styles, sortList(list(MONO, VT, ORBITRON, SHARE)))
// The alpha we give to stuff under tiles, if they want it
#define ALPHA_UNDERTILE 128
+
+// Anonymous names defines (used in the secrets panel)
+
+#define ANON_DISABLED "" //so it's falsey
+#define ANON_RANDOMNAMES "Random Default"
+#define ANON_EMPLOYEENAMES "Employees"
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 2ecafc1b41a..91b849bd50e 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -21,6 +21,7 @@
#define DEADMIN_POSITION_SECURITY (1<<18)
#define DEADMIN_POSITION_SILICON (1<<19)
#define SOUND_ENDOFROUND (1<<20)
+#define ADMIN_IGNORE_CULT_GHOST (1<<21)
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_ENDOFROUND|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS)
diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm
index c4ef4c20d67..d7ef3e17a33 100644
--- a/code/__DEFINES/reactions.dm
+++ b/code/__DEFINES/reactions.dm
@@ -3,6 +3,7 @@
//Plasma fire properties
#define OXYGEN_BURN_RATE_BASE 1.4
#define PLASMA_BURN_RATE_DELTA 9
+#define HYDROGEN_BURN_RATE_DELTA 8
#define PLASMA_MINIMUM_OXYGEN_NEEDED 2
#define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30
#define FIRE_CARBON_ENERGY_RELEASED 100000 //Amount of heat released per mole of burnt carbon into the tile
@@ -19,11 +20,23 @@
#define NITRYL_FORMATION_ENERGY 100000
#define NITROUS_FORMATION_ENERGY 10000
+//tritium reaction
#define TRITIUM_BURN_OXY_FACTOR 100
#define TRITIUM_BURN_TRIT_FACTOR 10
#define TRITIUM_BURN_RADIOACTIVITY_FACTOR 50000 //The neutrons gotta go somewhere. Completely arbitrary number.
#define TRITIUM_MINIMUM_RADIATION_ENERGY 0.1 //minimum 0.01 moles trit or 10 moles oxygen to start producing rads
#define MINIMUM_TRIT_OXYBURN_ENERGY 2000000 //This is calculated to help prevent singlecap bombs(Overpowered tritium/oxygen single tank bombs)
+//hydrogen reaction
+#define HYDROGEN_BURN_OXY_FACTOR 100
+#define HYDROGEN_BURN_H2_FACTOR 10
+#define MINIMUM_H2_OXYBURN_ENERGY 2000000 //This is calculated to help prevent singlecap bombs(Overpowered hydrogen/oxygen single tank bombs)
+//ammonia reaction
+#define AMMONIA_FORMATION_FACTOR 250
+#define AMMONIA_FORMATION_ENERGY 1000
+//metal hydrogen
+#define METAL_HYDROGEN_MINIMUM_HEAT 1e7
+#define METAL_HYDROGEN_MINIMUM_PRESSURE 1e7
+#define METAL_HYDROGEN_FORMATION_ENERGY 20000000
#define SUPER_SATURATION_THRESHOLD 96
#define STIMULUM_HEAT_SCALE 100000
#define STIMULUM_FIRST_RISE 0.65
@@ -37,6 +50,7 @@
#define NOBLIUM_RESEARCH_AMOUNT 1000
#define BZ_RESEARCH_SCALE 4
#define BZ_RESEARCH_MAX_AMOUNT 400
+#define METAL_HYDROGEN_RESEARCH_MAX_AMOUNT 3000
#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/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index f7a95f2f311..670a30bafb0 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -38,6 +38,8 @@
#define ROLE_LAVALAND "Lavaland"
#define ROLE_INTERNAL_AFFAIRS "Internal Affairs Agent"
#define ROLE_FAMILIES "Familes Antagonists"
+#define ROLE_SYNDICATE_CYBERSUN "Cybersun Space Syndicate" //Ghost role syndi from Forgottenship ruin
+#define ROLE_SYNDICATE_CYBERSUN_CAPTAIN "Cybersun Space Syndicate Captain" //Forgottenship captain syndie
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 1c176ee5bfc..fd2e072cef9 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 7
+#define DB_MINOR_VERSION 8
//! ## Timing subsystem
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 97fbb9b7d98..3627ee88f2b 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -449,7 +449,7 @@ Turf and target are separate in case you want to teleport some distance from a t
Gets all contents of contents and returns them all in a list.
*/
-/atom/proc/GetAllContents(var/T)
+/atom/proc/GetAllContents(var/T, ignore_flag_1)
var/list/processing_list = list(src)
if(T)
. = list()
@@ -458,14 +458,16 @@ Turf and target are separate in case you want to teleport some distance from a t
var/atom/A = processing_list[++i]
//Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed
//This is also why we don't need to check against assembled as we go along
- processing_list += A.contents
- if(istype(A,T))
- . += A
+ if (!(A.flags_1 & ignore_flag_1))
+ processing_list += A.contents
+ if(istype(A,T))
+ . += A
else
var/i = 0
while(i < length(processing_list))
var/atom/A = processing_list[++i]
- processing_list += A.contents
+ if (!(A.flags_1 & ignore_flag_1))
+ processing_list += A.contents
return processing_list
/atom/proc/GetAllContentsIgnoring(list/ignore_typecache)
diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm
index 5afabb13504..14713065956 100644
--- a/code/_onclick/hud/radial.dm
+++ b/code/_onclick/hud/radial.dm
@@ -255,6 +255,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
current_user = M.client
//Blank
menu_holder = image(icon='icons/effects/effects.dmi',loc=anchor,icon_state="nothing",layer = ABOVE_HUD_LAYER)
+ menu_holder.plane = ABOVE_HUD_PLANE
menu_holder.appearance_flags |= KEEP_APART
menu_holder.vis_contents += elements + close_button
current_user.images += menu_holder
@@ -311,4 +312,9 @@ GLOBAL_LIST_EMPTY(radial_menus)
var/answer = menu.selected_choice
qdel(menu)
GLOB.radial_menus -= uniqueid
+ if(require_near && !in_range(anchor, user))
+ return
+ if(menu.custom_check_callback)
+ if(!menu.custom_check_callback.Invoke())
+ return
return answer
diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm
index 285ec2fb94c..efed103392f 100644
--- a/code/_onclick/observer.dm
+++ b/code/_onclick/observer.dm
@@ -62,6 +62,8 @@
/mob/living/attack_ghost(mob/dead/observer/user)
if(user.client && user.health_scan)
healthscan(user, src, 1, TRUE)
+ if(user.client && user.chem_scan)
+ chemscan(user, src)
return ..()
// ---------------------------------------
diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm
index 9fb82476755..0ef24fc0a81 100644
--- a/code/controllers/configuration/entries/general.dm
+++ b/code/controllers/configuration/entries/general.dm
@@ -8,6 +8,10 @@
/datum/config_entry/flag/auto_deadmin_players
protection = CONFIG_ENTRY_LOCKED
+/datum/config_entry/number/auto_deadmin_timegate
+ config_entry_value = null
+ protection = CONFIG_ENTRY_LOCKED
+
/datum/config_entry/flag/auto_deadmin_antagonists
protection = CONFIG_ENTRY_LOCKED
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index a52a33ad353..e92968f42ac 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -484,13 +484,20 @@ SUBSYSTEM_DEF(job)
if(!C?.holder)
return TRUE
var/datum/job/job = GetJob(rank)
+
+ var/timegate_expired = FALSE
+ // allow only forcing deadminning in the first X seconds of the round if auto_deadmin_timegate is set in config
+ var/timegate = CONFIG_GET(number/auto_deadmin_timegate)
+ if(timegate && (world.time - SSticker.round_start_time > timegate))
+ timegate_expired = TRUE
+
if(!job)
return
- if((job.auto_deadmin_role_flags & DEADMIN_POSITION_HEAD) && (CONFIG_GET(flag/auto_deadmin_heads) || (C.prefs?.toggles & DEADMIN_POSITION_HEAD)))
+ if((job.auto_deadmin_role_flags & DEADMIN_POSITION_HEAD) && ((CONFIG_GET(flag/auto_deadmin_heads) && !timegate_expired) || (C.prefs?.toggles & DEADMIN_POSITION_HEAD)))
return C.holder.auto_deadmin()
- else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SECURITY) && (CONFIG_GET(flag/auto_deadmin_security) || (C.prefs?.toggles & DEADMIN_POSITION_SECURITY)))
+ else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SECURITY) && ((CONFIG_GET(flag/auto_deadmin_security) && !timegate_expired) || (C.prefs?.toggles & DEADMIN_POSITION_SECURITY)))
return C.holder.auto_deadmin()
- else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SILICON) && (CONFIG_GET(flag/auto_deadmin_silicons) || (C.prefs?.toggles & DEADMIN_POSITION_SILICON))) //in the event there's ever psuedo-silicon roles added, ie synths.
+ else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SILICON) && ((CONFIG_GET(flag/auto_deadmin_silicons) && !timegate_expired) || (C.prefs?.toggles & DEADMIN_POSITION_SILICON))) //in the event there's ever psuedo-silicon roles added, ie synths.
return C.holder.auto_deadmin()
/datum/controller/subsystem/job/proc/setup_officer_positions()
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index 4ee6f9b539c..94ce94393e8 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -756,7 +756,7 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.admin_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "shuttle_manipulator", name, 800, 600, master_ui, state)
+ ui = new(user, src, ui_key, "ShuttleManipulator", name, 800, 600, master_ui, state)
ui.open()
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 0eb7648be14..753ca500975 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -27,7 +27,11 @@ SUBSYSTEM_DEF(ticker)
var/admin_delay_notice = "" //a message to display to anyone who tries to restart the world after a delay
var/ready_for_reboot = FALSE //all roundend preparation done with, all that's left is reboot
- var/triai = 0 //Global holder for Triumvirate
+ ///If not set to ANON_DISABLED then people spawn with a themed anon name (see anonymousnames.dm)
+ var/anonymousnames = ANON_DISABLED
+ ///Boolean to see if the game needs to set up a triumvirate ai (see tripAI.dm)
+ var/triai = FALSE
+
var/tipped = 0 //Did we broadcast the tip of the day yet?
var/selected_tip // What will be the tip of the day?
@@ -472,6 +476,7 @@ SUBSYSTEM_DEF(ticker)
delay_end = SSticker.delay_end
+ anonymousnames = SSticker.anonymousnames
triai = SSticker.triai
tipped = SSticker.tipped
selected_tip = SSticker.selected_tip
diff --git a/code/datums/achievements/_achievement_data.dm b/code/datums/achievements/_achievement_data.dm
index fb943a484d7..f353ef03614 100644
--- a/code/datums/achievements/_achievement_data.dm
+++ b/code/datums/achievements/_achievement_data.dm
@@ -97,7 +97,7 @@
if(!ui)
var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/simple/achievements)
assets.send(user)
- ui = new(user, src, ui_key, "achievements", "Achievements Menu", 800, 1000, master_ui, state)
+ ui = new(user, src, ui_key, "Achievements", "Achievements Menu", 540, 680, master_ui, state)
ui.open()
/datum/achievement_data/ui_data(mob/user)
diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm
index 77e8e63fbfd..068769e36db 100644
--- a/code/datums/components/crafting/crafting.dm
+++ b/code/datums/components/crafting/crafting.dm
@@ -326,7 +326,7 @@
cur_subcategory = subcats[1]
else
cur_subcategory = CAT_NONE
- ui = new(user, src, ui_key, "personal_crafting", "Crafting Menu", 700, 800, master_ui, state)
+ ui = new(user, src, ui_key, "PersonalCrafting", "Crafting Menu", 700, 800, master_ui, state)
ui.open()
/datum/component/personal_crafting/ui_data(mob/user)
diff --git a/code/datums/components/gps.dm b/code/datums/components/gps.dm
index d3f1a91b117..200ec2b956b 100644
--- a/code/datums/components/gps.dm
+++ b/code/datums/components/gps.dm
@@ -89,7 +89,7 @@ GLOBAL_LIST_EMPTY(GPS_list)
// Variable window height, depending on how many GPS units there are
// to show, clamped to relatively safe range.
var/gps_window_height = clamp(325 + GLOB.GPS_list.len * 14, 325, 700)
- ui = new(user, src, ui_key, "gps", "Global Positioning System", 470, gps_window_height, master_ui, state) //width, height
+ ui = new(user, src, ui_key, "Gps", "Global Positioning System", 470, gps_window_height, master_ui, state) //width, height
ui.open()
ui.set_autoupdate(state = updating)
diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm
index a6d28a97b73..ba3d4b48678 100644
--- a/code/datums/components/uplink.dm
+++ b/code/datums/components/uplink.dm
@@ -125,9 +125,8 @@
active = TRUE
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "uplink", name, 620, 580, master_ui, state)
+ ui = new(user, src, ui_key, "Uplink", name, 620, 580, master_ui, state)
ui.set_autoupdate(FALSE) // This UI is only ever opened by one person, and never is updated outside of user input.
- ui.set_style("syndicate")
ui.open()
/datum/component/uplink/ui_data(mob/user)
@@ -136,8 +135,7 @@
var/list/data = list()
data["telecrystals"] = telecrystals
data["lockable"] = lockable
- data["compact_mode"] = compact_mode
-
+ data["compactMode"] = compact_mode
return data
/datum/component/uplink/ui_static_data(mob/user)
diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm
index f751de8bc86..8a3e931bdac 100644
--- a/code/datums/explosion.dm
+++ b/code/datums/explosion.dm
@@ -198,8 +198,8 @@ GLOBAL_LIST_EMPTY(explosions)
var/list/items = list()
for(var/I in T)
var/atom/A = I
- if (!(A.flags_1 & PREVENT_CONTENTS_EXPLOSION_1)) //The atom/contents_explosion() proc returns null if the contents ex_acting has been handled by the atom, and TRUE if it hasn't.
- items += A.GetAllContents()
+ if (!(A.flags_1 & PREVENT_CONTENTS_EXPLOSION_1))
+ items += A.GetAllContents(ignore_flag_1 = PREVENT_CONTENTS_EXPLOSION_1)
for(var/O in items)
var/atom/A = O
if(!QDELETED(A))
diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm
index 8b74d8e5fac..c2a01c26d63 100644
--- a/code/datums/materials/basemats.dm
+++ b/code/datums/materials/basemats.dm
@@ -270,6 +270,19 @@ Unless you know what you're doing, only use the first three numbers. They're in
qdel(source.GetComponent(/datum/component/hot_ice, "plasma", amount*150, amount*20+300))
return ..()
+/datum/material/metalhydrogen
+ name = "Metal Hydrogen"
+ id = "metal hydrogen"
+ desc = "Solid metallic hydrogen. Some say it should be impossible"
+ color = "#f2d5d7"
+ alpha = 150
+ categories = list(MAT_CATEGORY_RIGID = TRUE)
+ sheet_type = /obj/item/stack/sheet/mineral/metal_hydrogen
+ value_per_unit = 0.35
+ beauty_modifier = 0.35
+ strength_modifier = 1.2
+ armor_modifiers = list("melee" = 1.35, "bullet" = 1.3, "laser" = 1.3, "energy" = 1.25, "bomb" = 0.7, "bio" = 1, "rad" = 1, "fire" = 1.3, "acid" = 1)
+
//I don't like sand. It's coarse, and rough, and irritating, and it gets everywhere.
/datum/material/sand
name = "sand"
diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm
index bbd39924d84..cc4aff1602a 100644
--- a/code/datums/mutations/speech.dm
+++ b/code/datums/mutations/speech.dm
@@ -14,7 +14,7 @@
/datum/mutation/human/wacky
name = "Wacky"
- desc = "Unknown."
+ desc = "You are not a clown. You are the entire circus."
quality = MINOR_NEGATIVE
text_gain_indication = "You feel an off sensation in your voicebox."
text_lose_indication = "The off sensation passes."
diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm
index 52548423a7a..6006fdda3d7 100644
--- a/code/datums/ruins/space.dm
+++ b/code/datums/ruins/space.dm
@@ -301,7 +301,7 @@
suffix = "forgottenship.dmm"
name = "Syndicate Forgotten Ship"
description = "Seemingly abandoned ship went of course right into NT controlled space. It seems that malfunction caused most systems to turn off, except for sleepers."
-
+
/datum/map_template/ruin/space/hellfactory
id = "hellfactory"
suffix = "hellfactory.dmm"
diff --git a/code/datums/spawners_menu.dm b/code/datums/spawners_menu.dm
index 9107e45e051..a6f49e9c323 100644
--- a/code/datums/spawners_menu.dm
+++ b/code/datums/spawners_menu.dm
@@ -9,7 +9,7 @@
/datum/spawners_menu/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.observer_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "spawners_menu", "Spawners Menu", 700, 600, master_ui, state)
+ ui = new(user, src, ui_key, "SpawnersMenu", "Spawners Menu", 700, 600, master_ui, state)
ui.open()
/datum/spawners_menu/ui_data(mob/user)
diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm
index eb689593f03..d38d8f76bcf 100644
--- a/code/datums/traits/negative.dm
+++ b/code/datums/traits/negative.dm
@@ -111,7 +111,7 @@
if("Cook")
heirloom_type = pick(/obj/item/reagent_containers/food/condiment/saltshaker, /obj/item/kitchen/rollingpin, /obj/item/clothing/head/chefhat)
if("Botanist")
- heirloom_type = pick(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/storage/bag/plants, /obj/item/toy/plush/beeplushie)
+ heirloom_type = pick(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/toy/plush/beeplushie)
if("Bartender")
heirloom_type = pick(/obj/item/reagent_containers/glass/rag, /obj/item/clothing/head/that, /obj/item/reagent_containers/food/drinks/shaker)
if("Curator")
@@ -183,7 +183,8 @@
var/list/slots = list(
"in your left pocket" = ITEM_SLOT_LPOCKET,
"in your right pocket" = ITEM_SLOT_RPOCKET,
- "in your backpack" = ITEM_SLOT_BACKPACK
+ "in your backpack" = ITEM_SLOT_BACKPACK,
+ "in your hands" = ITEM_SLOT_HANDS
)
where = H.equip_in_one_of_slots(heirloom, slots, FALSE) || "at your feet"
diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm
index 55263a326a1..46d1a7261f6 100644
--- a/code/datums/wires/_wires.dm
+++ b/code/datums/wires/_wires.dm
@@ -219,7 +219,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
- ui = new(user, src, ui_key, "wires", "[holder.name] Wires", 350, 150 + wires.len * 30, master_ui, state)
+ ui = new(user, src, ui_key, "Wires", "[holder.name] Wires", 350, 150 + wires.len * 30, master_ui, state)
ui.open()
/datum/wires/ui_data(mob/user)
diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm
index 786a100ca4f..d62a605e1c9 100644
--- a/code/datums/world_topic.dm
+++ b/code/datums/world_topic.dm
@@ -27,11 +27,16 @@
/datum/world_topic/proc/TryRun(list/input)
key_valid = config && (CONFIG_GET(string/comms_key) == input["key"])
- if(require_comms_key && !key_valid)
- return "Bad Key"
input -= "key"
- . = Run(input)
- if(islist(.))
+ if(require_comms_key && !key_valid)
+ . = "Bad Key"
+ if (input["format"] == "json")
+ . = list("error" = .)
+ else
+ . = Run(input)
+ if (input["format"] == "json")
+ . = json_encode(.)
+ else if(islist(.))
. = list2params(.)
/datum/world_topic/proc/Run(list/input)
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 625708dd091..7164b7676c3 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -144,7 +144,7 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "sleeper", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Sleeper", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/sleeper/AltClick(mob/user)
diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index a1ba8f7f94d..054e75b348f 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -99,7 +99,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
. = ..()
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "announcement_system", "Automated Announcement System", 500, 225, master_ui, state)
+ ui = new(user, src, ui_key, "AutomatedAnnouncement", "Automated Announcement System", 500, 225, master_ui, state)
ui.open()
/obj/machinery/announcement_system/ui_data()
diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm
index c75ed084a09..1f3c57abcf0 100644
--- a/code/game/machinery/bank_machine.dm
+++ b/code/game/machinery/bank_machine.dm
@@ -65,7 +65,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "bank_machine", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "BankMachine", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/bank_machine/ui_data(mob/user)
diff --git a/code/game/machinery/canister_frame.dm b/code/game/machinery/canister_frame.dm
new file mode 100644
index 00000000000..f2005c6a7ac
--- /dev/null
+++ b/code/game/machinery/canister_frame.dm
@@ -0,0 +1,91 @@
+//Canister Frames
+/obj/structure/canister_frame
+ name = "canister frame"
+ icon = 'icons/obj/atmos.dmi'
+ icon_state = "frame_0"
+ density = TRUE
+
+/obj/structure/canister_frame/examine(user)
+ . = ..()
+
+/obj/structure/canister_frame/deconstruct(disassembled = TRUE)
+ if (!(flags_1 & NODECONSTRUCT_1))
+ new /obj/item/stack/sheet/metal(loc, 5)
+ qdel(src)
+
+/obj/structure/canister_frame/machine
+ name = "canister frame"
+ desc = "A frame used to build different kinds of canisters."
+
+/obj/structure/canister_frame/machine/frame_tier_0
+ name = "Tier 0 canister frame"
+ icon_state = "frame_0"
+
+/obj/structure/canister_frame/machine/frame_tier_1
+ name = "Tier 1 canister frame"
+ icon_state = "frame_1"
+
+
+/obj/structure/canister_frame/machine/frame_tier_2
+ name = "Tier 2 canister frame"
+ icon_state = "frame_2"
+
+///Proc to build the different tiers, if the sheet used is right, it will upgrade the frame or build the respective canister tier
+/obj/structure/canister_frame/machine/frame_tier_0/attackby(obj/item/S, mob/user, params)
+ if (istype(S, /obj/item/stack/sheet/metal))
+ var/obj/item/stack/ST = S
+ if (ST.get_amount() < 5)
+ to_chat(user, "You need at least five sheets for that!")
+ return
+ if (do_after(user,15, target = src))
+ new /obj/machinery/portable_atmospherics/canister/tier_1(drop_location())
+ qdel(src)
+ ST.use(5)
+ else if (istype(S, /obj/item/stack/sheet/plasteel))
+ var/obj/item/stack/ST = S
+ if (ST.get_amount() < 5)
+ to_chat(user, "You need at least five sheets for that!")
+ return
+ if(do_after(user,15, target = src))
+ new /obj/structure/canister_frame/machine/frame_tier_1(drop_location())
+ qdel(src)
+ ST.use(5)
+ else
+ return ..()
+
+///Proc to build the different tiers, if the sheet used is right, it will upgrade the frame or build the respective canister tier
+/obj/structure/canister_frame/machine/frame_tier_1/attackby(obj/item/S, mob/user, params)
+ if (istype(S, /obj/item/stack/sheet/mineral/titanium))
+ var/obj/item/stack/ST = S
+ if (ST.get_amount() < 5)
+ to_chat(user, "You need at least five sheets for that!")
+ return
+ if (do_after(user,15, target = src))
+ new /obj/machinery/portable_atmospherics/canister/tier_2(drop_location())
+ qdel(src)
+ ST.use(5)
+ else if (istype(S, /obj/item/stack/sheet/bluespace_crystal))
+ var/obj/item/stack/ST = S
+ if (ST.get_amount() < 1)
+ to_chat(user, "You need at least one crystal for that!")
+ return
+ if (do_after(user,15, target = src))
+ new /obj/structure/canister_frame/machine/frame_tier_2(drop_location())
+ qdel(src)
+ ST.use(1)
+ else
+ return ..()
+
+///Proc to build the different tiers, if the sheet used is right, it will upgrade the frame or build the respective canister tier
+/obj/structure/canister_frame/machine/frame_tier_2/attackby(obj/item/S, mob/user, params)
+ if (istype(S, /obj/item/stack/sheet/mineral/plastitanium))
+ var/obj/item/stack/ST = S
+ if (ST.get_amount() < 5)
+ to_chat(user, "You need at least five sheets for that!")
+ return
+ if (do_after(user,15, target = src))
+ new /obj/machinery/portable_atmospherics/canister/tier_3(drop_location())
+ qdel(src)
+ ST.use(5)
+ else
+ return ..()
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index fdb3751872c..04e35bcb6e3 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -23,7 +23,7 @@
find_table()
/obj/machinery/computer/operating/Destroy()
- for(var/direction in GLOB.cardinals)
+ for(var/direction in GLOB.alldirs)
table = locate(/obj/structure/table/optable, get_step(src, direction))
if(table && table.computer == src)
table.computer = null
@@ -52,7 +52,7 @@
advanced_surgeries |= D.surgery
/obj/machinery/computer/operating/proc/find_table()
- for(var/direction in GLOB.cardinals)
+ for(var/direction in GLOB.alldirs)
table = locate(/obj/structure/table/optable, get_step(src, direction))
if(table)
table.computer = src
@@ -66,7 +66,7 @@
/obj/machinery/computer/operating/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.not_incapacitated_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "operating_computer", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "OperatingComputer", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/operating/ui_data(mob/user)
@@ -96,7 +96,6 @@
else
data["patient"] = null
return data
-
switch(patient.stat)
if(CONSCIOUS)
data["patient"]["stat"] = "Conscious"
@@ -118,8 +117,8 @@
data["patient"]["fireLoss"] = patient.getFireLoss()
data["patient"]["toxLoss"] = patient.getToxLoss()
data["patient"]["oxyLoss"] = patient.getOxyLoss()
+ data["procedures"] = list()
if(patient.surgeries.len)
- data["procedures"] = list()
for(var/datum/surgery/procedure in patient.surgeries)
var/datum/surgery_step/surgery_step = procedure.get_surgery_step()
var/chems_needed = surgery_step.get_chem_list()
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index 6ffef5fb5db..a918a6bc88f 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -26,7 +26,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "ai_restorer", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AiRestorer", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/aifixer/ui_data(mob/user)
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index 5c61a0dca9d..cd88eaa10fa 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -25,7 +25,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_alert", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosAlertConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/atmos_alert/ui_data(mob/user)
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index 7c4222a07ea..06ea408add3 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -128,7 +128,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_control", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosControlConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/atmos_control/ui_data(mob/user)
@@ -280,7 +280,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_control", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosControlConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/atmos_control/tank/ui_data(mob/user)
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index ffcf84eae21..3a877dbdefd 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -79,7 +79,7 @@
user.client.register_map_obj(cam_plane_master)
user.client.register_map_obj(cam_background)
// Open UI
- ui = new(user, src, ui_key, "camera_console", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "CameraConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/security/ui_data()
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 44a33a6f94c..39740b5cd89 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -81,7 +81,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
- ui = new(user, src, ui_key, "crew", "crew monitor", 800, 600 , master_ui, state)
+ ui = new(user, src, ui_key, "CrewConsole", "crew monitor", 800, 600 , master_ui, state)
ui.open()
/datum/crewmonitor/proc/show(mob/M, source)
diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm
index da5e9f887ad..97f167af086 100644
--- a/code/game/machinery/computer/dna_console.dm
+++ b/code/game/machinery/computer/dna_console.dm
@@ -1,2009 +1,2009 @@
-/// Base timeout for creating mutation activators and other injectors
-#define INJECTOR_TIMEOUT 100
-/// Maximum number of genetic makeup storage slots in DNA Console
-#define NUMBER_OF_BUFFERS 3
-/// Timeout for DNA Scramble in DNA Consoles
-#define SCRAMBLE_TIMEOUT 600
-/// Timeout for using the Joker feature to solve a gene in DNA Console
-#define JOKER_TIMEOUT 12000
-/// How much time DNA Scanner upgrade tiers remove from JOKER_TIMEOUT
-#define JOKER_UPGRADE 3000
-
-/// Maximum value for radiaton strength when pulsing enzymes
-#define RADIATION_STRENGTH_MAX 15
-/// Larger multipliers will affect the range of values when pulsing enzymes
-#define RADIATION_STRENGTH_MULTIPLIER 1
-
-/// Maximum value for the radiation pulse duration when pulsing enzymes
-#define RADIATION_DURATION_MAX 30
-/// Large values reduce pulse accuracy and may pulse other enzymes than selected
-#define RADIATION_ACCURACY_MULTIPLIER 3
-
-/// Special status indicating a scanner occupant is transforming eg. from monkey to human
-#define STATUS_TRANSFORMING 4
-
-/// Multiplier for how much radiation received from DNA Console functionality
-#define RADIATION_IRRADIATION_MULTIPLIER 1
-
-/// Flag for the mutation ref search system. Search will include scanner occupant
-#define SEARCH_OCCUPANT 1
-/// Flag for the mutation ref search system. Search will include console storage
-#define SEARCH_STORED 2
-/// Flag for the mutation ref search system. Search will include diskette storage
-#define SEARCH_DISKETTE 4
-/// Flag for the mutation ref search system. Search will include advanced injector mutations
-#define SEARCH_ADV_INJ 8
-
-/obj/machinery/computer/scan_consolenew
- name = "DNA Console"
- desc = "Scan DNA."
- icon_screen = "dna"
- icon_keyboard = "med_key"
- density = TRUE
- circuit = /obj/item/circuitboard/computer/scan_consolenew
-
- use_power = IDLE_POWER_USE
- idle_power_usage = 10
- active_power_usage = 400
- light_color = LIGHT_COLOR_BLUE
-
- /// Link to the techweb's stored research. Used to retrieve stored mutations
- var/datum/techweb/stored_research
- /// Maximum number of mutations that DNA Consoles are able to store
- var/max_storage = 6
- /// Duration for enzyme radiation pulses
- var/radduration = 2
- /// Strength for enzyme radiation pulses
- var/radstrength = 1
- /// Maximum number of chromosomes that DNA Consoles are able to store.
- var/max_chromosomes = 6
- /// Maximum number of enzymes we can store
- var/list/genetic_makeup_buffer[NUMBER_OF_BUFFERS]
- /// List of all mutations stored on the DNA Console
- var/list/stored_mutations = list()
- /// List of all chromosomes stored in the DNA Console
- var/list/stored_chromosomes = list()
- /// Assoc list of all advanced injectors. Keys are injector names. Values are lists of mutations.
- var/list/list/injector_selection = list()
- /// Maximum number of advanced injectors that DNA Consoles store
- var/max_injector_selections = 2
- /// Maximum number of mutation that an advanced injector can store
- var/max_injector_mutations = 10
- /// Maximum total instability of all combined mutations allowed on an advanced injector
- var/max_injector_instability = 50
-
- /// World time when injectors are ready to be printed
- var/injectorready = 0
- /// World time when JOKER algorithm can be used in DNA Consoles
- var/jokerready = 0
- /// World time when Scramble can be used in DNA Consoles
- var/scrambleready = 0
-
- /// Currently stored genetic data diskette
- var/obj/item/disk/data/diskette = null
-
- /// Current delayed action, used for delayed enzyme transfer on scanner door close
- var/list/delayed_action = null
-
- /// Index of the enzyme being modified during delayed enzyme pulse operations
- var/rad_pulse_index = 0
- /// World time when the enzyme pulse should complete
- var/rad_pulse_timer = 0
-
- /// Used for setting tgui data - Whether the connected DNA Scanner is usable
- var/can_use_scanner = FALSE
- /// Used for setting tgui data - Whether the current DNA Scanner occupant is viable for genetic modification
- var/is_viable_occupant = FALSE
- /// Used for setting tgui data - Whether Scramble DNA is ready
- var/is_scramble_ready = FALSE
- /// Used for setting tgui data - Whether JOKER algorithm is ready
- var/is_joker_ready = FALSE
- /// Used for setting tgui data - Whether injectors are ready to be printed
- var/is_injector_ready = FALSE
- /// Used for setting tgui data - Wheher an enzyme pulse operation is ongoing
- var/is_pulsing_rads = FALSE
- /// Used for setting tgui data - Time until scramble is ready
- var/time_to_scramble = 0
- /// Used for setting tgui data - Time until joker is ready
- var/time_to_joker = 0
- /// Used for setting tgui data - Time until injectors are ready
- var/time_to_injector = 0
- /// Used for setting tgui data - Time until the enzyme pulse is complete
- var/time_to_pulse = 0
-
- /// Currently connected DNA Scanner
- var/obj/machinery/dna_scannernew/connected_scanner = null
- /// Current DNA Scanner occupant
- var/mob/living/carbon/scanner_occupant = null
-
- /// Used for setting tgui data - List of occupant mutations
- var/list/tgui_occupant_mutations = list()
- /// Used for setting tgui data - List of DNA Console stored mutations
- var/list/tgui_console_mutations = list()
- /// Used for setting tgui data - List of diskette stored mutations
- var/list/tgui_diskette_mutations = list()
- /// Used for setting tgui data - List of DNA Console chromosomes
- var/list/tgui_console_chromosomes = list()
- /// Used for setting tgui data - List of occupant mutations
- var/list/tgui_genetic_makeup = list()
- /// Used for setting tgui data - List of occupant mutations
- var/list/tgui_advinjector_mutations = list()
-
-
- /// State of tgui view, i.e. which tab is currently active, or which genome we're currently looking at.
- var/list/list/tgui_view_state = list()
-
-/obj/machinery/computer/scan_consolenew/process()
- . = ..()
-
- // This is for pulsing the UI element with radiation as part of genetic makeup
- // If rad_pulse_index > 0 then it means we're attempting a rad pulse
- if((rad_pulse_index > 0) && (rad_pulse_timer <= world.time))
- rad_pulse()
- return
-
-/obj/machinery/computer/scan_consolenew/attackby(obj/item/I, mob/user, params)
- // Store chromosomes in the console if there's room
- if (istype(I, /obj/item/chromosome))
- if(LAZYLEN(stored_chromosomes) < max_chromosomes)
- I.forceMove(src)
- stored_chromosomes += I
- to_chat(user, "You insert [I].")
- else
- to_chat(user, "You cannot store any more chromosomes!")
- return
-
- // Insert data disk if console disk slot is empty
- // Swap data disk if there is one already a disk in the console
- if (istype(I, /obj/item/disk/data)) //INSERT SOME DISKETTES
- if (!user.transferItemToLoc(I,src))
- return
- if(diskette)
- diskette.forceMove(drop_location())
- diskette = null
- diskette = I
- to_chat(user, "You insert [I].")
- return
-
- // Recycle non-activator used injectors
- // Turn activator used injectors (aka research injectors) to chromosomes
- if(istype(I, /obj/item/dnainjector/activator))
- var/obj/item/dnainjector/activator/A = I
- if(A.used)
- to_chat(user,"Recycled [I].")
- if(A.research)
- if(prob(60))
- var/c_typepath = generate_chromosome()
- var/obj/item/chromosome/CM = new c_typepath (drop_location())
- if(LAZYLEN(stored_chromosomes) < max_chromosomes)
- CM.forceMove(src)
- stored_chromosomes += CM
- to_chat(user,"[capitalize(CM.name)] added to storage.")
- else
- to_chat(user, "You cannot store any more chromosomes!")
- to_chat(user, "[capitalize(CM.name)] added on top of the console.")
- else
- to_chat(user, "There was not enough genetic data to extract a viable chromosome.")
- qdel(I)
- return
-
- return ..()
-
-/obj/machinery/computer/scan_consolenew/Initialize()
- . = ..()
-
- // Connect with a nearby DNA Scanner on init
- connect_to_scanner()
-
- // Set appropriate ready timers and limits for machines functions
- injectorready = world.time + INJECTOR_TIMEOUT
- scrambleready = world.time + SCRAMBLE_TIMEOUT
- jokerready = world.time + JOKER_TIMEOUT
-
- // Set the default tgui state
- set_default_state()
-
- // Link machine with research techweb. Used for discovering and accessing
- // already discovered mutations
- stored_research = SSresearch.science_tech
-
-/obj/machinery/computer/scan_consolenew/examine(mob/user)
- . = ..()
-
-/obj/machinery/computer/scan_consolenew/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
- . = ..()
-
- // Most of ui_interact is spent setting variables for passing to the tgui
- // interface.
- // We can also do some general state processing here too as it's a good
- // indication that a player is using the console.
-
- var/scanner_op = scanner_operational()
- var/can_modify_occ = can_modify_occupant()
-
- // Check for connected AND operational scanner.
- if(scanner_op)
- can_use_scanner = TRUE
- else
- can_use_scanner = FALSE
- connected_scanner = null
- is_viable_occupant = FALSE
-
- // Check for a viable occupant in the scanner.
- if(can_modify_occ)
- is_viable_occupant = TRUE
- else
- is_viable_occupant = FALSE
-
-
- // Populates various buffers for passing to tgui
- build_mutation_list(can_modify_occ)
- build_genetic_makeup_list()
-
- // Populate variables for passing to tgui interface
- is_scramble_ready = (scrambleready < world.time)
- time_to_scramble = round((scrambleready - world.time)/10)
-
- is_joker_ready = (jokerready < world.time)
- time_to_joker = round((jokerready - world.time)/10)
-
- is_injector_ready = (injectorready < world.time)
- time_to_injector = round((injectorready - world.time)/10)
-
- is_pulsing_rads = ((rad_pulse_index > 0) && (rad_pulse_timer > world.time))
- time_to_pulse = round((rad_pulse_timer - world.time)/10)
-
- // Attempt to update tgui ui, open and update if needed.
- ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
-
- if(!ui)
- ui = new(user, src, ui_key, "scan_consolenew", name, 515, 710, master_ui, state)
- ui.open()
-
-/obj/machinery/computer/scan_consolenew/ui_data(mob/user)
- var/list/data = list()
-
- data["view"] = tgui_view_state
- data["storage"] = list()
-
- // This block of code generates the huge data structure passed to the tgui
- // interface for displaying all the various bits of console/scanner data
- // Should all be very self-explanatory
- data["isScannerConnected"] = can_use_scanner
- if(can_use_scanner)
- data["scannerOpen"] = connected_scanner.state_open
- data["scannerLocked"] = connected_scanner.locked
- data["radStrength"] = radstrength
- data["radDuration"] = radduration
- data["stdDevStr"] = radstrength * RADIATION_STRENGTH_MULTIPLIER
- switch(RADIATION_ACCURACY_MULTIPLIER / (radduration + (connected_scanner.precision_coeff ** 2))) //hardcoded values from a z-table for a normal distribution
- if(0 to 0.25)
- data["stdDevAcc"] = ">95 %"
- if(0.25 to 0.5)
- data["stdDevAcc"] = "68-95 %"
- if(0.5 to 0.75)
- data["stdDevAcc"] = "55-68 %"
- else
- data["stdDevAcc"] = "<38 %"
-
- data["isViableSubject"] = is_viable_occupant
- if(is_viable_occupant)
- data["subjectName"] = scanner_occupant.name
- if(scanner_occupant.transformation_timer)
- data["subjectStatus"] = STATUS_TRANSFORMING
- else
- data["subjectStatus"] = scanner_occupant.stat
- data["subjectHealth"] = scanner_occupant.health
- data["subjectRads"] = scanner_occupant.radiation/(RAD_MOB_SAFE/100)
- data["subjectEnzymes"] = scanner_occupant.dna.unique_enzymes
- data["isMonkey"] = ismonkey(scanner_occupant)
- data["subjectUNI"] = scanner_occupant.dna.uni_identity
- data["storage"]["occupant"] = tgui_occupant_mutations
- //data["subjectMutations"] = tgui_occupant_mutations
- else
- data["subjectName"] = null
- data["subjectStatus"] = null
- data["subjectHealth"] = null
- data["subjectRads"] = null
- data["subjectEnzymes"] = null
- //data["subjectMutations"] = null
- data["storage"]["occupant"] = null
-
- data["hasDelayedAction"] = (delayed_action != null)
- data["isScrambleReady"] = is_scramble_ready
- data["isJokerReady"] = is_joker_ready
- data["isInjectorReady"] = is_injector_ready
- data["scrambleSeconds"] = time_to_scramble
- data["jokerSeconds"] = time_to_joker
- data["injectorSeconds"] = time_to_injector
- data["isPulsingRads"] = is_pulsing_rads
- data["radPulseSeconds"] = time_to_pulse
-
- if(diskette != null)
- data["hasDisk"] = TRUE
- data["diskCapacity"] = diskette.max_mutations - LAZYLEN(diskette.mutations)
- data["diskReadOnly"] = diskette.read_only
- //data["diskMutations"] = tgui_diskette_mutations
- data["storage"]["disk"] = tgui_diskette_mutations
- data["diskHasMakeup"] = (LAZYLEN(diskette.genetic_makeup_buffer) > 0)
- data["diskMakeupBuffer"] = diskette.genetic_makeup_buffer.Copy()
- else
- data["hasDisk"] = FALSE
- data["diskCapacity"] = 0
- data["diskReadOnly"] = TRUE
- //data["diskMutations"] = null
- data["storage"]["disk"] = null
- data["diskHasMakeup"] = FALSE
- data["diskMakeupBuffer"] = null
-
- data["mutationCapacity"] = max_storage - LAZYLEN(stored_mutations)
- //data["mutationStorage"] = tgui_console_mutations
- data["storage"]["console"] = tgui_console_mutations
- data["chromoCapacity"] = max_chromosomes - LAZYLEN(stored_chromosomes)
- data["chromoStorage"] = tgui_console_chromosomes
- data["makeupCapacity"] = NUMBER_OF_BUFFERS
- data["makeupStorage"] = tgui_genetic_makeup
-
- //data["advInjectors"] = tgui_advinjector_mutations
- data["storage"]["injector"] = tgui_advinjector_mutations
- data["maxAdvInjectors"] = max_injector_selections
-
- return data
-
-/obj/machinery/computer/scan_consolenew/ui_act(action, var/list/params)
- if(..())
- return TRUE
-
- . = TRUE
-
- add_fingerprint(usr)
- usr.set_machine(src)
-
- switch(action)
- // Connect this DNA Console to a nearby DNA Scanner
- // Usually only activate as an option if there is no connected scanner
- if("connect_scanner")
- connect_to_scanner()
- return
-
- // Toggle the door open/closed status on attached DNA Scanner
- if("toggle_door")
- // GUARD CHECK - Scanner still connected and operational?
- if(!scanner_operational())
- return
-
- connected_scanner.toggle_open(usr)
- return
-
- // Toggle the door bolts on the attached DNA Scanner
- if("toggle_lock")
- // GUARD CHECK - Scanner still connected and operational?
- if(!scanner_operational())
- return
-
- connected_scanner.locked = !connected_scanner.locked
- return
-
- // Scramble scanner occupant's DNA
- if("scramble_dna")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- // GUARD CHECK - Is scramble DNA actually ready?
- if(!can_modify_occupant() || !(scrambleready < world.time))
- return
-
- scanner_occupant.dna.remove_all_mutations(list(MUT_NORMAL, MUT_EXTRA))
- scanner_occupant.dna.generate_dna_blocks()
- scrambleready = world.time + SCRAMBLE_TIMEOUT
- to_chat(usr,"DNA scrambled.")
- scanner_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER*50/(connected_scanner.damage_coeff ** 2)
- return
-
- // Check whether a specific mutation is eligible for discovery within the
- // scanner occupant
- // This is additionally done when a mutation's tab is selected in the tgui
- // interface. This is because some mutations, such as Monkified on monkeys,
- // are infact completed by default but not yet discovered. Likewise, all
- // mutations can have their sequence completed while Monkified is still an
- // active mutation and thus won't immediately be discovered but could be
- // discovered when Monkified is removed
- // ---------------------------------------------------------------------- //
- // params["alias"] - Alias of a mutation. The alias is the "hidden" name of
- // the mutation, for example "Mutation 5" or "Mutation 33"
- if("check_discovery")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
- // unexpected.
- if(!(scanner_occupant == connected_scanner.occupant))
- return
-
- check_discovery(params["alias"])
- return
-
- // Check all mutations of the occupant and check if any are discovered.
- // This is called when the Genetic Sequencer is selected. It'll do things
- // like immediately discover Monkified without needing to click through
- // the mutation tabs and handle cases where mutations are solved but not
- // discovered due to the Monkified mutation being active then removed.
- if("all_check_discovery")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
- // unexpected.
- if(!(scanner_occupant == connected_scanner.occupant))
- return
-
- // Go over all standard mutations and check if they've been discovered.
- for(var/mutation_type in scanner_occupant.dna.mutation_index)
- var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(mutation_type)
- check_discovery(HM.alias)
-
- return
-
- // Set a gene in a mutation's genetic sequence. Will also check for mutations
- // discovery as part of the process.
- // ---------------------------------------------------------------------- //
- // params["alias"] - Alias of a mutation. The alias is the "hidden" name of
- // the mutation, for example "Mutation 5" or "Mutation 33"
- // params["gene"] - The letter of the new gene
- // params["pos"] - The BYOND index of the letter in the gene sequence to be
- // changed. Expects a text string from TGUI and will convert to a number
- if("pulse_gene")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
- // unexpected.
- if(!(scanner_occupant == connected_scanner.occupant))
- return
-
- // GUARD CHECK - Is the occupant currently undergoing some form of
- // transformation? If so, we don't want to be pulsing genes.
- if(scanner_occupant.transformation_timer)
- to_chat(usr,"Gene pulse failed: The scanner occupant undergoing a transformation.")
- return
-
- // Resolve mutation's BYOND path from the alias
- var/alias = params["alias"]
- var/path = GET_MUTATION_TYPE_FROM_ALIAS(alias)
-
- // Make sure the occupant still has this mutation
- if(!(path in scanner_occupant.dna.mutation_index))
- return
-
- // Resolve BYOND path to genome sequence of scanner occupant
- var/sequence = GET_GENE_STRING(path, scanner_occupant.dna)
-
- var/newgene = params["gene"]
- var/genepos = text2num(params["pos"])
-
- // If the new gene is J, this means we're dealing with a JOKER
- // GUARD CHECK - Is JOKER actually ready?
- if((newgene == "J") && (jokerready < world.time))
- var/truegenes = GET_SEQUENCE(path)
- newgene = truegenes[genepos]
- jokerready = world.time + JOKER_TIMEOUT - (JOKER_UPGRADE * (connected_scanner.precision_coeff-1))
-
- // If the gene is an X, we want to update the default genes with the new
- // X to allow highlighting logic to work on the tgui interface.
- if(newgene == "X")
- var/defaultseq = scanner_occupant.dna.default_mutation_genes[path]
- defaultseq = copytext_char(defaultseq, 1, genepos) + newgene + copytext_char(defaultseq, genepos + 1)
- scanner_occupant.dna.default_mutation_genes[path] = defaultseq
-
- // Copy genome to scanner occupant and do some basic mutation checks as
- // we've increased the occupant rads
- sequence = copytext_char(sequence, 1, genepos) + newgene + copytext_char(sequence, genepos + 1)
- scanner_occupant.dna.mutation_index[path] = sequence
- scanner_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER/connected_scanner.damage_coeff
- scanner_occupant.domutcheck()
-
- // GUARD CHECK - Modifying genetics can lead to edge cases where the
- // scanner occupant is qdel'd and replaced with a different entity.
- // Examples of this include adding/removing the Monkified mutation which
- // qdels the previous entity and creates a brand new one in its place.
- // We should redo all of our occupant modification checks again, although
- // it is less than ideal.
- if(!can_modify_occupant())
- return
-
- // Check if we cracked a mutation
- check_discovery(alias)
-
- return
-
- // Apply a chromosome to a specific mutation.
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to apply the chromo to
- // params["chromo"] - Name of the chromosome to apply to the mutation
- if("apply_chromo")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
- // unexpected.
- if(!(scanner_occupant == connected_scanner.occupant))
- return
-
- var/bref = params["mutref"]
-
- // GUARD CHECK - Only search occupant for this specific ref, since your
- // can only apply chromosomes to mutations occupants.
- var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_OCCUPANT)
-
- // GUARD CHECK - This should not be possible. Unexpected result
- if(!HM)
- return
-
- // Look through our stored chromos and compare names to find a
- // stored chromo we can apply.
- for(var/obj/item/chromosome/CM in stored_chromosomes)
- if(CM.can_apply(HM) && (CM.name == params["chromo"]))
- stored_chromosomes -= CM
- CM.apply(HM)
-
- return
-
- // Print any type of standard injector, limited right now to activators that
- // activate a dormant mutation and mutators that forcibly create a new
- // MUT_EXTRA mutation
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to create an injector of
- // params["is_activator"] - Is this an "Activator" style injector, also
- // referred to as a "Research" type. Expects a string with 0 or 1, which
- // then gets converted to a number.
- // params["source"] - The source the request came from.
- // Expected results:
- // "occupant" - From genetic sequencer
- // "console" - From DNA Console storage
- // "disk" - From inserted diskette
- if("print_injector")
- // Because printing mutators and activators share a bunch of code,
- // it makes sense to keep them both together and set unique vars
- // later in the code
-
- // As a side note, because mutations can contain unique metadata,
- // this system uses BYOND Atom Refs to safely and accurately
- // identify mutations from big ol' lists
-
- // GUARD CHECK - Is the injector actually ready?
- if(world.time < injectorready)
- return
-
- var/search_flags = 0
-
- switch(params["source"])
- if("occupant")
- // GUARD CHECK - Make sure we can modify the occupant before we
- // attempt to search them for any given mutation refs. This could
- // lead to no search flags being passed to get_mut_by_ref and this
- // is intended functionality to prevent any cheese or abuse
- if(can_modify_occupant())
- search_flags |= SEARCH_OCCUPANT
- if("console")
- search_flags |= SEARCH_STORED
- if("disk")
- search_flags |= SEARCH_DISKETTE
-
- var/bref = params["mutref"]
- var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flags)
-
- // GUARD CHECK - This should not be possible. Unexpected result
- if(!HM)
- return
-
- // Create a new DNA Injector and add the appropriate mutations to it
- var/obj/item/dnainjector/activator/I = new /obj/item/dnainjector/activator(loc)
- I.add_mutations += new HM.type(copymut = HM)
-
- var/is_activator = text2num(params["is_activator"])
-
- // Activators are also called "research" injectors and are used to create
- // chromosomes by recycling at the DNA Console
- if(is_activator)
- I.name = "[HM.name] activator"
- I.research = TRUE
- // If there's an operational connected scanner, we can use its upgrades
- // to improve our injector's radiation generation
- if(scanner_operational())
- I.damage_coeff = connected_scanner.damage_coeff*4
- injectorready = world.time + INJECTOR_TIMEOUT * (1 - 0.1 * connected_scanner.precision_coeff)
- else
- injectorready = world.time + INJECTOR_TIMEOUT
- else
- I.name = "[HM.name] mutator"
- I.doitanyway = TRUE
- // If there's an operational connected scanner, we can use its upgrades
- // to improve our injector's radiation generation
- if(scanner_operational())
- I.damage_coeff = connected_scanner.damage_coeff
- injectorready = world.time + INJECTOR_TIMEOUT * 5 * (1 - 0.1 * connected_scanner.precision_coeff)
- else
- injectorready = world.time + INJECTOR_TIMEOUT * 5
-
- return
-
- // Save a mutation to the console's storage buffer.
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to store
- // params["source"] - The source the request came from.
- // Expected results:
- // "occupant" - From genetic sequencer
- // "disk" - From inserted diskette
- if("save_console")
- var/search_flags = 0
-
- switch(params["source"])
- if("occupant")
- // GUARD CHECK - Make sure we can modify the occupant before we
- // attempt to search them for any given mutation refs. This could
- // lead to no search flags being passed to get_mut_by_ref and this
- // is intended functionality to prevent any cheese or abuse
- if(can_modify_occupant())
- search_flags |= SEARCH_OCCUPANT
- if("disk")
- search_flags |= SEARCH_DISKETTE
-
- // GUARD CHECK - Is mutation storage full?
- if(LAZYLEN(stored_mutations) >= max_storage)
- to_chat(usr,"Mutation storage is full.")
- return
-
- var/bref = params["mutref"]
- var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flags)
-
- // GUARD CHECK - This should not be possible. Unexpected result
- if(!HM)
- return
-
- var/datum/mutation/human/A = new HM.type()
- A.copy_mutation(HM)
- stored_mutations += A
- to_chat(usr,"Mutation successfully stored.")
- return
-
- // Save a mutation to the diskette's storage buffer.
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to store
- // params["source"] - The source the request came from
- // Expected results:
- // "occupant" - From genetic sequencer
- // "console" - From DNA Console storage
- if("save_disk")
- // GUARD CHECK - This code shouldn't even be callable without a diskette
- // inserted. Unexpected result
- if(!diskette)
- return
-
- // GUARD CHECK - Make sure the disk is not full
- if(LAZYLEN(diskette.mutations) >= diskette.max_mutations)
- to_chat(usr,"Disk storage is full.")
- return
-
- // GUARD CHECK - Make sure the disk isn't set to read only, as we're
- // attempting to write to it
- if(diskette.read_only)
- to_chat(usr,"Disk is set to read only mode.")
- return
-
- var/search_flags = 0
-
- switch(params["source"])
- if("occupant")
- // GUARD CHECK - Make sure we can modify the occupant before we
- // attempt to search them for any given mutation refs. This could
- // lead to no search flags being passed to get_mut_by_ref and this
- // is intended functionality to prevent any cheese or abuse
- if(can_modify_occupant())
- search_flags |= SEARCH_OCCUPANT
- if("console")
- search_flags |= SEARCH_STORED
-
- var/bref = params["mutref"]
- var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flags)
-
- // GUARD CHECK - This should not be possible. Unexpected result
- if(!HM)
- return
-
- var/datum/mutation/human/A = new HM.type()
- A.copy_mutation(HM)
- diskette.mutations += A
- to_chat(usr,"Mutation successfully stored to disk.")
- return
-
- // Completely removes a MUT_EXTRA mutation or mutation with corrupt gene
- // sequence from the scanner occupant
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to nullify
- if("nullify")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- var/bref = params["mutref"]
- var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_OCCUPANT)
-
- // GUARD CHECK - This should not be possible. Unexpected result
- if(!HM)
- return
-
- // GUARD CHECK - Nullify should only be used on scrambled or "extra"
- // mutations.
- if(!HM.scrambled && !(HM.class == MUT_EXTRA))
- return
-
- scanner_occupant.dna.remove_mutation(HM.type)
- return
-
- // Deletes saved mutation from console buffer.
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to delete
- if("delete_console_mut")
- var/bref = params["mutref"]
- var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_STORED)
-
- if(HM)
- stored_mutations.Remove(HM)
- qdel(HM)
-
- return
-
- // Deletes saved mutation from disk buffer.
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to delete
- if("delete_disk_mut")
- // GUARD CHECK - This code shouldn't even be callable without a diskette
- // inserted. Unexpected result
- if(!diskette)
- return
-
- // GUARD CHECK - Make sure the disk isn't set to read only, as we're
- // attempting to write to it (via deletion)
- if(diskette.read_only)
- to_chat(usr,"Disk is set to read only mode.")
- return
-
- var/bref = params["mutref"]
- var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_DISKETTE)
-
- if(HM)
- diskette.mutations.Remove(HM)
- qdel(HM)
-
- return
-
- // Ejects a stored chromosome from the DNA Console
- // ---------------------------------------------------------------------- //
- // params["chromo"] - Text string of the chromosome name
- if("eject_chromo")
- var/chromname = params["chromo"]
-
- for(var/obj/item/chromosome/CM in stored_chromosomes)
- if(chromname == CM.name)
- CM.forceMove(drop_location())
- adjust_item_drop_location(CM)
- stored_chromosomes -= CM
- return
-
- return
-
- // Combines two mutations from the console to try and create a new mutation
- // ---------------------------------------------------------------------- //
- // params["firstref"] - ATOM Ref of first mutation for combination
- // params["secondref"] - ATOM Ref of second mutation for combination
- // mutation
- if("combine_console")
- // GUaRD CHECK - Make sure mutation storage isn't full. If it is, we won't
- // be able to store the new combo mutation
- if(LAZYLEN(stored_mutations) >= max_storage)
- to_chat(usr,"Mutation storage is full.")
- return
-
- // GUARD CHECK - We're running a research-type operation. If, for some
- // reason, somehow the DNA Console has been disconnected from the research
- // network - Or was never in it to begin with - don't proceed
- if(!stored_research)
- return
-
- var/first_bref = params["firstref"]
- var/second_bref = params["secondref"]
-
- // GUARD CHECK - Find the source and destination mutations on the console
- // and make sure they actually exist.
- var/datum/mutation/human/source_mut = get_mut_by_ref(first_bref, SEARCH_STORED | SEARCH_DISKETTE)
- if(!source_mut)
- return
-
- var/datum/mutation/human/dest_mut = get_mut_by_ref(second_bref, SEARCH_STORED | SEARCH_DISKETTE)
- if(!dest_mut)
- return
-
- // Attempt to mix the two mutations to get a new type
- var/result_path = get_mixed_mutation(source_mut.type, dest_mut.type)
-
- if(!result_path)
- return
-
- // If we got a new type, add it to our storage
- stored_mutations += new result_path()
- to_chat(usr, "Success! New mutation has been added to console storage.")
-
- // If it's already discovered, end here. Otherwise, add it to the list of
- // discovered mutations.
- // We've already checked for stored_research earlier
- if(result_path in stored_research.discovered_mutations)
- return
-
- var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(result_path)
- stored_research.discovered_mutations += result_path
- say("Successfully mutated [HM.name].")
- return
-
- // Combines two mutations from the disk to try and create a new mutation
- // ---------------------------------------------------------------------- //
- // params["firstref"] - ATOM Ref of first mutation for combination
- // params["secondref"] - ATOM Ref of second mutation for combination
- // mutation
- if("combine_disk")
- // GUARD CHECK - This code shouldn't even be callable without a diskette
- // inserted. Unexpected result
- if(!diskette)
- return
-
- // GUARD CHECK - Make sure the disk is not full.
- if(LAZYLEN(diskette.mutations) >= diskette.max_mutations)
- to_chat(usr,"Disk storage is full.")
- return
-
- // GUARD CHECK - Make sure the disk isn't set to read only, as we're
- // attempting to write to it
- if(diskette.read_only)
- to_chat(usr,"Disk is set to read only mode.")
- return
-
- // GUARD CHECK - We're running a research-type operation. If, for some
- // reason, somehow the DNA Console has been disconnected from the research
- // network - Or was never in it to begin with - don't proceed
- if(!stored_research)
- return
-
- var/first_bref = params["firstref"]
- var/second_bref = params["secondref"]
-
- // GUARD CHECK - Find the source and destination mutations on the console
- // and make sure they actually exist.
- var/datum/mutation/human/source_mut = get_mut_by_ref(first_bref, SEARCH_STORED | SEARCH_DISKETTE)
- if(!source_mut)
- return
-
- var/datum/mutation/human/dest_mut = get_mut_by_ref(second_bref, SEARCH_STORED | SEARCH_DISKETTE)
- if(!dest_mut)
- return
-
- // Attempt to mix the two mutations to get a new type
- var/result_path = get_mixed_mutation(source_mut.type, dest_mut.type)
-
- if(!result_path)
- return
-
- // If we got a new type, add it to our storage
- diskette.mutations += new result_path()
- to_chat(usr, "Success! New mutation has been added to the disk.")
-
- // If it's already discovered, end here. Otherwise, add it to the list of
- // discovered mutations
- // We've already checked for stored_research earlier
- if(result_path in stored_research.discovered_mutations)
- return
-
- var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(result_path)
- stored_research.discovered_mutations += result_path
- say("Successfully mutated [HM.name].")
- return
-
- // Sets the Genetic Makeup pulse strength.
- // ---------------------------------------------------------------------- //
- // params["val"] - New strength value as text string, converted to number
- // later on in code
- if("set_pulse_strength")
- var/value = round(text2num(params["val"]))
- radstrength = WRAP(value, 1, RADIATION_STRENGTH_MAX+1)
- return
-
- // Sets the Genetic Makeup pulse duration
- // ---------------------------------------------------------------------- //
- // params["val"] - New strength value as text string, converted to number
- // later on in code
- if("set_pulse_duration")
- var/value = round(text2num(params["val"]))
- radduration = WRAP(value, 1, RADIATION_DURATION_MAX+1)
- return
-
- // Saves Genetic Makeup information to disk
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the console genetic makeup buffer to
- // copy to disk
- if("save_makeup_disk")
- // GUARD CHECK - This code shouldn't even be callable without a diskette
- // inserted. Unexpected result
- if(!diskette)
- return
-
- // GUARD CHECK - Make sure the disk isn't set to read only, as we're
- // attempting to write to it
- if(diskette.read_only)
- to_chat(usr,"Disk is set to read only mode.")
- return
-
- // Convert the index to a number and clamp within the array range
- var/buffer_index = text2num(params["index"])
- buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
-
- var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
-
- // GUARD CHECK - This should not be possible to activate on a buffer slot
- // that doesn't have any genetic data. Unexpected result
- if(!istype(buffer_slot))
- return
-
- diskette.genetic_makeup_buffer = buffer_slot.Copy()
- return
-
- // Loads Genetic Makeup from disk to a console buffer
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the console genetic makeup buffer to
- // copy to. Expected as text string, converted to number later
- if("load_makeup_disk")
- // GUARD CHECK - This code shouldn't even be callable without a diskette
- // inserted. Unexpected result
- if(!diskette)
- return
-
- // GUARD CHECK - This should not be possible to activate on a diskette
- // that doesn't have any genetic data. Unexpected result
- if(LAZYLEN(diskette.genetic_makeup_buffer) == 0)
- return
-
- // Convert the index to a number and clamp within the array range, then
- // copy the data from the disk to that buffer
- var/buffer_index = text2num(params["index"])
- buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
- genetic_makeup_buffer[buffer_index] = diskette.genetic_makeup_buffer.Copy()
- return
-
- // Deletes genetic makeup buffer from the inserted diskette
- if("del_makeup_disk")
- // GUARD CHECK - This code shouldn't even be callable without a diskette
- // inserted. Unexpected result
- if(!diskette)
- return
-
- // GUARD CHECK - Make sure the disk isn't set to read only, as we're
- // attempting to write (via deletion) to it
- if(diskette.read_only)
- to_chat(usr,"Disk is set to read only mode.")
- return
-
- diskette.genetic_makeup_buffer.Cut()
- return
-
- // Saves the scanner occupant's genetic makeup to a given console buffer
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the console genetic makeup buffer to
- // save the new genetic data to. Expected as text string, converted to
- // number later
- if("save_makeup_console")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- // Convert the index to a number and clamp within the array range, then
- // copy the data from the disk to that buffer
- var/buffer_index = text2num(params["index"])
- buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
-
- // Set the new information
- genetic_makeup_buffer[buffer_index] = list(
- "label"="Slot [buffer_index]:[scanner_occupant.real_name]",
- "UI"=scanner_occupant.dna.uni_identity,
- "UE"=scanner_occupant.dna.unique_enzymes,
- "name"=scanner_occupant.real_name,
- "blood_type"=scanner_occupant.dna.blood_type)
-
- return
-
- // Deleted genetic makeup data from a console buffer slot
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the console genetic makeup buffer to
- // delete the genetic data from. Expected as text string, converted to
- // number later
- if("del_makeup_console")
- // Convert the index to a number and clamp within the array range, then
- // copy the data from the disk to that buffer
- var/buffer_index = text2num(params["index"])
- buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
- var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
-
- // GUARD CHECK - This shouldn't be possible to execute this on a null
- // buffer. Unexpected resut
- if(!istype(buffer_slot))
- return
-
- genetic_makeup_buffer[buffer_index] = null
- return
-
- // Eject stored diskette from console
- if("eject_disk")
- // GUARD CHECK - This code shouldn't even be callable without a diskette
- // inserted. Unexpected result
- if(!diskette)
- return
-
- diskette.forceMove(drop_location())
- diskette = null
- return
-
- // Create a Genetic Makeup injector. These injectors are timed and thus are
- // only temporary
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the console genetic makeup buffer to
- // create the makeup injector from. Expected as text string, converted to
- // number later
- // params["type"] - Type of injector to create
- // Expected results:
- // "ue" - Unique Enzyme, changes name and blood type
- // "ui" - Unique Identity, changes looks
- // "mixed" - Combination of both ue and ui
- if("makeup_injector")
- // Convert the index to a number and clamp within the array range, then
- // copy the data from the disk to that buffer
- var/buffer_index = text2num(params["index"])
- buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
- var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
-
- // GUARD CHECK - This shouldn't be possible to execute this on a null
- // buffer. Unexpected resut
- if(!istype(buffer_slot))
- return
-
- var/type = params["type"]
- var/obj/item/dnainjector/timed/I
-
- switch(type)
- if("ui")
- // GUARD CHECK - There's currently no way to save partial genetic data.
- // However, if this is the case, we can't make a complete injector and
- // this catches that edge case
- if(!buffer_slot["UI"])
- to_chat(usr,"Genetic data corrupted, unable to create injector.")
- return
-
- I = new /obj/item/dnainjector/timed(loc)
- I.fields = list("UI"=buffer_slot["UI"])
-
- // If there is a connected scanner, we can use its upgrades to reduce
- // the radiation generated by this injector
- if(scanner_operational())
- I.damage_coeff = connected_scanner.damage_coeff
- if("ue")
- // GUARD CHECK - There's currently no way to save partial genetic data.
- // However, if this is the case, we can't make a complete injector and
- // this catches that edge case
- if(!buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
- to_chat(usr,"Genetic data corrupted, unable to create injector.")
- return
-
- I = new /obj/item/dnainjector/timed(loc)
- I.fields = list("name"=buffer_slot["name"], "UE"=buffer_slot["UE"], "blood_type"=buffer_slot["blood_type"])
-
- // If there is a connected scanner, we can use its upgrades to reduce
- // the radiation generated by this injector
- if(scanner_operational())
- I.damage_coeff = connected_scanner.damage_coeff
- if("mixed")
- // GUARD CHECK - There's currently no way to save partial genetic data.
- // However, if this is the case, we can't make a complete injector and
- // this catches that edge case
- if(!buffer_slot["UI"] || !buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
- to_chat(usr,"Genetic data corrupted, unable to create injector.")
- return
-
- I = new /obj/item/dnainjector/timed(loc)
- I.fields = list("UI"=buffer_slot["UI"],"name"=buffer_slot["name"], "UE"=buffer_slot["UE"], "blood_type"=buffer_slot["blood_type"])
-
- // If there is a connected scanner, we can use its upgrades to reduce
- // the radiation generated by this injector
- if(scanner_operational())
- I.damage_coeff = connected_scanner.damage_coeff
-
- // If we successfully created an injector, don't forget to set the new
- // ready timer.
- if(I)
- injectorready = world.time + INJECTOR_TIMEOUT
-
- return
-
- // Applies a genetic makeup buffer to the scanner occupant
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the console genetic makeup buffer to
- // apply to the scanner occupant. Expected as text string, converted to
- // number later
- // params["type"] - Type of genetic makeup copy to implement
- // Expected results:
- // "ue" - Unique Enzyme, changes name and blood type
- // "ui" - Unique Identity, changes looks
- // "mixed" - Combination of both ue and ui
- if("makeup_apply")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- // Convert the index to a number and clamp within the array range, then
- // copy the data from the disk to that buffer
- var/buffer_index = text2num(params["index"])
- buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
- var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
-
- // GUARD CHECK - This shouldn't be possible to execute this on a null
- // buffer. Unexpected resut
- if(!istype(buffer_slot))
- return
-
- var/type = params["type"]
-
- apply_genetic_makeup(type, buffer_slot)
- return
-
- // Applies a genetic makeup buffer to the next scanner occupant. This sets
- // some code that will run when the connected DNA Scanner door is next
- // closed
- // This allows people to self-modify their genetic makeup, as tgui
- // interfaces can not be accessed while inside the DNA Scanner and genetic
- // makeup injectors are only temporary
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the console genetic makeup buffer to
- // apply to the scanner occupant. Expected as text string, converted to
- // number later
- // params["type"] - Type of genetic makeup copy to implement
- // Expected results:
- // "ue" - Unique Enzyme, changes name and blood type
- // "ui" - Unique Identity, changes looks
- // "mixed" - Combination of both ue and ui
- if("makeup_delay")
- // Convert the index to a number and clamp within the array range, then
- // copy the data from the disk to that buffer
- var/buffer_index = text2num(params["index"])
- buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
- var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
-
- // GUARD CHECK - This shouldn't be possible to execute this on a null
- // buffer. Unexpected resut
- if(!istype(buffer_slot))
- return
-
- var/type = params["type"]
-
- // Set the delayed action. The next time the scanner door is closed,
- // unless this is cancelled in the UI, the action will happen
- delayed_action = list("type" = type, "buffer_slot" = buffer_slot)
- return
-
- // Attempts to modify the indexed element of the Unique Identity string
- // This is a time delayed action that is handled in process()
- // ---------------------------------------------------------------------- //
- // params["index"] - The BYOND index of the Unique Identity string to
- // attempt to modify
- if("makeup_pulse")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- if(!can_modify_occupant())
- return
-
- // Set the appropriate timer and index to pulse. This is then managed
- // later on in process()
- var/len = length_char(scanner_occupant.dna.uni_identity)
- rad_pulse_timer = world.time + (radduration*10)
- rad_pulse_index = WRAP(text2num(params["index"]), 1, len+1)
- begin_processing()
- return
-
- // Cancels the delayed action - In this context it is not the radiation
- // pulse from "makeup_pulse", which can not be cancelled. It is instead
- // the delayed genetic transfer from "makeup_delay"
- if("cancel_delay")
- delayed_action = null
- return
-
- // Creates a new advanced injector storage buffer in the console
- // ---------------------------------------------------------------------- //
- // params["name"] - The name to apply to the new injector
- if("new_adv_inj")
- // GUARD CHECK - Make sure we can make a new injector. This code should
- // not be called if we're already maxed out and this is an Unexpected
- // result
- if(!(LAZYLEN(injector_selection) < max_injector_selections))
- return
-
- // GUARD CHECK - Sanitise and trim the proposed name. This prevents HTML
- // injection and equivalent as tgui input is not stripped
- var/inj_name = params["name"]
- inj_name = trim(sanitize(inj_name))
-
- // GUARD CHECK - If the name is null or blank, or the name is already in
- // the list of advanced injectors, we want to reject it as we can't have
- // duplicate named advanced injectors
- if(!inj_name || (inj_name in injector_selection))
- return
-
- injector_selection[inj_name] = list()
- return
-
- // Deleted an advanced injector storage buffer from the console
- // ---------------------------------------------------------------------- //
- // params["name"] - The name of the injector to delete
- if("del_adv_inj")
- var/inj_name = params["name"]
-
- // GUARD CHECK - If the name is null or blank, reject.
- // GUARD CHECK - If the name isn't in the list of advanced injectors, we
- // want to reject this as it shouldn't be possible ever do this.
- // Unexpected result
- if(!inj_name || !(inj_name in injector_selection))
- return
-
- injector_selection.Remove(inj_name)
- return
-
- // Creates an injector from an advanced injector buffer
- // ---------------------------------------------------------------------- //
- // params["name"] - The name of the injector to print
- if("print_adv_inj")
- // As a side note, because mutations can contain unique metadata,
- // this system uses BYOND Atom Refs to safely and accurately
- // identify mutations from big ol' lists.
-
- // GUARD CHECK - Is the injector actually ready?
- if(world.time < injectorready)
- return
-
- var/inj_name = params["name"]
-
- // GUARD CHECK - If the name is null or blank, reject.
- // GUARD CHECK - If the name isn't in the list of advanced injectors, we
- // want to reject this as it shouldn't be possible ever do this.
- // Unexpected result
- if(!inj_name || !(inj_name in injector_selection))
- return
-
- var/list/injector = injector_selection[inj_name]
- var/obj/item/dnainjector/activator/I = new /obj/item/dnainjector/activator(loc)
-
- // Run through each mutation in our Advanced Injector and add them to a
- // new injector
- for(var/A in injector)
- var/datum/mutation/human/HM = A
- I.add_mutations += new HM.type(copymut=HM)
-
- // Force apply any mutations, this is functionality similar to mutators
- I.doitanyway = TRUE
- I.name = "Advanced [inj_name] injector"
-
- // If there's an operational connected scanner, we can use its upgrades
- // to improve our injector's radiation generation
- if(scanner_operational())
- I.damage_coeff = connected_scanner.damage_coeff
- injectorready = world.time + INJECTOR_TIMEOUT * 8 * (1 - 0.1 * connected_scanner.precision_coeff)
- else
- injectorready = world.time + INJECTOR_TIMEOUT * 8
-
- return
-
- // Adds a mutation to an advanced injector
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to add to the injector
- // params["advinj"] - Name of the advanced injector to add the mutation to
- if("add_advinj_mut")
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- // This is needed because this operation can only be completed from the
- // genetic sequencer.
- if(!can_modify_occupant())
- return
-
- var/adv_inj = params["advinj"]
-
- // GUARD CHECK - Make sure our advanced injector actually exists. This
- // should not be possible. Unexpected result
- if(!(adv_inj in injector_selection))
- return
-
- // GUARD CHECK - Make sure we limit the number of mutations appropriately
- if(LAZYLEN(injector_selection[adv_inj]) >= max_injector_mutations)
- to_chat(usr,"Advanced injector mutation storage is full.")
- return
-
- var/mut_source = params["source"]
- var/search_flag = 0
-
- switch(mut_source)
- if("disk")
- search_flag = SEARCH_DISKETTE
- if("occupant")
- search_flag = SEARCH_OCCUPANT
- if("console")
- search_flag = SEARCH_STORED
-
- if(!search_flag)
- return
-
- var/bref = params["mutref"]
- // We've already made sure we can modify the occupant, so this is safe to
- // call
- var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flag)
-
- // GUARD CHECK - This should not be possible. Unexpected result
- if(!HM)
- return
-
- // We want to make sure we stick within the instability limit.
- // We start with the instability of the mutation we're intending to add.
- var/instability_total = HM.instability
-
- // We then add the instabilities of all other mutations in the injector,
- // remembering to apply the Stabilizer chromosome modifiers
- for(var/datum/mutation/human/I in injector_selection[adv_inj])
- instability_total += I.instability * GET_MUTATION_STABILIZER(I)
-
- // If this would take us over the max instability, we inform the user.
- if(instability_total > max_injector_instability)
- to_chat(usr,"Extra mutation would make the advanced injector too instable.")
- return
-
- // If we've got here, all our checks are passed and we can successfully
- // add the mutation to the advanced injector.
- var/datum/mutation/human/A = new HM.type()
- A.copy_mutation(HM)
- injector_selection[adv_inj] += A
- to_chat(usr,"Mutation successfully added to advanced injector.")
- return
-
- // Deletes a mutation from an advanced injector
- // ---------------------------------------------------------------------- //
- // params["mutref"] - ATOM Ref of specific mutation to del from the injector
- if("delete_injector_mut")
- var/bref = params["mutref"]
-
- var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_ADV_INJ)
-
- // GUARD CHECK - This should not be possible. Unexpected result
- if(!HM)
- return
-
- // Check Advanced Injectors to find and remove the mutation
- for(var/I in injector_selection)
- if(injector_selection["[I]"].Remove(HM))
- qdel(HM)
- return
-
- return
-
- // Sets a new tgui view state
- // ---------------------------------------------------------------------- //
- // params["id"] - Key for the state to set
- // params[...] - Every other element is used to set state variables
- if("set_view")
- for (var/key in params)
- if(key == "src")
- continue
- tgui_view_state[key] = params[key]
- return TRUE
- return FALSE
-
-/**
- * Applies the enzyme buffer to the current scanner occupant
- *
- * Applies the type of a specific genetic makeup buffer to the current scanner
- * occupant
- *
- * Arguments:
- * * type - "ui"/"ue"/"mixed" - Which part of the enzyme buffer to apply
- * * buffer_slot - Index of the enzyme buffer to apply
- */
-/obj/machinery/computer/scan_consolenew/proc/apply_genetic_makeup(type, buffer_slot)
- // Note - This proc is only called from code that has already performed the
- // necessary occupant guard checks. If you call this code yourself, please
- // apply can_modify_occupant() or equivalent checks first.
-
- // Pre-calc the rad increase since we'll be using it in all the possible
- // operations
- var/rad_increase = rand(100/(connected_scanner.damage_coeff ** 2),250/(connected_scanner.damage_coeff ** 2))
-
- switch(type)
- if("ui")
- // GUARD CHECK - There's currently no way to save partial genetic data.
- // However, if this is the case, we can't make a complete injector and
- // this catches that edge case
- if(!buffer_slot["UI"])
- to_chat(usr,"Genetic data corrupted, unable to apply genetic data.")
- return FALSE
- scanner_occupant.dna.uni_identity = buffer_slot["UI"]
- scanner_occupant.updateappearance(mutations_overlay_update=1)
- scanner_occupant.radiation += rad_increase
- scanner_occupant.domutcheck()
- return TRUE
- if("ue")
- // GUARD CHECK - There's currently no way to save partial genetic data.
- // However, if this is the case, we can't make a complete injector and
- // this catches that edge case
- if(!buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
- to_chat(usr,"Genetic data corrupted, unable to apply genetic data.")
- return FALSE
- scanner_occupant.real_name = buffer_slot["name"]
- scanner_occupant.name = buffer_slot["name"]
- scanner_occupant.dna.unique_enzymes = buffer_slot["UE"]
- scanner_occupant.dna.blood_type = buffer_slot["blood_type"]
- scanner_occupant.radiation += rad_increase
- scanner_occupant.domutcheck()
- return TRUE
- if("mixed")
- // GUARD CHECK - There's currently no way to save partial genetic data.
- // However, if this is the case, we can't make a complete injector and
- // this catches that edge case
- if(!buffer_slot["UI"] || !buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
- to_chat(usr,"Genetic data corrupted, unable to apply genetic data.")
- return FALSE
- scanner_occupant.dna.uni_identity = buffer_slot["UI"]
- scanner_occupant.updateappearance(mutations_overlay_update=1)
- scanner_occupant.real_name = buffer_slot["name"]
- scanner_occupant.name = buffer_slot["name"]
- scanner_occupant.dna.unique_enzymes = buffer_slot["UE"]
- scanner_occupant.dna.blood_type = buffer_slot["blood_type"]
- scanner_occupant.radiation += rad_increase
- scanner_occupant.domutcheck()
- return TRUE
-
- return FALSE
-/**
- * Checks if there is a connected DNA Scanner that is operational
- */
-/obj/machinery/computer/scan_consolenew/proc/scanner_operational()
- if(!connected_scanner)
- return FALSE
-
- return (connected_scanner && connected_scanner.is_operational())
-
-/**
- * Checks if there is a valid DNA Scanner occupant for genetic modification
- *
- * Checks if there is a valid subject in the DNA Scanner that can be genetically
- * modified. Will set the scanner occupant var as part of this check.
- * Requires that the scanner can be operated and will return early if it can't
- */
-/obj/machinery/computer/scan_consolenew/proc/can_modify_occupant()
- // GUARD CHECK - We always want to perform the scanner operational check as
- // part of checking if we can modify the occupant.
- // We can never modify the occupant of a broken scanner.
- if(!scanner_operational())
- return FALSE
-
- if(!connected_scanner.occupant)
- return FALSE
-
- scanner_occupant = connected_scanner.occupant
-
- // Check validity of occupent for DNA Modification
- // DNA Modification:
- // requires DNA
- // this DNA can not be bad
- // is done via radiation bursts, so radiation immune carbons are not viable
- // And the DNA Scanner itself must have a valid scan level
- if(scanner_occupant.has_dna() && !HAS_TRAIT(scanner_occupant, TRAIT_RADIMMUNE) && !HAS_TRAIT(scanner_occupant, TRAIT_BADDNA) || (connected_scanner.scan_level == 3))
- return TRUE
-
- return FALSE
-
-/**
- * Checks for adjacent DNA scanners and connects when it finds a viable one
- *
- * Seearches cardinal directions in order. Stops when it finds a viable DNA Scanner.
- * Will connect to a broken scanner if no functional scanner is available.
- * Links itself to the DNA Scanner to receive door open and close events.
- */
-/obj/machinery/computer/scan_consolenew/proc/connect_to_scanner()
- var/obj/machinery/dna_scannernew/test_scanner = null
- var/obj/machinery/dna_scannernew/broken_scanner = null
-
- // Look in each cardinal direction and try and find a DNA Scanner
- // If you find a DNA Scanner, check to see if it broken or working
- // If it's working, set the current scanner and return early
- // If it's not working, remember it anyway as a broken scanner
- for(var/direction in GLOB.cardinals)
- test_scanner = locate(/obj/machinery/dna_scannernew, get_step(src, direction))
- if(!isnull(test_scanner))
- if(test_scanner.is_operational())
- connected_scanner = test_scanner
- connected_scanner.linked_console = src
- return
- else
- broken_scanner = test_scanner
-
- // Ultimately, if we have a broken scanner, we'll attempt to connect to it as
- // a fallback case, but the code above will prefer a working scanner
- if(!isnull(broken_scanner))
- connected_scanner = broken_scanner
- connected_scanner.linked_console = src
-
-/**
- * Called by connected DNA Scanners when their doors close.
- *
- * Sets the new scanner occupant and completes delayed enzyme transfer if one
- * is queued.
- */
-/obj/machinery/computer/scan_consolenew/proc/on_scanner_close()
- // Set the appropriate occupant now the scanner is closed
- if(connected_scanner.occupant)
- scanner_occupant = connected_scanner.occupant
- else
- scanner_occupant = null
-
- // If we have a delayed action - In this case the only delayed action is
- // applying a genetic makeup buffer the next time the DNA Scanner is closed -
- // we want to perform it.
- // GUARD CHECK - Make sure we can modify the occupant, apply_genetic_makeup()
- // assumes we've already done this.
- if(delayed_action && can_modify_occupant())
- var/type = delayed_action["type"]
- var/buffer_slot = delayed_action["buffer_slot"]
- if(apply_genetic_makeup(type, buffer_slot))
- to_chat(connected_scanner.occupant, "[src] activates!")
- delayed_action = null
-
-/**
- * Called by connected DNA Scanners when their doors open.
- *
- * Clears enzyme pulse operations, stops processing and nulls the current
- * scanner occupant var.
- */
-/obj/machinery/computer/scan_consolenew/proc/on_scanner_open()
- // If we had a radiation pulse action ongoing, we want to stop this.
- // Imagine it being like a microwave stopping when you open the door.
- rad_pulse_index = 0
- rad_pulse_timer = 0
- end_processing()
- scanner_occupant = null
-
-/**
- * Builds the genetic makeup list which will be sent to tgui interface.
- */
-/obj/machinery/computer/scan_consolenew/proc/build_genetic_makeup_list()
- // No code will ever null this list, we can safely Cut it.
- tgui_genetic_makeup.Cut()
-
- for(var/i=1, i <= NUMBER_OF_BUFFERS, i++)
- if(genetic_makeup_buffer[i])
- tgui_genetic_makeup["[i]"] = genetic_makeup_buffer[i].Copy()
- else
- tgui_genetic_makeup["[i]"] = null
-
-/**
- * Builds the genetic makeup list which will be sent to tgui interface.
- *
- * Will iterate over the connected scanner occupant, DNA Console, inserted
- * diskette and chromosomes and any advanced injectors, building the main data
- * structures which get passed to the tgui interface.
- */
-/obj/machinery/computer/scan_consolenew/proc/build_mutation_list(can_modify_occ)
- // No code will ever null these lists. We can safely Cut them.
- tgui_occupant_mutations.Cut()
- tgui_diskette_mutations.Cut()
- tgui_console_mutations.Cut()
- tgui_console_chromosomes.Cut()
- tgui_advinjector_mutations.Cut()
-
- // ------------------------------------------------------------------------ //
- // GUARD CHECK - Can we genetically modify the occupant? This check will have
- // previously included checks to make sure the DNA Scanner is still
- // operational
- if(can_modify_occ)
- // ---------------------------------------------------------------------- //
- // Start cataloguing all mutations that the occupant has by default
- for(var/mutation_type in scanner_occupant.dna.mutation_index)
- var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(mutation_type)
-
- var/list/mutation_data = list()
- var/text_sequence = scanner_occupant.dna.mutation_index[mutation_type]
- var/default_sequence = scanner_occupant.dna.default_mutation_genes[mutation_type]
- var/discovered = (stored_research && (mutation_type in stored_research.discovered_mutations))
-
- mutation_data["Alias"] = HM.alias
- mutation_data["Sequence"] = text_sequence
- mutation_data["DefaultSeq"] = default_sequence
- mutation_data["Discovered"] = discovered
- mutation_data["Source"] = "occupant"
-
- // We only want to pass this information along to the tgui interface if
- // the mutation has been discovered. Prevents people being able to cheese
- // or "hack" their way to figuring out what undiscovered mutations are
- if(discovered)
- mutation_data["Name"] = HM.name
- mutation_data["Description"] = HM.desc
- mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
- mutation_data["Quality"] = HM.quality
-
- // Assume the mutation is normal unless assigned otherwise.
- var/mut_class = MUT_NORMAL
-
- // Check if the mutation is currently activated. If it is, we can add even
- // MORE information to send to tgui.
- var/datum/mutation/human/A = scanner_occupant.dna.get_mutation(mutation_type)
- if(A)
- mutation_data["Active"] = TRUE
- mutation_data["Scrambled"] = A.scrambled
- mutation_data["Class"] = A.class
- mut_class = A.class
- mutation_data["CanChromo"] = A.can_chromosome
- mutation_data["ByondRef"] = REF(A)
- mutation_data["Type"] = A.type
- if(A.can_chromosome)
- mutation_data["ValidChromos"] = jointext(A.valid_chrom_list, ", ")
- mutation_data["AppliedChromo"] = A.chromosome_name
- mutation_data["ValidStoredChromos"] = build_chrom_list(A)
- else
- mutation_data["Active"] = FALSE
- mutation_data["Scrambled"] = FALSE
- mutation_data["Class"] = MUT_NORMAL
-
- // Technically NONE of these mutations should be MUT_EXTRA but this will
- // catch any weird edge cases
- // Assign icons by priority - MUT_EXTRA will ALSO be discovered, so it
- // has a higher priority for icon/image assignment
- if (mut_class == MUT_EXTRA)
- mutation_data["Image"] = "dna_extra.gif"
- else if(discovered)
- mutation_data["Image"] = "dna_discovered.gif"
- else
- mutation_data["Image"] = "dna_undiscovered.gif"
-
- tgui_occupant_mutations += list(mutation_data)
-
- // ---------------------------------------------------------------------- //
- // Now get additional/"extra" mutations that they shouldn't have by default
- for(var/datum/mutation/human/HM in scanner_occupant.dna.mutations)
- // If it's in the mutation index array, we've already catalogued this
- // mutation and can safely skip over it. It really shouldn't be, but this
- // will catch any weird edge cases
- if(HM.type in scanner_occupant.dna.mutation_index)
- continue
-
- var/list/mutation_data = list()
- var/text_sequence = GET_SEQUENCE(HM.type)
-
- // These will all be active mutations. They're added by injector and their
- // sequencing code can't be changed. They can only be nullified, which
- // completely removes them.
- var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
-
- mutation_data["Alias"] = A.alias
- mutation_data["Sequence"] = text_sequence
- mutation_data["Discovered"] = TRUE
- mutation_data["Quality"] = HM.quality
- mutation_data["Source"] = "occupant"
-
- mutation_data["Name"] = HM.name
- mutation_data["Description"] = HM.desc
- mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
-
- mutation_data["Active"] = TRUE
- mutation_data["Scrambled"] = HM.scrambled
- mutation_data["Class"] = HM.class
- mutation_data["CanChromo"] = HM.can_chromosome
- mutation_data["ByondRef"] = REF(HM)
- mutation_data["Type"] = HM.type
-
- if(HM.can_chromosome)
- mutation_data["ValidChromos"] = jointext(HM.valid_chrom_list, ", ")
- mutation_data["AppliedChromo"] = HM.chromosome_name
- mutation_data["ValidStoredChromos"] = build_chrom_list(HM)
-
- // Nothing in this list should be undiscovered. Technically nothing
- // should be anything but EXTRA. But we're just handling some edge cases.
- if (HM.class == MUT_EXTRA)
- mutation_data["Image"] = "dna_extra.gif"
- else
- mutation_data["Image"] = "dna_discovered.gif"
-
- tgui_occupant_mutations += list(mutation_data)
-
- // ------------------------------------------------------------------------ //
- // Build the list of mutations stored within the DNA Console
- for(var/datum/mutation/human/HM in stored_mutations)
- var/list/mutation_data = list()
-
- var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
-
- mutation_data["Alias"] = A.alias
- mutation_data["Name"] = HM.name
- mutation_data["Source"] = "console"
- mutation_data["Active"] = TRUE
- mutation_data["Description"] = HM.desc
- mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
- mutation_data["ByondRef"] = REF(HM)
- mutation_data["Type"] = HM.type
-
- mutation_data["CanChromo"] = HM.can_chromosome
- if(HM.can_chromosome)
- mutation_data["ValidChromos"] = jointext(HM.valid_chrom_list, ", ")
- mutation_data["AppliedChromo"] = HM.chromosome_name
- mutation_data["ValidStoredChromos"] = build_chrom_list(HM)
-
- tgui_console_mutations += list(mutation_data)
-
- // ------------------------------------------------------------------------ //
- // Build the list of chromosomes stored within the DNA Console
- var/chrom_index = 1
- for(var/obj/item/chromosome/CM in stored_chromosomes)
- var/list/chromo_data = list()
-
- chromo_data["Name"] = CM.name
- chromo_data["Description"] = CM.desc
- chromo_data["Index"] = chrom_index
-
- tgui_console_chromosomes += list(chromo_data)
- ++chrom_index
-
- // ------------------------------------------------------------------------ //
- // Build the list of mutations stored on any inserted diskettes
- if(diskette)
- for(var/datum/mutation/human/HM in diskette.mutations)
- var/list/mutation_data = list()
-
- var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
-
- mutation_data["Alias"] = A.alias
- mutation_data["Name"] = HM.name
- mutation_data["Active"] = TRUE
- //mutation_data["Sequence"] = GET_SEQUENCE(HM.type)
- mutation_data["Source"] = "disk"
- mutation_data["Description"] = HM.desc
- mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
- mutation_data["ByondRef"] = REF(HM)
- mutation_data["Type"] = HM.type
-
- mutation_data["CanChromo"] = HM.can_chromosome
- if(HM.can_chromosome)
- mutation_data["ValidChromos"] = jointext(HM.valid_chrom_list, ", ")
- mutation_data["AppliedChromo"] = HM.chromosome_name
- mutation_data["ValidStoredChromos"] = build_chrom_list(HM)
-
- tgui_diskette_mutations += list(mutation_data)
-
- // ------------------------------------------------------------------------ //
- // Build the list of mutations stored within any Advanced Injectors
- if(LAZYLEN(injector_selection))
- for(var/I in injector_selection)
- var/list/mutations = list()
- for(var/datum/mutation/human/HM in injector_selection[I])
- var/list/mutation_data = list()
-
- var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
-
- mutation_data["Alias"] = A.alias
- mutation_data["Name"] = HM.name
- mutation_data["Active"] = TRUE
- //mutation_data["Sequence"] = GET_SEQUENCE(HM.type)
- mutation_data["Source"] = "injector"
- mutation_data["Description"] = HM.desc
- mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
- mutation_data["ByondRef"] = REF(HM)
- mutation_data["Type"] = HM.type
-
- if(HM.can_chromosome)
- mutation_data["AppliedChromo"] = HM.chromosome_name
-
- mutations += list(mutation_data)
- tgui_advinjector_mutations += list(list(
- "name" = "[I]",
- "mutations" = mutations,
- ))
-
-/**
- * Takes any given chromosome and calculates chromosome compatibility
- *
- * Will iterate over the stored chromosomes in the DNA Console and will check
- * whether it can be applied to the supplied mutation. Then returns a list of
- * names of chromosomes that were compatible.
- *
- * Arguments:
- * * mutation - The mutation to check chromosome compatibility with
- */
-/obj/machinery/computer/scan_consolenew/proc/build_chrom_list(mutation)
- var/list/chromosomes = list()
-
- for(var/obj/item/chromosome/CM in stored_chromosomes)
- if(CM.can_apply(mutation))
- chromosomes += CM.name
-
- return chromosomes
-
-/**
- * Checks whether a mutation alias has been discovered
- *
- * Checks whether a given mutation's genetic sequence has been completed and
- * discovers it if appropriate
- *
- * Arguments:
- * * alias - Alias of the mutation to check (ie "Mutation 51" or "Mutation 12")
- */
-/obj/machinery/computer/scan_consolenew/proc/check_discovery(alias)
- // Note - All code paths that call this have already done checks on the
- // current occupant to prevent cheese and other abuses. If you call this
- // proc please also do the following checks first:
- // if(!can_modify_occupant())
- // return
- // if(!(scanner_occupant == connected_scanner.occupant))
- // return
-
- // Turn the alias ("Mutation 1", "Mutation 35") into a mutation path
- var/path = GET_MUTATION_TYPE_FROM_ALIAS(alias)
-
- // Check to see if this mutation is in the active mutation list. If it isn't,
- // then the mutation isn't eligible for discovery. If it is but is scrambled,
- // then the mutation isn't eligible for discovery. Finally, check if the
- // mutation is in discovered mutations - If it isn't, add it to discover.
- var/datum/mutation/human/M = scanner_occupant.dna.get_mutation(path)
- if(!M)
- return FALSE
- if(M.scrambled)
- return FALSE
- if(stored_research && !(path in stored_research.discovered_mutations))
- var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(path)
- stored_research.discovered_mutations += path
- say("Successfully discovered [HM.name].")
- return TRUE
-
- return FALSE
-
-/**
- * Find a mutation from various storage locations via ATOM ref
- *
- * Takes an ATOM Ref and searches the appropriate mutation buffers and storage
- * vars to try and find the associated mutation.
- *
- * Arguments:
- * * ref - ATOM ref of the mutation to locate
- * * target_flags - Flags for storage mediums to search, see #defines
- */
-/obj/machinery/computer/scan_consolenew/proc/get_mut_by_ref(ref, target_flags)
- var/mutation
-
- // Assume the occupant is valid and the check has been carried out before
- // calling this proc with the relevant flags.
- if(target_flags & SEARCH_OCCUPANT)
- mutation = (locate(ref) in scanner_occupant.dna.mutations)
- if(mutation)
- return mutation
-
- if(target_flags & SEARCH_STORED)
- mutation = (locate(ref) in stored_mutations)
- if(mutation)
- return mutation
-
- if(diskette && (target_flags & SEARCH_DISKETTE))
- mutation = (locate(ref) in diskette.mutations)
- if(mutation)
- return mutation
-
- if(injector_selection && (target_flags & SEARCH_ADV_INJ))
- for(var/I in injector_selection)
- mutation = (locate(ref) in injector_selection["[I]"])
- if(mutation)
- return mutation
-
- return null
-
-/**
- * Creates a randomised accuracy value for the enzyme pulse functionality.
- *
- * Donor code from previous DNA Console iteration.
- *
- * Arguments:
- * * position - Index of the intended enzyme element to pulse
- * * radduration - Duration of intended radiation pulse
- * * number_of_blocks - Number of individual data blocks in the pulsed enzyme
- */
-/obj/machinery/computer/scan_consolenew/proc/randomize_radiation_accuracy(position, radduration, number_of_blocks)
- var/val = round(gaussian(0, RADIATION_ACCURACY_MULTIPLIER/radduration) + position, 1)
- return WRAP(val, 1, number_of_blocks+1)
-
-/**
- * Scrambles an enzyme element value for the enzyme pulse functionality.
- *
- * Donor code from previous DNA Console iteration.
- *
- * Arguments:
- * * input - Enzyme identity element to scramble, expected hex value
- * * rs - Strength of radiation pulse, increases the range of possible outcomes
- */
-/obj/machinery/computer/scan_consolenew/proc/scramble(input,rs)
- var/length = length(input)
- var/ran = gaussian(0, rs*RADIATION_STRENGTH_MULTIPLIER)
- if(ran == 0)
- ran = pick(-1,1) //hacky, statistically should almost never happen. 0-chance makes people mad though
- else if(ran < 0)
- ran = round(ran) //negative, so floor it
- else
- ran = -round(-ran) //positive, so ceiling it
- return num2hex(WRAP(hex2num(input)+ran, 0, 16**length), length)
-
- /**
- * Performs the enzyme radiation pulse.
- *
- * Donor code from previous DNA Console iteration. Called from process() when
- * there is a radiation pulse in progress. Ends processing.
- */
-/obj/machinery/computer/scan_consolenew/proc/rad_pulse()
- // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
- // operational guard checks.
- // If we can't, abort the procedure.
- if(!can_modify_occupant())
- rad_pulse_index = 0
- end_processing()
- return
-
- var/len = length_char(scanner_occupant.dna.uni_identity)
- var/num = randomize_radiation_accuracy(rad_pulse_index, radduration + (connected_scanner.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2 //Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low
- var/hex = copytext_char(scanner_occupant.dna.uni_identity, num, num+1)
- hex = scramble(hex, radstrength, radduration)
-
- scanner_occupant.dna.uni_identity = copytext_char(scanner_occupant.dna.uni_identity, 1, num) + hex + copytext_char(scanner_occupant.dna.uni_identity, num + 1)
- scanner_occupant.updateappearance(mutations_overlay_update=1)
-
- rad_pulse_index = 0
- end_processing()
- return
-
-/**
- * Sets the default state for the tgui interface.
- */
-/obj/machinery/computer/scan_consolenew/proc/set_default_state()
- tgui_view_state["consoleMode"] = "storage"
- tgui_view_state["storageMode"] = "console"
- tgui_view_state["storageConsSubMode"] = "mutations"
- tgui_view_state["storageDiskSubMode"] = "mutations"
-
-
-#undef INJECTOR_TIMEOUT
-#undef NUMBER_OF_BUFFERS
-#undef SCRAMBLE_TIMEOUT
-#undef JOKER_TIMEOUT
-#undef JOKER_UPGRADE
-
-#undef RADIATION_STRENGTH_MAX
-#undef RADIATION_STRENGTH_MULTIPLIER
-
-#undef RADIATION_DURATION_MAX
-#undef RADIATION_ACCURACY_MULTIPLIER
-
-#undef RADIATION_IRRADIATION_MULTIPLIER
-
-#undef STATUS_TRANSFORMING
-
-#undef SEARCH_OCCUPANT
-#undef SEARCH_STORED
-#undef SEARCH_DISKETTE
-#undef SEARCH_ADV_INJ
+/// Base timeout for creating mutation activators and other injectors
+#define INJECTOR_TIMEOUT 100
+/// Maximum number of genetic makeup storage slots in DNA Console
+#define NUMBER_OF_BUFFERS 3
+/// Timeout for DNA Scramble in DNA Consoles
+#define SCRAMBLE_TIMEOUT 600
+/// Timeout for using the Joker feature to solve a gene in DNA Console
+#define JOKER_TIMEOUT 12000
+/// How much time DNA Scanner upgrade tiers remove from JOKER_TIMEOUT
+#define JOKER_UPGRADE 3000
+
+/// Maximum value for radiaton strength when pulsing enzymes
+#define RADIATION_STRENGTH_MAX 15
+/// Larger multipliers will affect the range of values when pulsing enzymes
+#define RADIATION_STRENGTH_MULTIPLIER 1
+
+/// Maximum value for the radiation pulse duration when pulsing enzymes
+#define RADIATION_DURATION_MAX 30
+/// Large values reduce pulse accuracy and may pulse other enzymes than selected
+#define RADIATION_ACCURACY_MULTIPLIER 3
+
+/// Special status indicating a scanner occupant is transforming eg. from monkey to human
+#define STATUS_TRANSFORMING 4
+
+/// Multiplier for how much radiation received from DNA Console functionality
+#define RADIATION_IRRADIATION_MULTIPLIER 1
+
+/// Flag for the mutation ref search system. Search will include scanner occupant
+#define SEARCH_OCCUPANT 1
+/// Flag for the mutation ref search system. Search will include console storage
+#define SEARCH_STORED 2
+/// Flag for the mutation ref search system. Search will include diskette storage
+#define SEARCH_DISKETTE 4
+/// Flag for the mutation ref search system. Search will include advanced injector mutations
+#define SEARCH_ADV_INJ 8
+
+/obj/machinery/computer/scan_consolenew
+ name = "DNA Console"
+ desc = "Scan DNA."
+ icon_screen = "dna"
+ icon_keyboard = "med_key"
+ density = TRUE
+ circuit = /obj/item/circuitboard/computer/scan_consolenew
+
+ use_power = IDLE_POWER_USE
+ idle_power_usage = 10
+ active_power_usage = 400
+ light_color = LIGHT_COLOR_BLUE
+
+ /// Link to the techweb's stored research. Used to retrieve stored mutations
+ var/datum/techweb/stored_research
+ /// Maximum number of mutations that DNA Consoles are able to store
+ var/max_storage = 6
+ /// Duration for enzyme radiation pulses
+ var/radduration = 2
+ /// Strength for enzyme radiation pulses
+ var/radstrength = 1
+ /// Maximum number of chromosomes that DNA Consoles are able to store.
+ var/max_chromosomes = 6
+ /// Maximum number of enzymes we can store
+ var/list/genetic_makeup_buffer[NUMBER_OF_BUFFERS]
+ /// List of all mutations stored on the DNA Console
+ var/list/stored_mutations = list()
+ /// List of all chromosomes stored in the DNA Console
+ var/list/stored_chromosomes = list()
+ /// Assoc list of all advanced injectors. Keys are injector names. Values are lists of mutations.
+ var/list/list/injector_selection = list()
+ /// Maximum number of advanced injectors that DNA Consoles store
+ var/max_injector_selections = 2
+ /// Maximum number of mutation that an advanced injector can store
+ var/max_injector_mutations = 10
+ /// Maximum total instability of all combined mutations allowed on an advanced injector
+ var/max_injector_instability = 50
+
+ /// World time when injectors are ready to be printed
+ var/injectorready = 0
+ /// World time when JOKER algorithm can be used in DNA Consoles
+ var/jokerready = 0
+ /// World time when Scramble can be used in DNA Consoles
+ var/scrambleready = 0
+
+ /// Currently stored genetic data diskette
+ var/obj/item/disk/data/diskette = null
+
+ /// Current delayed action, used for delayed enzyme transfer on scanner door close
+ var/list/delayed_action = null
+
+ /// Index of the enzyme being modified during delayed enzyme pulse operations
+ var/rad_pulse_index = 0
+ /// World time when the enzyme pulse should complete
+ var/rad_pulse_timer = 0
+
+ /// Used for setting tgui data - Whether the connected DNA Scanner is usable
+ var/can_use_scanner = FALSE
+ /// Used for setting tgui data - Whether the current DNA Scanner occupant is viable for genetic modification
+ var/is_viable_occupant = FALSE
+ /// Used for setting tgui data - Whether Scramble DNA is ready
+ var/is_scramble_ready = FALSE
+ /// Used for setting tgui data - Whether JOKER algorithm is ready
+ var/is_joker_ready = FALSE
+ /// Used for setting tgui data - Whether injectors are ready to be printed
+ var/is_injector_ready = FALSE
+ /// Used for setting tgui data - Wheher an enzyme pulse operation is ongoing
+ var/is_pulsing_rads = FALSE
+ /// Used for setting tgui data - Time until scramble is ready
+ var/time_to_scramble = 0
+ /// Used for setting tgui data - Time until joker is ready
+ var/time_to_joker = 0
+ /// Used for setting tgui data - Time until injectors are ready
+ var/time_to_injector = 0
+ /// Used for setting tgui data - Time until the enzyme pulse is complete
+ var/time_to_pulse = 0
+
+ /// Currently connected DNA Scanner
+ var/obj/machinery/dna_scannernew/connected_scanner = null
+ /// Current DNA Scanner occupant
+ var/mob/living/carbon/scanner_occupant = null
+
+ /// Used for setting tgui data - List of occupant mutations
+ var/list/tgui_occupant_mutations = list()
+ /// Used for setting tgui data - List of DNA Console stored mutations
+ var/list/tgui_console_mutations = list()
+ /// Used for setting tgui data - List of diskette stored mutations
+ var/list/tgui_diskette_mutations = list()
+ /// Used for setting tgui data - List of DNA Console chromosomes
+ var/list/tgui_console_chromosomes = list()
+ /// Used for setting tgui data - List of occupant mutations
+ var/list/tgui_genetic_makeup = list()
+ /// Used for setting tgui data - List of occupant mutations
+ var/list/tgui_advinjector_mutations = list()
+
+
+ /// State of tgui view, i.e. which tab is currently active, or which genome we're currently looking at.
+ var/list/list/tgui_view_state = list()
+
+/obj/machinery/computer/scan_consolenew/process()
+ . = ..()
+
+ // This is for pulsing the UI element with radiation as part of genetic makeup
+ // If rad_pulse_index > 0 then it means we're attempting a rad pulse
+ if((rad_pulse_index > 0) && (rad_pulse_timer <= world.time))
+ rad_pulse()
+ return
+
+/obj/machinery/computer/scan_consolenew/attackby(obj/item/I, mob/user, params)
+ // Store chromosomes in the console if there's room
+ if (istype(I, /obj/item/chromosome))
+ if(LAZYLEN(stored_chromosomes) < max_chromosomes)
+ I.forceMove(src)
+ stored_chromosomes += I
+ to_chat(user, "You insert [I].")
+ else
+ to_chat(user, "You cannot store any more chromosomes!")
+ return
+
+ // Insert data disk if console disk slot is empty
+ // Swap data disk if there is one already a disk in the console
+ if (istype(I, /obj/item/disk/data)) //INSERT SOME DISKETTES
+ if (!user.transferItemToLoc(I,src))
+ return
+ if(diskette)
+ diskette.forceMove(drop_location())
+ diskette = null
+ diskette = I
+ to_chat(user, "You insert [I].")
+ return
+
+ // Recycle non-activator used injectors
+ // Turn activator used injectors (aka research injectors) to chromosomes
+ if(istype(I, /obj/item/dnainjector/activator))
+ var/obj/item/dnainjector/activator/A = I
+ if(A.used)
+ to_chat(user,"Recycled [I].")
+ if(A.research)
+ if(prob(60))
+ var/c_typepath = generate_chromosome()
+ var/obj/item/chromosome/CM = new c_typepath (drop_location())
+ if(LAZYLEN(stored_chromosomes) < max_chromosomes)
+ CM.forceMove(src)
+ stored_chromosomes += CM
+ to_chat(user,"[capitalize(CM.name)] added to storage.")
+ else
+ to_chat(user, "You cannot store any more chromosomes!")
+ to_chat(user, "[capitalize(CM.name)] added on top of the console.")
+ else
+ to_chat(user, "There was not enough genetic data to extract a viable chromosome.")
+ qdel(I)
+ return
+
+ return ..()
+
+/obj/machinery/computer/scan_consolenew/Initialize()
+ . = ..()
+
+ // Connect with a nearby DNA Scanner on init
+ connect_to_scanner()
+
+ // Set appropriate ready timers and limits for machines functions
+ injectorready = world.time + INJECTOR_TIMEOUT
+ scrambleready = world.time + SCRAMBLE_TIMEOUT
+ jokerready = world.time + JOKER_TIMEOUT
+
+ // Set the default tgui state
+ set_default_state()
+
+ // Link machine with research techweb. Used for discovering and accessing
+ // already discovered mutations
+ stored_research = SSresearch.science_tech
+
+/obj/machinery/computer/scan_consolenew/examine(mob/user)
+ . = ..()
+
+/obj/machinery/computer/scan_consolenew/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
+ . = ..()
+
+ // Most of ui_interact is spent setting variables for passing to the tgui
+ // interface.
+ // We can also do some general state processing here too as it's a good
+ // indication that a player is using the console.
+
+ var/scanner_op = scanner_operational()
+ var/can_modify_occ = can_modify_occupant()
+
+ // Check for connected AND operational scanner.
+ if(scanner_op)
+ can_use_scanner = TRUE
+ else
+ can_use_scanner = FALSE
+ connected_scanner = null
+ is_viable_occupant = FALSE
+
+ // Check for a viable occupant in the scanner.
+ if(can_modify_occ)
+ is_viable_occupant = TRUE
+ else
+ is_viable_occupant = FALSE
+
+
+ // Populates various buffers for passing to tgui
+ build_mutation_list(can_modify_occ)
+ build_genetic_makeup_list()
+
+ // Populate variables for passing to tgui interface
+ is_scramble_ready = (scrambleready < world.time)
+ time_to_scramble = round((scrambleready - world.time)/10)
+
+ is_joker_ready = (jokerready < world.time)
+ time_to_joker = round((jokerready - world.time)/10)
+
+ is_injector_ready = (injectorready < world.time)
+ time_to_injector = round((injectorready - world.time)/10)
+
+ is_pulsing_rads = ((rad_pulse_index > 0) && (rad_pulse_timer > world.time))
+ time_to_pulse = round((rad_pulse_timer - world.time)/10)
+
+ // Attempt to update tgui ui, open and update if needed.
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+
+ if(!ui)
+ ui = new(user, src, ui_key, "DnaConsole", name, 539, 710, master_ui, state)
+ ui.open()
+
+/obj/machinery/computer/scan_consolenew/ui_data(mob/user)
+ var/list/data = list()
+
+ data["view"] = tgui_view_state
+ data["storage"] = list()
+
+ // This block of code generates the huge data structure passed to the tgui
+ // interface for displaying all the various bits of console/scanner data
+ // Should all be very self-explanatory
+ data["isScannerConnected"] = can_use_scanner
+ if(can_use_scanner)
+ data["scannerOpen"] = connected_scanner.state_open
+ data["scannerLocked"] = connected_scanner.locked
+ data["radStrength"] = radstrength
+ data["radDuration"] = radduration
+ data["stdDevStr"] = radstrength * RADIATION_STRENGTH_MULTIPLIER
+ switch(RADIATION_ACCURACY_MULTIPLIER / (radduration + (connected_scanner.precision_coeff ** 2))) //hardcoded values from a z-table for a normal distribution
+ if(0 to 0.25)
+ data["stdDevAcc"] = ">95 %"
+ if(0.25 to 0.5)
+ data["stdDevAcc"] = "68-95 %"
+ if(0.5 to 0.75)
+ data["stdDevAcc"] = "55-68 %"
+ else
+ data["stdDevAcc"] = "<38 %"
+
+ data["isViableSubject"] = is_viable_occupant
+ if(is_viable_occupant)
+ data["subjectName"] = scanner_occupant.name
+ if(scanner_occupant.transformation_timer)
+ data["subjectStatus"] = STATUS_TRANSFORMING
+ else
+ data["subjectStatus"] = scanner_occupant.stat
+ data["subjectHealth"] = scanner_occupant.health
+ data["subjectRads"] = scanner_occupant.radiation/(RAD_MOB_SAFE/100)
+ data["subjectEnzymes"] = scanner_occupant.dna.unique_enzymes
+ data["isMonkey"] = ismonkey(scanner_occupant)
+ data["subjectUNI"] = scanner_occupant.dna.uni_identity
+ data["storage"]["occupant"] = tgui_occupant_mutations
+ //data["subjectMutations"] = tgui_occupant_mutations
+ else
+ data["subjectName"] = null
+ data["subjectStatus"] = null
+ data["subjectHealth"] = null
+ data["subjectRads"] = null
+ data["subjectEnzymes"] = null
+ //data["subjectMutations"] = null
+ data["storage"]["occupant"] = null
+
+ data["hasDelayedAction"] = (delayed_action != null)
+ data["isScrambleReady"] = is_scramble_ready
+ data["isJokerReady"] = is_joker_ready
+ data["isInjectorReady"] = is_injector_ready
+ data["scrambleSeconds"] = time_to_scramble
+ data["jokerSeconds"] = time_to_joker
+ data["injectorSeconds"] = time_to_injector
+ data["isPulsingRads"] = is_pulsing_rads
+ data["radPulseSeconds"] = time_to_pulse
+
+ if(diskette != null)
+ data["hasDisk"] = TRUE
+ data["diskCapacity"] = diskette.max_mutations - LAZYLEN(diskette.mutations)
+ data["diskReadOnly"] = diskette.read_only
+ //data["diskMutations"] = tgui_diskette_mutations
+ data["storage"]["disk"] = tgui_diskette_mutations
+ data["diskHasMakeup"] = (LAZYLEN(diskette.genetic_makeup_buffer) > 0)
+ data["diskMakeupBuffer"] = diskette.genetic_makeup_buffer.Copy()
+ else
+ data["hasDisk"] = FALSE
+ data["diskCapacity"] = 0
+ data["diskReadOnly"] = TRUE
+ //data["diskMutations"] = null
+ data["storage"]["disk"] = null
+ data["diskHasMakeup"] = FALSE
+ data["diskMakeupBuffer"] = null
+
+ data["mutationCapacity"] = max_storage - LAZYLEN(stored_mutations)
+ //data["mutationStorage"] = tgui_console_mutations
+ data["storage"]["console"] = tgui_console_mutations
+ data["chromoCapacity"] = max_chromosomes - LAZYLEN(stored_chromosomes)
+ data["chromoStorage"] = tgui_console_chromosomes
+ data["makeupCapacity"] = NUMBER_OF_BUFFERS
+ data["makeupStorage"] = tgui_genetic_makeup
+
+ //data["advInjectors"] = tgui_advinjector_mutations
+ data["storage"]["injector"] = tgui_advinjector_mutations
+ data["maxAdvInjectors"] = max_injector_selections
+
+ return data
+
+/obj/machinery/computer/scan_consolenew/ui_act(action, var/list/params)
+ if(..())
+ return TRUE
+
+ . = TRUE
+
+ add_fingerprint(usr)
+ usr.set_machine(src)
+
+ switch(action)
+ // Connect this DNA Console to a nearby DNA Scanner
+ // Usually only activate as an option if there is no connected scanner
+ if("connect_scanner")
+ connect_to_scanner()
+ return
+
+ // Toggle the door open/closed status on attached DNA Scanner
+ if("toggle_door")
+ // GUARD CHECK - Scanner still connected and operational?
+ if(!scanner_operational())
+ return
+
+ connected_scanner.toggle_open(usr)
+ return
+
+ // Toggle the door bolts on the attached DNA Scanner
+ if("toggle_lock")
+ // GUARD CHECK - Scanner still connected and operational?
+ if(!scanner_operational())
+ return
+
+ connected_scanner.locked = !connected_scanner.locked
+ return
+
+ // Scramble scanner occupant's DNA
+ if("scramble_dna")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ // GUARD CHECK - Is scramble DNA actually ready?
+ if(!can_modify_occupant() || !(scrambleready < world.time))
+ return
+
+ scanner_occupant.dna.remove_all_mutations(list(MUT_NORMAL, MUT_EXTRA))
+ scanner_occupant.dna.generate_dna_blocks()
+ scrambleready = world.time + SCRAMBLE_TIMEOUT
+ to_chat(usr,"DNA scrambled.")
+ scanner_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER*50/(connected_scanner.damage_coeff ** 2)
+ return
+
+ // Check whether a specific mutation is eligible for discovery within the
+ // scanner occupant
+ // This is additionally done when a mutation's tab is selected in the tgui
+ // interface. This is because some mutations, such as Monkified on monkeys,
+ // are infact completed by default but not yet discovered. Likewise, all
+ // mutations can have their sequence completed while Monkified is still an
+ // active mutation and thus won't immediately be discovered but could be
+ // discovered when Monkified is removed
+ // ---------------------------------------------------------------------- //
+ // params["alias"] - Alias of a mutation. The alias is the "hidden" name of
+ // the mutation, for example "Mutation 5" or "Mutation 33"
+ if("check_discovery")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
+ // unexpected.
+ if(!(scanner_occupant == connected_scanner.occupant))
+ return
+
+ check_discovery(params["alias"])
+ return
+
+ // Check all mutations of the occupant and check if any are discovered.
+ // This is called when the Genetic Sequencer is selected. It'll do things
+ // like immediately discover Monkified without needing to click through
+ // the mutation tabs and handle cases where mutations are solved but not
+ // discovered due to the Monkified mutation being active then removed.
+ if("all_check_discovery")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
+ // unexpected.
+ if(!(scanner_occupant == connected_scanner.occupant))
+ return
+
+ // Go over all standard mutations and check if they've been discovered.
+ for(var/mutation_type in scanner_occupant.dna.mutation_index)
+ var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(mutation_type)
+ check_discovery(HM.alias)
+
+ return
+
+ // Set a gene in a mutation's genetic sequence. Will also check for mutations
+ // discovery as part of the process.
+ // ---------------------------------------------------------------------- //
+ // params["alias"] - Alias of a mutation. The alias is the "hidden" name of
+ // the mutation, for example "Mutation 5" or "Mutation 33"
+ // params["gene"] - The letter of the new gene
+ // params["pos"] - The BYOND index of the letter in the gene sequence to be
+ // changed. Expects a text string from TGUI and will convert to a number
+ if("pulse_gene")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
+ // unexpected.
+ if(!(scanner_occupant == connected_scanner.occupant))
+ return
+
+ // GUARD CHECK - Is the occupant currently undergoing some form of
+ // transformation? If so, we don't want to be pulsing genes.
+ if(scanner_occupant.transformation_timer)
+ to_chat(usr,"Gene pulse failed: The scanner occupant undergoing a transformation.")
+ return
+
+ // Resolve mutation's BYOND path from the alias
+ var/alias = params["alias"]
+ var/path = GET_MUTATION_TYPE_FROM_ALIAS(alias)
+
+ // Make sure the occupant still has this mutation
+ if(!(path in scanner_occupant.dna.mutation_index))
+ return
+
+ // Resolve BYOND path to genome sequence of scanner occupant
+ var/sequence = GET_GENE_STRING(path, scanner_occupant.dna)
+
+ var/newgene = params["gene"]
+ var/genepos = text2num(params["pos"])
+
+ // If the new gene is J, this means we're dealing with a JOKER
+ // GUARD CHECK - Is JOKER actually ready?
+ if((newgene == "J") && (jokerready < world.time))
+ var/truegenes = GET_SEQUENCE(path)
+ newgene = truegenes[genepos]
+ jokerready = world.time + JOKER_TIMEOUT - (JOKER_UPGRADE * (connected_scanner.precision_coeff-1))
+
+ // If the gene is an X, we want to update the default genes with the new
+ // X to allow highlighting logic to work on the tgui interface.
+ if(newgene == "X")
+ var/defaultseq = scanner_occupant.dna.default_mutation_genes[path]
+ defaultseq = copytext_char(defaultseq, 1, genepos) + newgene + copytext_char(defaultseq, genepos + 1)
+ scanner_occupant.dna.default_mutation_genes[path] = defaultseq
+
+ // Copy genome to scanner occupant and do some basic mutation checks as
+ // we've increased the occupant rads
+ sequence = copytext_char(sequence, 1, genepos) + newgene + copytext_char(sequence, genepos + 1)
+ scanner_occupant.dna.mutation_index[path] = sequence
+ scanner_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER/connected_scanner.damage_coeff
+ scanner_occupant.domutcheck()
+
+ // GUARD CHECK - Modifying genetics can lead to edge cases where the
+ // scanner occupant is qdel'd and replaced with a different entity.
+ // Examples of this include adding/removing the Monkified mutation which
+ // qdels the previous entity and creates a brand new one in its place.
+ // We should redo all of our occupant modification checks again, although
+ // it is less than ideal.
+ if(!can_modify_occupant())
+ return
+
+ // Check if we cracked a mutation
+ check_discovery(alias)
+
+ return
+
+ // Apply a chromosome to a specific mutation.
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to apply the chromo to
+ // params["chromo"] - Name of the chromosome to apply to the mutation
+ if("apply_chromo")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ // GUARD CHECK - Have we somehow cheekily swapped occupants? This is
+ // unexpected.
+ if(!(scanner_occupant == connected_scanner.occupant))
+ return
+
+ var/bref = params["mutref"]
+
+ // GUARD CHECK - Only search occupant for this specific ref, since your
+ // can only apply chromosomes to mutations occupants.
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_OCCUPANT)
+
+ // GUARD CHECK - This should not be possible. Unexpected result
+ if(!HM)
+ return
+
+ // Look through our stored chromos and compare names to find a
+ // stored chromo we can apply.
+ for(var/obj/item/chromosome/CM in stored_chromosomes)
+ if(CM.can_apply(HM) && (CM.name == params["chromo"]))
+ stored_chromosomes -= CM
+ CM.apply(HM)
+
+ return
+
+ // Print any type of standard injector, limited right now to activators that
+ // activate a dormant mutation and mutators that forcibly create a new
+ // MUT_EXTRA mutation
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to create an injector of
+ // params["is_activator"] - Is this an "Activator" style injector, also
+ // referred to as a "Research" type. Expects a string with 0 or 1, which
+ // then gets converted to a number.
+ // params["source"] - The source the request came from.
+ // Expected results:
+ // "occupant" - From genetic sequencer
+ // "console" - From DNA Console storage
+ // "disk" - From inserted diskette
+ if("print_injector")
+ // Because printing mutators and activators share a bunch of code,
+ // it makes sense to keep them both together and set unique vars
+ // later in the code
+
+ // As a side note, because mutations can contain unique metadata,
+ // this system uses BYOND Atom Refs to safely and accurately
+ // identify mutations from big ol' lists
+
+ // GUARD CHECK - Is the injector actually ready?
+ if(world.time < injectorready)
+ return
+
+ var/search_flags = 0
+
+ switch(params["source"])
+ if("occupant")
+ // GUARD CHECK - Make sure we can modify the occupant before we
+ // attempt to search them for any given mutation refs. This could
+ // lead to no search flags being passed to get_mut_by_ref and this
+ // is intended functionality to prevent any cheese or abuse
+ if(can_modify_occupant())
+ search_flags |= SEARCH_OCCUPANT
+ if("console")
+ search_flags |= SEARCH_STORED
+ if("disk")
+ search_flags |= SEARCH_DISKETTE
+
+ var/bref = params["mutref"]
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flags)
+
+ // GUARD CHECK - This should not be possible. Unexpected result
+ if(!HM)
+ return
+
+ // Create a new DNA Injector and add the appropriate mutations to it
+ var/obj/item/dnainjector/activator/I = new /obj/item/dnainjector/activator(loc)
+ I.add_mutations += new HM.type(copymut = HM)
+
+ var/is_activator = text2num(params["is_activator"])
+
+ // Activators are also called "research" injectors and are used to create
+ // chromosomes by recycling at the DNA Console
+ if(is_activator)
+ I.name = "[HM.name] activator"
+ I.research = TRUE
+ // If there's an operational connected scanner, we can use its upgrades
+ // to improve our injector's radiation generation
+ if(scanner_operational())
+ I.damage_coeff = connected_scanner.damage_coeff*4
+ injectorready = world.time + INJECTOR_TIMEOUT * (1 - 0.1 * connected_scanner.precision_coeff)
+ else
+ injectorready = world.time + INJECTOR_TIMEOUT
+ else
+ I.name = "[HM.name] mutator"
+ I.doitanyway = TRUE
+ // If there's an operational connected scanner, we can use its upgrades
+ // to improve our injector's radiation generation
+ if(scanner_operational())
+ I.damage_coeff = connected_scanner.damage_coeff
+ injectorready = world.time + INJECTOR_TIMEOUT * 5 * (1 - 0.1 * connected_scanner.precision_coeff)
+ else
+ injectorready = world.time + INJECTOR_TIMEOUT * 5
+
+ return
+
+ // Save a mutation to the console's storage buffer.
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to store
+ // params["source"] - The source the request came from.
+ // Expected results:
+ // "occupant" - From genetic sequencer
+ // "disk" - From inserted diskette
+ if("save_console")
+ var/search_flags = 0
+
+ switch(params["source"])
+ if("occupant")
+ // GUARD CHECK - Make sure we can modify the occupant before we
+ // attempt to search them for any given mutation refs. This could
+ // lead to no search flags being passed to get_mut_by_ref and this
+ // is intended functionality to prevent any cheese or abuse
+ if(can_modify_occupant())
+ search_flags |= SEARCH_OCCUPANT
+ if("disk")
+ search_flags |= SEARCH_DISKETTE
+
+ // GUARD CHECK - Is mutation storage full?
+ if(LAZYLEN(stored_mutations) >= max_storage)
+ to_chat(usr,"Mutation storage is full.")
+ return
+
+ var/bref = params["mutref"]
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flags)
+
+ // GUARD CHECK - This should not be possible. Unexpected result
+ if(!HM)
+ return
+
+ var/datum/mutation/human/A = new HM.type()
+ A.copy_mutation(HM)
+ stored_mutations += A
+ to_chat(usr,"Mutation successfully stored.")
+ return
+
+ // Save a mutation to the diskette's storage buffer.
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to store
+ // params["source"] - The source the request came from
+ // Expected results:
+ // "occupant" - From genetic sequencer
+ // "console" - From DNA Console storage
+ if("save_disk")
+ // GUARD CHECK - This code shouldn't even be callable without a diskette
+ // inserted. Unexpected result
+ if(!diskette)
+ return
+
+ // GUARD CHECK - Make sure the disk is not full
+ if(LAZYLEN(diskette.mutations) >= diskette.max_mutations)
+ to_chat(usr,"Disk storage is full.")
+ return
+
+ // GUARD CHECK - Make sure the disk isn't set to read only, as we're
+ // attempting to write to it
+ if(diskette.read_only)
+ to_chat(usr,"Disk is set to read only mode.")
+ return
+
+ var/search_flags = 0
+
+ switch(params["source"])
+ if("occupant")
+ // GUARD CHECK - Make sure we can modify the occupant before we
+ // attempt to search them for any given mutation refs. This could
+ // lead to no search flags being passed to get_mut_by_ref and this
+ // is intended functionality to prevent any cheese or abuse
+ if(can_modify_occupant())
+ search_flags |= SEARCH_OCCUPANT
+ if("console")
+ search_flags |= SEARCH_STORED
+
+ var/bref = params["mutref"]
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flags)
+
+ // GUARD CHECK - This should not be possible. Unexpected result
+ if(!HM)
+ return
+
+ var/datum/mutation/human/A = new HM.type()
+ A.copy_mutation(HM)
+ diskette.mutations += A
+ to_chat(usr,"Mutation successfully stored to disk.")
+ return
+
+ // Completely removes a MUT_EXTRA mutation or mutation with corrupt gene
+ // sequence from the scanner occupant
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to nullify
+ if("nullify")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ var/bref = params["mutref"]
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_OCCUPANT)
+
+ // GUARD CHECK - This should not be possible. Unexpected result
+ if(!HM)
+ return
+
+ // GUARD CHECK - Nullify should only be used on scrambled or "extra"
+ // mutations.
+ if(!HM.scrambled && !(HM.class == MUT_EXTRA))
+ return
+
+ scanner_occupant.dna.remove_mutation(HM.type)
+ return
+
+ // Deletes saved mutation from console buffer.
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to delete
+ if("delete_console_mut")
+ var/bref = params["mutref"]
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_STORED)
+
+ if(HM)
+ stored_mutations.Remove(HM)
+ qdel(HM)
+
+ return
+
+ // Deletes saved mutation from disk buffer.
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to delete
+ if("delete_disk_mut")
+ // GUARD CHECK - This code shouldn't even be callable without a diskette
+ // inserted. Unexpected result
+ if(!diskette)
+ return
+
+ // GUARD CHECK - Make sure the disk isn't set to read only, as we're
+ // attempting to write to it (via deletion)
+ if(diskette.read_only)
+ to_chat(usr,"Disk is set to read only mode.")
+ return
+
+ var/bref = params["mutref"]
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_DISKETTE)
+
+ if(HM)
+ diskette.mutations.Remove(HM)
+ qdel(HM)
+
+ return
+
+ // Ejects a stored chromosome from the DNA Console
+ // ---------------------------------------------------------------------- //
+ // params["chromo"] - Text string of the chromosome name
+ if("eject_chromo")
+ var/chromname = params["chromo"]
+
+ for(var/obj/item/chromosome/CM in stored_chromosomes)
+ if(chromname == CM.name)
+ CM.forceMove(drop_location())
+ adjust_item_drop_location(CM)
+ stored_chromosomes -= CM
+ return
+
+ return
+
+ // Combines two mutations from the console to try and create a new mutation
+ // ---------------------------------------------------------------------- //
+ // params["firstref"] - ATOM Ref of first mutation for combination
+ // params["secondref"] - ATOM Ref of second mutation for combination
+ // mutation
+ if("combine_console")
+ // GUaRD CHECK - Make sure mutation storage isn't full. If it is, we won't
+ // be able to store the new combo mutation
+ if(LAZYLEN(stored_mutations) >= max_storage)
+ to_chat(usr,"Mutation storage is full.")
+ return
+
+ // GUARD CHECK - We're running a research-type operation. If, for some
+ // reason, somehow the DNA Console has been disconnected from the research
+ // network - Or was never in it to begin with - don't proceed
+ if(!stored_research)
+ return
+
+ var/first_bref = params["firstref"]
+ var/second_bref = params["secondref"]
+
+ // GUARD CHECK - Find the source and destination mutations on the console
+ // and make sure they actually exist.
+ var/datum/mutation/human/source_mut = get_mut_by_ref(first_bref, SEARCH_STORED | SEARCH_DISKETTE)
+ if(!source_mut)
+ return
+
+ var/datum/mutation/human/dest_mut = get_mut_by_ref(second_bref, SEARCH_STORED | SEARCH_DISKETTE)
+ if(!dest_mut)
+ return
+
+ // Attempt to mix the two mutations to get a new type
+ var/result_path = get_mixed_mutation(source_mut.type, dest_mut.type)
+
+ if(!result_path)
+ return
+
+ // If we got a new type, add it to our storage
+ stored_mutations += new result_path()
+ to_chat(usr, "Success! New mutation has been added to console storage.")
+
+ // If it's already discovered, end here. Otherwise, add it to the list of
+ // discovered mutations.
+ // We've already checked for stored_research earlier
+ if(result_path in stored_research.discovered_mutations)
+ return
+
+ var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(result_path)
+ stored_research.discovered_mutations += result_path
+ say("Successfully mutated [HM.name].")
+ return
+
+ // Combines two mutations from the disk to try and create a new mutation
+ // ---------------------------------------------------------------------- //
+ // params["firstref"] - ATOM Ref of first mutation for combination
+ // params["secondref"] - ATOM Ref of second mutation for combination
+ // mutation
+ if("combine_disk")
+ // GUARD CHECK - This code shouldn't even be callable without a diskette
+ // inserted. Unexpected result
+ if(!diskette)
+ return
+
+ // GUARD CHECK - Make sure the disk is not full.
+ if(LAZYLEN(diskette.mutations) >= diskette.max_mutations)
+ to_chat(usr,"Disk storage is full.")
+ return
+
+ // GUARD CHECK - Make sure the disk isn't set to read only, as we're
+ // attempting to write to it
+ if(diskette.read_only)
+ to_chat(usr,"Disk is set to read only mode.")
+ return
+
+ // GUARD CHECK - We're running a research-type operation. If, for some
+ // reason, somehow the DNA Console has been disconnected from the research
+ // network - Or was never in it to begin with - don't proceed
+ if(!stored_research)
+ return
+
+ var/first_bref = params["firstref"]
+ var/second_bref = params["secondref"]
+
+ // GUARD CHECK - Find the source and destination mutations on the console
+ // and make sure they actually exist.
+ var/datum/mutation/human/source_mut = get_mut_by_ref(first_bref, SEARCH_STORED | SEARCH_DISKETTE)
+ if(!source_mut)
+ return
+
+ var/datum/mutation/human/dest_mut = get_mut_by_ref(second_bref, SEARCH_STORED | SEARCH_DISKETTE)
+ if(!dest_mut)
+ return
+
+ // Attempt to mix the two mutations to get a new type
+ var/result_path = get_mixed_mutation(source_mut.type, dest_mut.type)
+
+ if(!result_path)
+ return
+
+ // If we got a new type, add it to our storage
+ diskette.mutations += new result_path()
+ to_chat(usr, "Success! New mutation has been added to the disk.")
+
+ // If it's already discovered, end here. Otherwise, add it to the list of
+ // discovered mutations
+ // We've already checked for stored_research earlier
+ if(result_path in stored_research.discovered_mutations)
+ return
+
+ var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(result_path)
+ stored_research.discovered_mutations += result_path
+ say("Successfully mutated [HM.name].")
+ return
+
+ // Sets the Genetic Makeup pulse strength.
+ // ---------------------------------------------------------------------- //
+ // params["val"] - New strength value as text string, converted to number
+ // later on in code
+ if("set_pulse_strength")
+ var/value = round(text2num(params["val"]))
+ radstrength = WRAP(value, 1, RADIATION_STRENGTH_MAX+1)
+ return
+
+ // Sets the Genetic Makeup pulse duration
+ // ---------------------------------------------------------------------- //
+ // params["val"] - New strength value as text string, converted to number
+ // later on in code
+ if("set_pulse_duration")
+ var/value = round(text2num(params["val"]))
+ radduration = WRAP(value, 1, RADIATION_DURATION_MAX+1)
+ return
+
+ // Saves Genetic Makeup information to disk
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the console genetic makeup buffer to
+ // copy to disk
+ if("save_makeup_disk")
+ // GUARD CHECK - This code shouldn't even be callable without a diskette
+ // inserted. Unexpected result
+ if(!diskette)
+ return
+
+ // GUARD CHECK - Make sure the disk isn't set to read only, as we're
+ // attempting to write to it
+ if(diskette.read_only)
+ to_chat(usr,"Disk is set to read only mode.")
+ return
+
+ // Convert the index to a number and clamp within the array range
+ var/buffer_index = text2num(params["index"])
+ buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
+
+ var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
+
+ // GUARD CHECK - This should not be possible to activate on a buffer slot
+ // that doesn't have any genetic data. Unexpected result
+ if(!istype(buffer_slot))
+ return
+
+ diskette.genetic_makeup_buffer = buffer_slot.Copy()
+ return
+
+ // Loads Genetic Makeup from disk to a console buffer
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the console genetic makeup buffer to
+ // copy to. Expected as text string, converted to number later
+ if("load_makeup_disk")
+ // GUARD CHECK - This code shouldn't even be callable without a diskette
+ // inserted. Unexpected result
+ if(!diskette)
+ return
+
+ // GUARD CHECK - This should not be possible to activate on a diskette
+ // that doesn't have any genetic data. Unexpected result
+ if(LAZYLEN(diskette.genetic_makeup_buffer) == 0)
+ return
+
+ // Convert the index to a number and clamp within the array range, then
+ // copy the data from the disk to that buffer
+ var/buffer_index = text2num(params["index"])
+ buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
+ genetic_makeup_buffer[buffer_index] = diskette.genetic_makeup_buffer.Copy()
+ return
+
+ // Deletes genetic makeup buffer from the inserted diskette
+ if("del_makeup_disk")
+ // GUARD CHECK - This code shouldn't even be callable without a diskette
+ // inserted. Unexpected result
+ if(!diskette)
+ return
+
+ // GUARD CHECK - Make sure the disk isn't set to read only, as we're
+ // attempting to write (via deletion) to it
+ if(diskette.read_only)
+ to_chat(usr,"Disk is set to read only mode.")
+ return
+
+ diskette.genetic_makeup_buffer.Cut()
+ return
+
+ // Saves the scanner occupant's genetic makeup to a given console buffer
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the console genetic makeup buffer to
+ // save the new genetic data to. Expected as text string, converted to
+ // number later
+ if("save_makeup_console")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ // Convert the index to a number and clamp within the array range, then
+ // copy the data from the disk to that buffer
+ var/buffer_index = text2num(params["index"])
+ buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
+
+ // Set the new information
+ genetic_makeup_buffer[buffer_index] = list(
+ "label"="Slot [buffer_index]:[scanner_occupant.real_name]",
+ "UI"=scanner_occupant.dna.uni_identity,
+ "UE"=scanner_occupant.dna.unique_enzymes,
+ "name"=scanner_occupant.real_name,
+ "blood_type"=scanner_occupant.dna.blood_type)
+
+ return
+
+ // Deleted genetic makeup data from a console buffer slot
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the console genetic makeup buffer to
+ // delete the genetic data from. Expected as text string, converted to
+ // number later
+ if("del_makeup_console")
+ // Convert the index to a number and clamp within the array range, then
+ // copy the data from the disk to that buffer
+ var/buffer_index = text2num(params["index"])
+ buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
+ var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
+
+ // GUARD CHECK - This shouldn't be possible to execute this on a null
+ // buffer. Unexpected resut
+ if(!istype(buffer_slot))
+ return
+
+ genetic_makeup_buffer[buffer_index] = null
+ return
+
+ // Eject stored diskette from console
+ if("eject_disk")
+ // GUARD CHECK - This code shouldn't even be callable without a diskette
+ // inserted. Unexpected result
+ if(!diskette)
+ return
+
+ diskette.forceMove(drop_location())
+ diskette = null
+ return
+
+ // Create a Genetic Makeup injector. These injectors are timed and thus are
+ // only temporary
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the console genetic makeup buffer to
+ // create the makeup injector from. Expected as text string, converted to
+ // number later
+ // params["type"] - Type of injector to create
+ // Expected results:
+ // "ue" - Unique Enzyme, changes name and blood type
+ // "ui" - Unique Identity, changes looks
+ // "mixed" - Combination of both ue and ui
+ if("makeup_injector")
+ // Convert the index to a number and clamp within the array range, then
+ // copy the data from the disk to that buffer
+ var/buffer_index = text2num(params["index"])
+ buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
+ var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
+
+ // GUARD CHECK - This shouldn't be possible to execute this on a null
+ // buffer. Unexpected resut
+ if(!istype(buffer_slot))
+ return
+
+ var/type = params["type"]
+ var/obj/item/dnainjector/timed/I
+
+ switch(type)
+ if("ui")
+ // GUARD CHECK - There's currently no way to save partial genetic data.
+ // However, if this is the case, we can't make a complete injector and
+ // this catches that edge case
+ if(!buffer_slot["UI"])
+ to_chat(usr,"Genetic data corrupted, unable to create injector.")
+ return
+
+ I = new /obj/item/dnainjector/timed(loc)
+ I.fields = list("UI"=buffer_slot["UI"])
+
+ // If there is a connected scanner, we can use its upgrades to reduce
+ // the radiation generated by this injector
+ if(scanner_operational())
+ I.damage_coeff = connected_scanner.damage_coeff
+ if("ue")
+ // GUARD CHECK - There's currently no way to save partial genetic data.
+ // However, if this is the case, we can't make a complete injector and
+ // this catches that edge case
+ if(!buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
+ to_chat(usr,"Genetic data corrupted, unable to create injector.")
+ return
+
+ I = new /obj/item/dnainjector/timed(loc)
+ I.fields = list("name"=buffer_slot["name"], "UE"=buffer_slot["UE"], "blood_type"=buffer_slot["blood_type"])
+
+ // If there is a connected scanner, we can use its upgrades to reduce
+ // the radiation generated by this injector
+ if(scanner_operational())
+ I.damage_coeff = connected_scanner.damage_coeff
+ if("mixed")
+ // GUARD CHECK - There's currently no way to save partial genetic data.
+ // However, if this is the case, we can't make a complete injector and
+ // this catches that edge case
+ if(!buffer_slot["UI"] || !buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
+ to_chat(usr,"Genetic data corrupted, unable to create injector.")
+ return
+
+ I = new /obj/item/dnainjector/timed(loc)
+ I.fields = list("UI"=buffer_slot["UI"],"name"=buffer_slot["name"], "UE"=buffer_slot["UE"], "blood_type"=buffer_slot["blood_type"])
+
+ // If there is a connected scanner, we can use its upgrades to reduce
+ // the radiation generated by this injector
+ if(scanner_operational())
+ I.damage_coeff = connected_scanner.damage_coeff
+
+ // If we successfully created an injector, don't forget to set the new
+ // ready timer.
+ if(I)
+ injectorready = world.time + INJECTOR_TIMEOUT
+
+ return
+
+ // Applies a genetic makeup buffer to the scanner occupant
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the console genetic makeup buffer to
+ // apply to the scanner occupant. Expected as text string, converted to
+ // number later
+ // params["type"] - Type of genetic makeup copy to implement
+ // Expected results:
+ // "ue" - Unique Enzyme, changes name and blood type
+ // "ui" - Unique Identity, changes looks
+ // "mixed" - Combination of both ue and ui
+ if("makeup_apply")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ // Convert the index to a number and clamp within the array range, then
+ // copy the data from the disk to that buffer
+ var/buffer_index = text2num(params["index"])
+ buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
+ var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
+
+ // GUARD CHECK - This shouldn't be possible to execute this on a null
+ // buffer. Unexpected resut
+ if(!istype(buffer_slot))
+ return
+
+ var/type = params["type"]
+
+ apply_genetic_makeup(type, buffer_slot)
+ return
+
+ // Applies a genetic makeup buffer to the next scanner occupant. This sets
+ // some code that will run when the connected DNA Scanner door is next
+ // closed
+ // This allows people to self-modify their genetic makeup, as tgui
+ // interfaces can not be accessed while inside the DNA Scanner and genetic
+ // makeup injectors are only temporary
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the console genetic makeup buffer to
+ // apply to the scanner occupant. Expected as text string, converted to
+ // number later
+ // params["type"] - Type of genetic makeup copy to implement
+ // Expected results:
+ // "ue" - Unique Enzyme, changes name and blood type
+ // "ui" - Unique Identity, changes looks
+ // "mixed" - Combination of both ue and ui
+ if("makeup_delay")
+ // Convert the index to a number and clamp within the array range, then
+ // copy the data from the disk to that buffer
+ var/buffer_index = text2num(params["index"])
+ buffer_index = clamp(buffer_index, 1, NUMBER_OF_BUFFERS)
+ var/list/buffer_slot = genetic_makeup_buffer[buffer_index]
+
+ // GUARD CHECK - This shouldn't be possible to execute this on a null
+ // buffer. Unexpected resut
+ if(!istype(buffer_slot))
+ return
+
+ var/type = params["type"]
+
+ // Set the delayed action. The next time the scanner door is closed,
+ // unless this is cancelled in the UI, the action will happen
+ delayed_action = list("type" = type, "buffer_slot" = buffer_slot)
+ return
+
+ // Attempts to modify the indexed element of the Unique Identity string
+ // This is a time delayed action that is handled in process()
+ // ---------------------------------------------------------------------- //
+ // params["index"] - The BYOND index of the Unique Identity string to
+ // attempt to modify
+ if("makeup_pulse")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ if(!can_modify_occupant())
+ return
+
+ // Set the appropriate timer and index to pulse. This is then managed
+ // later on in process()
+ var/len = length_char(scanner_occupant.dna.uni_identity)
+ rad_pulse_timer = world.time + (radduration*10)
+ rad_pulse_index = WRAP(text2num(params["index"]), 1, len+1)
+ begin_processing()
+ return
+
+ // Cancels the delayed action - In this context it is not the radiation
+ // pulse from "makeup_pulse", which can not be cancelled. It is instead
+ // the delayed genetic transfer from "makeup_delay"
+ if("cancel_delay")
+ delayed_action = null
+ return
+
+ // Creates a new advanced injector storage buffer in the console
+ // ---------------------------------------------------------------------- //
+ // params["name"] - The name to apply to the new injector
+ if("new_adv_inj")
+ // GUARD CHECK - Make sure we can make a new injector. This code should
+ // not be called if we're already maxed out and this is an Unexpected
+ // result
+ if(!(LAZYLEN(injector_selection) < max_injector_selections))
+ return
+
+ // GUARD CHECK - Sanitise and trim the proposed name. This prevents HTML
+ // injection and equivalent as tgui input is not stripped
+ var/inj_name = params["name"]
+ inj_name = trim(sanitize(inj_name))
+
+ // GUARD CHECK - If the name is null or blank, or the name is already in
+ // the list of advanced injectors, we want to reject it as we can't have
+ // duplicate named advanced injectors
+ if(!inj_name || (inj_name in injector_selection))
+ return
+
+ injector_selection[inj_name] = list()
+ return
+
+ // Deleted an advanced injector storage buffer from the console
+ // ---------------------------------------------------------------------- //
+ // params["name"] - The name of the injector to delete
+ if("del_adv_inj")
+ var/inj_name = params["name"]
+
+ // GUARD CHECK - If the name is null or blank, reject.
+ // GUARD CHECK - If the name isn't in the list of advanced injectors, we
+ // want to reject this as it shouldn't be possible ever do this.
+ // Unexpected result
+ if(!inj_name || !(inj_name in injector_selection))
+ return
+
+ injector_selection.Remove(inj_name)
+ return
+
+ // Creates an injector from an advanced injector buffer
+ // ---------------------------------------------------------------------- //
+ // params["name"] - The name of the injector to print
+ if("print_adv_inj")
+ // As a side note, because mutations can contain unique metadata,
+ // this system uses BYOND Atom Refs to safely and accurately
+ // identify mutations from big ol' lists.
+
+ // GUARD CHECK - Is the injector actually ready?
+ if(world.time < injectorready)
+ return
+
+ var/inj_name = params["name"]
+
+ // GUARD CHECK - If the name is null or blank, reject.
+ // GUARD CHECK - If the name isn't in the list of advanced injectors, we
+ // want to reject this as it shouldn't be possible ever do this.
+ // Unexpected result
+ if(!inj_name || !(inj_name in injector_selection))
+ return
+
+ var/list/injector = injector_selection[inj_name]
+ var/obj/item/dnainjector/activator/I = new /obj/item/dnainjector/activator(loc)
+
+ // Run through each mutation in our Advanced Injector and add them to a
+ // new injector
+ for(var/A in injector)
+ var/datum/mutation/human/HM = A
+ I.add_mutations += new HM.type(copymut=HM)
+
+ // Force apply any mutations, this is functionality similar to mutators
+ I.doitanyway = TRUE
+ I.name = "Advanced [inj_name] injector"
+
+ // If there's an operational connected scanner, we can use its upgrades
+ // to improve our injector's radiation generation
+ if(scanner_operational())
+ I.damage_coeff = connected_scanner.damage_coeff
+ injectorready = world.time + INJECTOR_TIMEOUT * 8 * (1 - 0.1 * connected_scanner.precision_coeff)
+ else
+ injectorready = world.time + INJECTOR_TIMEOUT * 8
+
+ return
+
+ // Adds a mutation to an advanced injector
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to add to the injector
+ // params["advinj"] - Name of the advanced injector to add the mutation to
+ if("add_advinj_mut")
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ // This is needed because this operation can only be completed from the
+ // genetic sequencer.
+ if(!can_modify_occupant())
+ return
+
+ var/adv_inj = params["advinj"]
+
+ // GUARD CHECK - Make sure our advanced injector actually exists. This
+ // should not be possible. Unexpected result
+ if(!(adv_inj in injector_selection))
+ return
+
+ // GUARD CHECK - Make sure we limit the number of mutations appropriately
+ if(LAZYLEN(injector_selection[adv_inj]) >= max_injector_mutations)
+ to_chat(usr,"Advanced injector mutation storage is full.")
+ return
+
+ var/mut_source = params["source"]
+ var/search_flag = 0
+
+ switch(mut_source)
+ if("disk")
+ search_flag = SEARCH_DISKETTE
+ if("occupant")
+ search_flag = SEARCH_OCCUPANT
+ if("console")
+ search_flag = SEARCH_STORED
+
+ if(!search_flag)
+ return
+
+ var/bref = params["mutref"]
+ // We've already made sure we can modify the occupant, so this is safe to
+ // call
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, search_flag)
+
+ // GUARD CHECK - This should not be possible. Unexpected result
+ if(!HM)
+ return
+
+ // We want to make sure we stick within the instability limit.
+ // We start with the instability of the mutation we're intending to add.
+ var/instability_total = HM.instability
+
+ // We then add the instabilities of all other mutations in the injector,
+ // remembering to apply the Stabilizer chromosome modifiers
+ for(var/datum/mutation/human/I in injector_selection[adv_inj])
+ instability_total += I.instability * GET_MUTATION_STABILIZER(I)
+
+ // If this would take us over the max instability, we inform the user.
+ if(instability_total > max_injector_instability)
+ to_chat(usr,"Extra mutation would make the advanced injector too instable.")
+ return
+
+ // If we've got here, all our checks are passed and we can successfully
+ // add the mutation to the advanced injector.
+ var/datum/mutation/human/A = new HM.type()
+ A.copy_mutation(HM)
+ injector_selection[adv_inj] += A
+ to_chat(usr,"Mutation successfully added to advanced injector.")
+ return
+
+ // Deletes a mutation from an advanced injector
+ // ---------------------------------------------------------------------- //
+ // params["mutref"] - ATOM Ref of specific mutation to del from the injector
+ if("delete_injector_mut")
+ var/bref = params["mutref"]
+
+ var/datum/mutation/human/HM = get_mut_by_ref(bref, SEARCH_ADV_INJ)
+
+ // GUARD CHECK - This should not be possible. Unexpected result
+ if(!HM)
+ return
+
+ // Check Advanced Injectors to find and remove the mutation
+ for(var/I in injector_selection)
+ if(injector_selection["[I]"].Remove(HM))
+ qdel(HM)
+ return
+
+ return
+
+ // Sets a new tgui view state
+ // ---------------------------------------------------------------------- //
+ // params["id"] - Key for the state to set
+ // params[...] - Every other element is used to set state variables
+ if("set_view")
+ for (var/key in params)
+ if(key == "src")
+ continue
+ tgui_view_state[key] = params[key]
+ return TRUE
+ return FALSE
+
+/**
+ * Applies the enzyme buffer to the current scanner occupant
+ *
+ * Applies the type of a specific genetic makeup buffer to the current scanner
+ * occupant
+ *
+ * Arguments:
+ * * type - "ui"/"ue"/"mixed" - Which part of the enzyme buffer to apply
+ * * buffer_slot - Index of the enzyme buffer to apply
+ */
+/obj/machinery/computer/scan_consolenew/proc/apply_genetic_makeup(type, buffer_slot)
+ // Note - This proc is only called from code that has already performed the
+ // necessary occupant guard checks. If you call this code yourself, please
+ // apply can_modify_occupant() or equivalent checks first.
+
+ // Pre-calc the rad increase since we'll be using it in all the possible
+ // operations
+ var/rad_increase = rand(100/(connected_scanner.damage_coeff ** 2),250/(connected_scanner.damage_coeff ** 2))
+
+ switch(type)
+ if("ui")
+ // GUARD CHECK - There's currently no way to save partial genetic data.
+ // However, if this is the case, we can't make a complete injector and
+ // this catches that edge case
+ if(!buffer_slot["UI"])
+ to_chat(usr,"Genetic data corrupted, unable to apply genetic data.")
+ return FALSE
+ scanner_occupant.dna.uni_identity = buffer_slot["UI"]
+ scanner_occupant.updateappearance(mutations_overlay_update=1)
+ scanner_occupant.radiation += rad_increase
+ scanner_occupant.domutcheck()
+ return TRUE
+ if("ue")
+ // GUARD CHECK - There's currently no way to save partial genetic data.
+ // However, if this is the case, we can't make a complete injector and
+ // this catches that edge case
+ if(!buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
+ to_chat(usr,"Genetic data corrupted, unable to apply genetic data.")
+ return FALSE
+ scanner_occupant.real_name = buffer_slot["name"]
+ scanner_occupant.name = buffer_slot["name"]
+ scanner_occupant.dna.unique_enzymes = buffer_slot["UE"]
+ scanner_occupant.dna.blood_type = buffer_slot["blood_type"]
+ scanner_occupant.radiation += rad_increase
+ scanner_occupant.domutcheck()
+ return TRUE
+ if("mixed")
+ // GUARD CHECK - There's currently no way to save partial genetic data.
+ // However, if this is the case, we can't make a complete injector and
+ // this catches that edge case
+ if(!buffer_slot["UI"] || !buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"])
+ to_chat(usr,"Genetic data corrupted, unable to apply genetic data.")
+ return FALSE
+ scanner_occupant.dna.uni_identity = buffer_slot["UI"]
+ scanner_occupant.updateappearance(mutations_overlay_update=1)
+ scanner_occupant.real_name = buffer_slot["name"]
+ scanner_occupant.name = buffer_slot["name"]
+ scanner_occupant.dna.unique_enzymes = buffer_slot["UE"]
+ scanner_occupant.dna.blood_type = buffer_slot["blood_type"]
+ scanner_occupant.radiation += rad_increase
+ scanner_occupant.domutcheck()
+ return TRUE
+
+ return FALSE
+/**
+ * Checks if there is a connected DNA Scanner that is operational
+ */
+/obj/machinery/computer/scan_consolenew/proc/scanner_operational()
+ if(!connected_scanner)
+ return FALSE
+
+ return (connected_scanner && connected_scanner.is_operational())
+
+/**
+ * Checks if there is a valid DNA Scanner occupant for genetic modification
+ *
+ * Checks if there is a valid subject in the DNA Scanner that can be genetically
+ * modified. Will set the scanner occupant var as part of this check.
+ * Requires that the scanner can be operated and will return early if it can't
+ */
+/obj/machinery/computer/scan_consolenew/proc/can_modify_occupant()
+ // GUARD CHECK - We always want to perform the scanner operational check as
+ // part of checking if we can modify the occupant.
+ // We can never modify the occupant of a broken scanner.
+ if(!scanner_operational())
+ return FALSE
+
+ if(!connected_scanner.occupant)
+ return FALSE
+
+ scanner_occupant = connected_scanner.occupant
+
+ // Check validity of occupent for DNA Modification
+ // DNA Modification:
+ // requires DNA
+ // this DNA can not be bad
+ // is done via radiation bursts, so radiation immune carbons are not viable
+ // And the DNA Scanner itself must have a valid scan level
+ if(scanner_occupant.has_dna() && !HAS_TRAIT(scanner_occupant, TRAIT_RADIMMUNE) && !HAS_TRAIT(scanner_occupant, TRAIT_BADDNA) || (connected_scanner.scan_level == 3))
+ return TRUE
+
+ return FALSE
+
+/**
+ * Checks for adjacent DNA scanners and connects when it finds a viable one
+ *
+ * Seearches cardinal directions in order. Stops when it finds a viable DNA Scanner.
+ * Will connect to a broken scanner if no functional scanner is available.
+ * Links itself to the DNA Scanner to receive door open and close events.
+ */
+/obj/machinery/computer/scan_consolenew/proc/connect_to_scanner()
+ var/obj/machinery/dna_scannernew/test_scanner = null
+ var/obj/machinery/dna_scannernew/broken_scanner = null
+
+ // Look in each cardinal direction and try and find a DNA Scanner
+ // If you find a DNA Scanner, check to see if it broken or working
+ // If it's working, set the current scanner and return early
+ // If it's not working, remember it anyway as a broken scanner
+ for(var/direction in GLOB.cardinals)
+ test_scanner = locate(/obj/machinery/dna_scannernew, get_step(src, direction))
+ if(!isnull(test_scanner))
+ if(test_scanner.is_operational())
+ connected_scanner = test_scanner
+ connected_scanner.linked_console = src
+ return
+ else
+ broken_scanner = test_scanner
+
+ // Ultimately, if we have a broken scanner, we'll attempt to connect to it as
+ // a fallback case, but the code above will prefer a working scanner
+ if(!isnull(broken_scanner))
+ connected_scanner = broken_scanner
+ connected_scanner.linked_console = src
+
+/**
+ * Called by connected DNA Scanners when their doors close.
+ *
+ * Sets the new scanner occupant and completes delayed enzyme transfer if one
+ * is queued.
+ */
+/obj/machinery/computer/scan_consolenew/proc/on_scanner_close()
+ // Set the appropriate occupant now the scanner is closed
+ if(connected_scanner.occupant)
+ scanner_occupant = connected_scanner.occupant
+ else
+ scanner_occupant = null
+
+ // If we have a delayed action - In this case the only delayed action is
+ // applying a genetic makeup buffer the next time the DNA Scanner is closed -
+ // we want to perform it.
+ // GUARD CHECK - Make sure we can modify the occupant, apply_genetic_makeup()
+ // assumes we've already done this.
+ if(delayed_action && can_modify_occupant())
+ var/type = delayed_action["type"]
+ var/buffer_slot = delayed_action["buffer_slot"]
+ if(apply_genetic_makeup(type, buffer_slot))
+ to_chat(connected_scanner.occupant, "[src] activates!")
+ delayed_action = null
+
+/**
+ * Called by connected DNA Scanners when their doors open.
+ *
+ * Clears enzyme pulse operations, stops processing and nulls the current
+ * scanner occupant var.
+ */
+/obj/machinery/computer/scan_consolenew/proc/on_scanner_open()
+ // If we had a radiation pulse action ongoing, we want to stop this.
+ // Imagine it being like a microwave stopping when you open the door.
+ rad_pulse_index = 0
+ rad_pulse_timer = 0
+ end_processing()
+ scanner_occupant = null
+
+/**
+ * Builds the genetic makeup list which will be sent to tgui interface.
+ */
+/obj/machinery/computer/scan_consolenew/proc/build_genetic_makeup_list()
+ // No code will ever null this list, we can safely Cut it.
+ tgui_genetic_makeup.Cut()
+
+ for(var/i=1, i <= NUMBER_OF_BUFFERS, i++)
+ if(genetic_makeup_buffer[i])
+ tgui_genetic_makeup["[i]"] = genetic_makeup_buffer[i].Copy()
+ else
+ tgui_genetic_makeup["[i]"] = null
+
+/**
+ * Builds the genetic makeup list which will be sent to tgui interface.
+ *
+ * Will iterate over the connected scanner occupant, DNA Console, inserted
+ * diskette and chromosomes and any advanced injectors, building the main data
+ * structures which get passed to the tgui interface.
+ */
+/obj/machinery/computer/scan_consolenew/proc/build_mutation_list(can_modify_occ)
+ // No code will ever null these lists. We can safely Cut them.
+ tgui_occupant_mutations.Cut()
+ tgui_diskette_mutations.Cut()
+ tgui_console_mutations.Cut()
+ tgui_console_chromosomes.Cut()
+ tgui_advinjector_mutations.Cut()
+
+ // ------------------------------------------------------------------------ //
+ // GUARD CHECK - Can we genetically modify the occupant? This check will have
+ // previously included checks to make sure the DNA Scanner is still
+ // operational
+ if(can_modify_occ)
+ // ---------------------------------------------------------------------- //
+ // Start cataloguing all mutations that the occupant has by default
+ for(var/mutation_type in scanner_occupant.dna.mutation_index)
+ var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(mutation_type)
+
+ var/list/mutation_data = list()
+ var/text_sequence = scanner_occupant.dna.mutation_index[mutation_type]
+ var/default_sequence = scanner_occupant.dna.default_mutation_genes[mutation_type]
+ var/discovered = (stored_research && (mutation_type in stored_research.discovered_mutations))
+
+ mutation_data["Alias"] = HM.alias
+ mutation_data["Sequence"] = text_sequence
+ mutation_data["DefaultSeq"] = default_sequence
+ mutation_data["Discovered"] = discovered
+ mutation_data["Source"] = "occupant"
+
+ // We only want to pass this information along to the tgui interface if
+ // the mutation has been discovered. Prevents people being able to cheese
+ // or "hack" their way to figuring out what undiscovered mutations are
+ if(discovered)
+ mutation_data["Name"] = HM.name
+ mutation_data["Description"] = HM.desc
+ mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
+ mutation_data["Quality"] = HM.quality
+
+ // Assume the mutation is normal unless assigned otherwise.
+ var/mut_class = MUT_NORMAL
+
+ // Check if the mutation is currently activated. If it is, we can add even
+ // MORE information to send to tgui.
+ var/datum/mutation/human/A = scanner_occupant.dna.get_mutation(mutation_type)
+ if(A)
+ mutation_data["Active"] = TRUE
+ mutation_data["Scrambled"] = A.scrambled
+ mutation_data["Class"] = A.class
+ mut_class = A.class
+ mutation_data["CanChromo"] = A.can_chromosome
+ mutation_data["ByondRef"] = REF(A)
+ mutation_data["Type"] = A.type
+ if(A.can_chromosome)
+ mutation_data["ValidChromos"] = jointext(A.valid_chrom_list, ", ")
+ mutation_data["AppliedChromo"] = A.chromosome_name
+ mutation_data["ValidStoredChromos"] = build_chrom_list(A)
+ else
+ mutation_data["Active"] = FALSE
+ mutation_data["Scrambled"] = FALSE
+ mutation_data["Class"] = MUT_NORMAL
+
+ // Technically NONE of these mutations should be MUT_EXTRA but this will
+ // catch any weird edge cases
+ // Assign icons by priority - MUT_EXTRA will ALSO be discovered, so it
+ // has a higher priority for icon/image assignment
+ if (mut_class == MUT_EXTRA)
+ mutation_data["Image"] = "dna_extra.gif"
+ else if(discovered)
+ mutation_data["Image"] = "dna_discovered.gif"
+ else
+ mutation_data["Image"] = "dna_undiscovered.gif"
+
+ tgui_occupant_mutations += list(mutation_data)
+
+ // ---------------------------------------------------------------------- //
+ // Now get additional/"extra" mutations that they shouldn't have by default
+ for(var/datum/mutation/human/HM in scanner_occupant.dna.mutations)
+ // If it's in the mutation index array, we've already catalogued this
+ // mutation and can safely skip over it. It really shouldn't be, but this
+ // will catch any weird edge cases
+ if(HM.type in scanner_occupant.dna.mutation_index)
+ continue
+
+ var/list/mutation_data = list()
+ var/text_sequence = GET_SEQUENCE(HM.type)
+
+ // These will all be active mutations. They're added by injector and their
+ // sequencing code can't be changed. They can only be nullified, which
+ // completely removes them.
+ var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
+
+ mutation_data["Alias"] = A.alias
+ mutation_data["Sequence"] = text_sequence
+ mutation_data["Discovered"] = TRUE
+ mutation_data["Quality"] = HM.quality
+ mutation_data["Source"] = "occupant"
+
+ mutation_data["Name"] = HM.name
+ mutation_data["Description"] = HM.desc
+ mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
+
+ mutation_data["Active"] = TRUE
+ mutation_data["Scrambled"] = HM.scrambled
+ mutation_data["Class"] = HM.class
+ mutation_data["CanChromo"] = HM.can_chromosome
+ mutation_data["ByondRef"] = REF(HM)
+ mutation_data["Type"] = HM.type
+
+ if(HM.can_chromosome)
+ mutation_data["ValidChromos"] = jointext(HM.valid_chrom_list, ", ")
+ mutation_data["AppliedChromo"] = HM.chromosome_name
+ mutation_data["ValidStoredChromos"] = build_chrom_list(HM)
+
+ // Nothing in this list should be undiscovered. Technically nothing
+ // should be anything but EXTRA. But we're just handling some edge cases.
+ if (HM.class == MUT_EXTRA)
+ mutation_data["Image"] = "dna_extra.gif"
+ else
+ mutation_data["Image"] = "dna_discovered.gif"
+
+ tgui_occupant_mutations += list(mutation_data)
+
+ // ------------------------------------------------------------------------ //
+ // Build the list of mutations stored within the DNA Console
+ for(var/datum/mutation/human/HM in stored_mutations)
+ var/list/mutation_data = list()
+
+ var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
+
+ mutation_data["Alias"] = A.alias
+ mutation_data["Name"] = HM.name
+ mutation_data["Source"] = "console"
+ mutation_data["Active"] = TRUE
+ mutation_data["Description"] = HM.desc
+ mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
+ mutation_data["ByondRef"] = REF(HM)
+ mutation_data["Type"] = HM.type
+
+ mutation_data["CanChromo"] = HM.can_chromosome
+ if(HM.can_chromosome)
+ mutation_data["ValidChromos"] = jointext(HM.valid_chrom_list, ", ")
+ mutation_data["AppliedChromo"] = HM.chromosome_name
+ mutation_data["ValidStoredChromos"] = build_chrom_list(HM)
+
+ tgui_console_mutations += list(mutation_data)
+
+ // ------------------------------------------------------------------------ //
+ // Build the list of chromosomes stored within the DNA Console
+ var/chrom_index = 1
+ for(var/obj/item/chromosome/CM in stored_chromosomes)
+ var/list/chromo_data = list()
+
+ chromo_data["Name"] = CM.name
+ chromo_data["Description"] = CM.desc
+ chromo_data["Index"] = chrom_index
+
+ tgui_console_chromosomes += list(chromo_data)
+ ++chrom_index
+
+ // ------------------------------------------------------------------------ //
+ // Build the list of mutations stored on any inserted diskettes
+ if(diskette)
+ for(var/datum/mutation/human/HM in diskette.mutations)
+ var/list/mutation_data = list()
+
+ var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
+
+ mutation_data["Alias"] = A.alias
+ mutation_data["Name"] = HM.name
+ mutation_data["Active"] = TRUE
+ //mutation_data["Sequence"] = GET_SEQUENCE(HM.type)
+ mutation_data["Source"] = "disk"
+ mutation_data["Description"] = HM.desc
+ mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
+ mutation_data["ByondRef"] = REF(HM)
+ mutation_data["Type"] = HM.type
+
+ mutation_data["CanChromo"] = HM.can_chromosome
+ if(HM.can_chromosome)
+ mutation_data["ValidChromos"] = jointext(HM.valid_chrom_list, ", ")
+ mutation_data["AppliedChromo"] = HM.chromosome_name
+ mutation_data["ValidStoredChromos"] = build_chrom_list(HM)
+
+ tgui_diskette_mutations += list(mutation_data)
+
+ // ------------------------------------------------------------------------ //
+ // Build the list of mutations stored within any Advanced Injectors
+ if(LAZYLEN(injector_selection))
+ for(var/I in injector_selection)
+ var/list/mutations = list()
+ for(var/datum/mutation/human/HM in injector_selection[I])
+ var/list/mutation_data = list()
+
+ var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(HM.type)
+
+ mutation_data["Alias"] = A.alias
+ mutation_data["Name"] = HM.name
+ mutation_data["Active"] = TRUE
+ //mutation_data["Sequence"] = GET_SEQUENCE(HM.type)
+ mutation_data["Source"] = "injector"
+ mutation_data["Description"] = HM.desc
+ mutation_data["Instability"] = HM.instability * GET_MUTATION_STABILIZER(HM)
+ mutation_data["ByondRef"] = REF(HM)
+ mutation_data["Type"] = HM.type
+
+ if(HM.can_chromosome)
+ mutation_data["AppliedChromo"] = HM.chromosome_name
+
+ mutations += list(mutation_data)
+ tgui_advinjector_mutations += list(list(
+ "name" = "[I]",
+ "mutations" = mutations,
+ ))
+
+/**
+ * Takes any given chromosome and calculates chromosome compatibility
+ *
+ * Will iterate over the stored chromosomes in the DNA Console and will check
+ * whether it can be applied to the supplied mutation. Then returns a list of
+ * names of chromosomes that were compatible.
+ *
+ * Arguments:
+ * * mutation - The mutation to check chromosome compatibility with
+ */
+/obj/machinery/computer/scan_consolenew/proc/build_chrom_list(mutation)
+ var/list/chromosomes = list()
+
+ for(var/obj/item/chromosome/CM in stored_chromosomes)
+ if(CM.can_apply(mutation))
+ chromosomes += CM.name
+
+ return chromosomes
+
+/**
+ * Checks whether a mutation alias has been discovered
+ *
+ * Checks whether a given mutation's genetic sequence has been completed and
+ * discovers it if appropriate
+ *
+ * Arguments:
+ * * alias - Alias of the mutation to check (ie "Mutation 51" or "Mutation 12")
+ */
+/obj/machinery/computer/scan_consolenew/proc/check_discovery(alias)
+ // Note - All code paths that call this have already done checks on the
+ // current occupant to prevent cheese and other abuses. If you call this
+ // proc please also do the following checks first:
+ // if(!can_modify_occupant())
+ // return
+ // if(!(scanner_occupant == connected_scanner.occupant))
+ // return
+
+ // Turn the alias ("Mutation 1", "Mutation 35") into a mutation path
+ var/path = GET_MUTATION_TYPE_FROM_ALIAS(alias)
+
+ // Check to see if this mutation is in the active mutation list. If it isn't,
+ // then the mutation isn't eligible for discovery. If it is but is scrambled,
+ // then the mutation isn't eligible for discovery. Finally, check if the
+ // mutation is in discovered mutations - If it isn't, add it to discover.
+ var/datum/mutation/human/M = scanner_occupant.dna.get_mutation(path)
+ if(!M)
+ return FALSE
+ if(M.scrambled)
+ return FALSE
+ if(stored_research && !(path in stored_research.discovered_mutations))
+ var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(path)
+ stored_research.discovered_mutations += path
+ say("Successfully discovered [HM.name].")
+ return TRUE
+
+ return FALSE
+
+/**
+ * Find a mutation from various storage locations via ATOM ref
+ *
+ * Takes an ATOM Ref and searches the appropriate mutation buffers and storage
+ * vars to try and find the associated mutation.
+ *
+ * Arguments:
+ * * ref - ATOM ref of the mutation to locate
+ * * target_flags - Flags for storage mediums to search, see #defines
+ */
+/obj/machinery/computer/scan_consolenew/proc/get_mut_by_ref(ref, target_flags)
+ var/mutation
+
+ // Assume the occupant is valid and the check has been carried out before
+ // calling this proc with the relevant flags.
+ if(target_flags & SEARCH_OCCUPANT)
+ mutation = (locate(ref) in scanner_occupant.dna.mutations)
+ if(mutation)
+ return mutation
+
+ if(target_flags & SEARCH_STORED)
+ mutation = (locate(ref) in stored_mutations)
+ if(mutation)
+ return mutation
+
+ if(diskette && (target_flags & SEARCH_DISKETTE))
+ mutation = (locate(ref) in diskette.mutations)
+ if(mutation)
+ return mutation
+
+ if(injector_selection && (target_flags & SEARCH_ADV_INJ))
+ for(var/I in injector_selection)
+ mutation = (locate(ref) in injector_selection["[I]"])
+ if(mutation)
+ return mutation
+
+ return null
+
+/**
+ * Creates a randomised accuracy value for the enzyme pulse functionality.
+ *
+ * Donor code from previous DNA Console iteration.
+ *
+ * Arguments:
+ * * position - Index of the intended enzyme element to pulse
+ * * radduration - Duration of intended radiation pulse
+ * * number_of_blocks - Number of individual data blocks in the pulsed enzyme
+ */
+/obj/machinery/computer/scan_consolenew/proc/randomize_radiation_accuracy(position, radduration, number_of_blocks)
+ var/val = round(gaussian(0, RADIATION_ACCURACY_MULTIPLIER/radduration) + position, 1)
+ return WRAP(val, 1, number_of_blocks+1)
+
+/**
+ * Scrambles an enzyme element value for the enzyme pulse functionality.
+ *
+ * Donor code from previous DNA Console iteration.
+ *
+ * Arguments:
+ * * input - Enzyme identity element to scramble, expected hex value
+ * * rs - Strength of radiation pulse, increases the range of possible outcomes
+ */
+/obj/machinery/computer/scan_consolenew/proc/scramble(input,rs)
+ var/length = length(input)
+ var/ran = gaussian(0, rs*RADIATION_STRENGTH_MULTIPLIER)
+ if(ran == 0)
+ ran = pick(-1,1) //hacky, statistically should almost never happen. 0-chance makes people mad though
+ else if(ran < 0)
+ ran = round(ran) //negative, so floor it
+ else
+ ran = -round(-ran) //positive, so ceiling it
+ return num2hex(WRAP(hex2num(input)+ran, 0, 16**length), length)
+
+ /**
+ * Performs the enzyme radiation pulse.
+ *
+ * Donor code from previous DNA Console iteration. Called from process() when
+ * there is a radiation pulse in progress. Ends processing.
+ */
+/obj/machinery/computer/scan_consolenew/proc/rad_pulse()
+ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner
+ // operational guard checks.
+ // If we can't, abort the procedure.
+ if(!can_modify_occupant())
+ rad_pulse_index = 0
+ end_processing()
+ return
+
+ var/len = length_char(scanner_occupant.dna.uni_identity)
+ var/num = randomize_radiation_accuracy(rad_pulse_index, radduration + (connected_scanner.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2 //Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low
+ var/hex = copytext_char(scanner_occupant.dna.uni_identity, num, num+1)
+ hex = scramble(hex, radstrength, radduration)
+
+ scanner_occupant.dna.uni_identity = copytext_char(scanner_occupant.dna.uni_identity, 1, num) + hex + copytext_char(scanner_occupant.dna.uni_identity, num + 1)
+ scanner_occupant.updateappearance(mutations_overlay_update=1)
+
+ rad_pulse_index = 0
+ end_processing()
+ return
+
+/**
+ * Sets the default state for the tgui interface.
+ */
+/obj/machinery/computer/scan_consolenew/proc/set_default_state()
+ tgui_view_state["consoleMode"] = "storage"
+ tgui_view_state["storageMode"] = "console"
+ tgui_view_state["storageConsSubMode"] = "mutations"
+ tgui_view_state["storageDiskSubMode"] = "mutations"
+
+
+#undef INJECTOR_TIMEOUT
+#undef NUMBER_OF_BUFFERS
+#undef SCRAMBLE_TIMEOUT
+#undef JOKER_TIMEOUT
+#undef JOKER_UPGRADE
+
+#undef RADIATION_STRENGTH_MAX
+#undef RADIATION_STRENGTH_MULTIPLIER
+
+#undef RADIATION_DURATION_MAX
+#undef RADIATION_ACCURACY_MULTIPLIER
+
+#undef RADIATION_IRRADIATION_MULTIPLIER
+
+#undef STATUS_TRANSFORMING
+
+#undef SEARCH_OCCUPANT
+#undef SEARCH_STORED
+#undef SEARCH_DISKETTE
+#undef SEARCH_ADV_INJ
diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm
index 26efe7c4ba0..ed5a031dba2 100644
--- a/code/game/machinery/computer/launchpad_control.dm
+++ b/code/game/machinery/computer/launchpad_control.dm
@@ -56,7 +56,7 @@
/obj/machinery/computer/launchpad/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "launchpad_console", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "LaunchpadConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/launchpad/ui_data(mob/user)
diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
index 9da901cd20e..6cb6a1d34ed 100644
--- a/code/game/machinery/computer/prisoner/gulag_teleporter.dm
+++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
@@ -25,7 +25,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "gulag_console", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "GulagTeleporterConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/prisoner/gulag_teleporter_computer/ui_data(mob/user)
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 917d6f9f7af..115b827e54e 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -27,7 +27,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "robotics_control_console", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "RoboticsControlConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/robotics/ui_data(mob/user)
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index 1cab2bd0456..ab42b16d8ae 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -22,7 +22,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "station_alert", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "StationAlertConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/station_alert/ui_data(mob/user)
diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm
index 4028a1347aa..1e85a6d76f5 100644
--- a/code/game/machinery/computer/teleporter.dm
+++ b/code/game/machinery/computer/teleporter.dm
@@ -37,7 +37,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "teleporter", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Teleporter", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/teleporter/ui_data(mob/user)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 8cb7502d6cb..288fdfab112 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1323,7 +1323,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "ai_airlock", name, 500, 390, master_ui, state)
+ ui = new(user, src, ui_key, "AiAirlock", name, 500, 390, master_ui, state)
ui.open()
return TRUE
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index e1b826ffeee..6d4e055bbd5 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -15,7 +15,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "airlock_electronics", name, 420, 485, master_ui, state)
+ ui = new(user, src, ui_key, "AirlockElectronics", name, 420, 485, master_ui, state)
ui.open()
/obj/item/electronics/airlock/ui_static_data(mob/user)
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 4e5fa5f48ae..315ef79b289 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -146,7 +146,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "brig_timer", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "BrigTimer", name, ui_x, ui_y, master_ui, state)
ui.open()
//icon update function
diff --git a/code/game/machinery/electrolyzer.dm b/code/game/machinery/electrolyzer.dm
new file mode 100644
index 00000000000..ad2242c9ead
--- /dev/null
+++ b/code/game/machinery/electrolyzer.dm
@@ -0,0 +1,182 @@
+#define ELECTROLYZER_MODE_STANDBY "standby"
+#define ELECTROLYZER_MODE_WORKING "working"
+
+/obj/machinery/electrolyzer
+ anchored = FALSE
+ density = TRUE
+ interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN
+ icon = 'icons/obj/atmos.dmi'
+ icon_state = "electrolyzer-off"
+ name = "space electrolyzer"
+ desc = "Thanks to the fast and dynamic response of our electrolyzers, on-site hydrogen production is guaranteed. Warranty void if used by clowns"
+ max_integrity = 250
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 10)
+ circuit = /obj/item/circuitboard/machine/electrolyzer
+ ui_x = 400
+ ui_y = 305
+
+ ///used to check if there is a cell in the machine
+ var/obj/item/stock_parts/cell/cell
+ ///check if the machine is on or off
+ var/on = FALSE
+ ///check what mode the machine should be (WORKING, STANDBY)
+ var/mode = ELECTROLYZER_MODE_STANDBY
+ ///Increase the amount of moles worked on, changed by upgrading the laser tier
+ var/workingPower = 1
+ ///Decrease the amount of power usage, changed by upgrading the capacitor tier
+ var/efficiency = 0.5
+
+/obj/machinery/electrolyzer/get_cell()
+ return cell
+
+/obj/machinery/electrolyzer/Initialize()
+ . = ..()
+ if(ispath(cell))
+ cell = new cell(src)
+ update_icon()
+
+/obj/machinery/electrolyzer/Destroy()
+ if(cell)
+ QDEL_NULL(cell)
+ return ..()
+
+/obj/machinery/electrolyzer/on_deconstruction()
+ if(cell)
+ component_parts += cell
+ cell = null
+ return ..()
+
+/obj/machinery/electrolyzer/examine(mob/user)
+ . = ..()
+ . += "\The [src] is [on ? "on" : "off"], and the hatch is [panel_open ? "open" : "closed"]."
+
+ if(cell)
+ . += "The charge meter reads [cell ? round(cell.percent(), 1) : 0]%."
+ else
+ . += "There is no power cell installed."
+
+/obj/machinery/electrolyzer/update_icon_state()
+ icon_state = "electrolyzer-[on ? "[mode]" : "off"]"
+
+/obj/machinery/electrolyzer/update_overlays()
+ . = ..()
+
+ if(panel_open)
+ . += "electrolyzer-open"
+
+/obj/machinery/electrolyzer/process()
+ if(!is_operational() && on)
+ on = FALSE
+ if(!on)
+ return PROCESS_KILL
+
+ if(!cell || cell.charge <= 0)
+ on = FALSE
+ update_icon()
+ return PROCESS_KILL
+
+ var/turf/L = loc
+ if(!istype(L))
+ if(mode != ELECTROLYZER_MODE_STANDBY)
+ mode = ELECTROLYZER_MODE_STANDBY
+ update_icon()
+ return
+
+ var/newMode = on ? ELECTROLYZER_MODE_WORKING : ELECTROLYZER_MODE_STANDBY //change the mode to working if the machine is on
+
+ if(mode != newMode) //check if the mode is set correctly
+ mode = newMode
+ update_icon()
+
+ if(mode == ELECTROLYZER_MODE_STANDBY)
+ return
+
+ var/datum/gas_mixture/env = L.return_air() //get air from the turf
+ var/datum/gas_mixture/removed = env.remove(0.1 * env.total_moles())
+ removed.assert_gases(/datum/gas/water_vapor, /datum/gas/oxygen, /datum/gas/hydrogen)
+ var/proportion = min(removed.gases[/datum/gas/water_vapor][MOLES], (3 * workingPower))//Works to max 12 moles at a time.
+ removed.gases[/datum/gas/water_vapor][MOLES] -= proportion * 2 * workingPower
+ removed.gases[/datum/gas/oxygen][MOLES] += proportion * workingPower
+ removed.gases[/datum/gas/hydrogen][MOLES] += proportion * 2 * workingPower
+ env.merge(removed) //put back the new gases in the turf
+ air_update_turf()
+ cell.use((5 * proportion * workingPower) / (efficiency + workingPower))
+
+/obj/machinery/electrolyzer/RefreshParts()
+ var/laser = 0
+ var/cap = 0
+ for(var/obj/item/stock_parts/micro_laser/M in component_parts)
+ laser += M.rating
+ for(var/obj/item/stock_parts/capacitor/M in component_parts)
+ cap += M.rating
+
+ workingPower = laser //used in the amount of moles processed
+
+ efficiency = (cap + 1) * 0.5 //used in the amount of charge in power cell uses
+
+/obj/machinery/electrolyzer/attackby(obj/item/I, mob/user, params)
+ add_fingerprint(user)
+ if(default_unfasten_wrench(user, I))
+ return
+ if(istype(I, /obj/item/stock_parts/cell))
+ if(!panel_open)
+ to_chat(user, "The hatch must be open to insert a power cell!")
+ return
+ if(cell)
+ to_chat(user, "There is already a power cell inside!")
+ return
+ if(!user.transferItemToLoc(I, src))
+ return
+ cell = I
+ I.add_fingerprint(usr)
+
+ user.visible_message("\The [user] inserts a power cell into \the [src].", "You insert the power cell into \the [src].")
+ SStgui.update_uis(src)
+
+ return
+ if(I.tool_behaviour == TOOL_SCREWDRIVER)
+ panel_open = !panel_open
+ user.visible_message("\The [user] [panel_open ? "opens" : "closes"] the hatch on \the [src].", "You [panel_open ? "open" : "close"] the hatch on \the [src].")
+ update_icon()
+ return
+ if(default_deconstruction_crowbar(I))
+ return
+ return ..()
+
+/obj/machinery/electrolyzer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
+ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "Electrolyzer", name, ui_x, ui_y, master_ui, state)
+ ui.open()
+
+/obj/machinery/electrolyzer/ui_data()
+ var/list/data = list()
+ data["open"] = panel_open
+ data["on"] = on
+ data["hasPowercell"] = !isnull(cell)
+ if(cell)
+ data["powerLevel"] = round(cell.percent(), 1)
+ return data
+
+/obj/machinery/electrolyzer/ui_act(action, params)
+ . = ..()
+ if(.)
+ return
+ switch(action)
+ if("power")
+ on = !on
+ mode = ELECTROLYZER_MODE_STANDBY
+ usr.visible_message("[usr] switches [on ? "on" : "off"] \the [src].", "You switch [on ? "on" : "off"] \the [src].")
+ update_icon()
+ if (on)
+ START_PROCESSING(SSmachines, src)
+ . = TRUE
+ if("eject")
+ if(panel_open && cell)
+ cell.forceMove(drop_location())
+ cell = null
+ . = TRUE
+
+#undef ELECTROLYZER_MODE_STANDBY
+#undef ELECTROLYZER_MODE_WORKING
diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm
index c872fa661a7..98f9a304f72 100644
--- a/code/game/machinery/gulag_item_reclaimer.dm
+++ b/code/game/machinery/gulag_item_reclaimer.dm
@@ -31,7 +31,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "gulag_item_reclaimer", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "GulagItemReclaimer", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/gulag_item_reclaimer/ui_data(mob/user)
diff --git a/code/game/machinery/hypnochair.dm b/code/game/machinery/hypnochair.dm
index ff8f1698d65..670d8f758c3 100644
--- a/code/game/machinery/hypnochair.dm
+++ b/code/game/machinery/hypnochair.dm
@@ -37,7 +37,7 @@
/obj/machinery/hypnochair/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "hypnochair", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "HypnoChair", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/hypnochair/ui_data()
diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm
index 265832a6a74..23e1b9dcc1c 100644
--- a/code/game/machinery/launch_pad.dm
+++ b/code/game/machinery/launch_pad.dm
@@ -324,8 +324,7 @@
/obj/item/launchpad_remote/ui_interact(mob/user, ui_key = "launchpad_remote", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "launchpad_remote", "Briefcase Launchpad Remote", 300, 240, master_ui, state) //width, height
- ui.set_style("syndicate")
+ ui = new(user, src, ui_key, "LaunchpadRemote", "Briefcase Launchpad Remote", 300, 240, master_ui, state) //width, height
ui.open()
ui.set_autoupdate(TRUE)
diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm
index b71b7e59572..ba33ab23ad5 100644
--- a/code/game/machinery/medical_kiosk.dm
+++ b/code/game/machinery/medical_kiosk.dm
@@ -172,7 +172,7 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "medical_kiosk", name, 625, 550, master_ui, state)
+ ui = new(user, src, ui_key, "MedicalKiosk", name, 575, 420, master_ui, state)
ui.open()
icon_state = "kiosk_off"
RefreshParts()
@@ -236,29 +236,18 @@
trauma_text += trauma_desc
trauma_status = "Cerebral traumas detected: patient appears to be suffering from [english_list(trauma_text)]."
- var/chem_status = FALSE
- var/chemical_list= list()
- var/overdose_status = FALSE
+ var/chemical_list = list()
var/overdose_list = list()
- var/addict_status = FALSE
var/addict_list = list()
var/hallucination_status = "Patient is not hallucinating."
- for(var/datum/reagent/R in altPatient.reagents.reagent_list)
- if(R.overdosed)
- overdose_status = TRUE
-
if(altPatient.reagents.reagent_list.len) //Chemical Analysis details.
- chem_status = TRUE
for(var/datum/reagent/R in altPatient.reagents.reagent_list)
chemical_list += list(list("name" = R.name, "volume" = round(R.volume, 0.01)))
if(R.overdosed == 1)
overdose_list += list(list("name" = R.name))
- else
- chemical_list = "Patient contains no reagents"
if(altPatient.reagents.addiction_list.len)
- addict_status = TRUE
for(var/datum/reagent/R in altPatient.reagents.addiction_list)
addict_list += list(list("name" = R.name))
if (altPatient.hallucinating())
@@ -296,7 +285,6 @@
else if (user.hallucinating())
chaos_modifier = 0.3
-
data["kiosk_cost"] = active_price + (chaos_modifier * (rand(1,25)))
data["patient_name"] = patient_name
data["patient_health"] = round(((total_health - (chaos_modifier * (rand(1,50)))) / max_health) * 100, 0.001)
@@ -316,18 +304,15 @@
data["bleed_status"] = bleed_status
data["blood_levels"] = blood_percent - (chaos_modifier * (rand(1,35)))
data["blood_status"] = blood_status
- data["are_chems_present"] = chem_status ? TRUE : FALSE
data["chemical_list"] = chemical_list
- data["are_overdoses_present"] = overdose_status ? TRUE : FALSE
- data["overdose_status"] = overdose_list
- data["are_addictions_present"] = addict_status ? TRUE : FALSE
- data["addiction_status"] = addict_list
+ data["overdose_list"] = overdose_list
+ data["addict_list"] = addict_list
data["hallucinating_status"] = hallucination_status
- data["active_status_1"] = scan_active_1 ? FALSE : TRUE //General Scan Check
- data["active_status_2"] = scan_active_2 ? FALSE : TRUE //Symptom Scan Check
- data["active_status_3"] = scan_active_3 ? FALSE : TRUE //Radio-Neuro Scan Check
- data["active_status_4"] = scan_active_4 ? FALSE : TRUE //Radio-Neuro Scan Check
+ data["active_status_1"] = scan_active_1 // General Scan Check
+ data["active_status_2"] = scan_active_2 // Symptom Scan Check
+ data["active_status_3"] = scan_active_3 // Radio-Neuro Scan Check
+ data["active_status_4"] = scan_active_4 // Radio-Neuro Scan Check
return data
/obj/machinery/medical_kiosk/ui_act(action,active)
diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm
index 6407b0e8b62..76e502db17c 100644
--- a/code/game/machinery/roulette_machine.dm
+++ b/code/game/machinery/roulette_machine.dm
@@ -65,7 +65,7 @@
return
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "roulette", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Roulette", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/roulette/ui_data(mob/user)
diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm
index 8eaff2478d4..334557a814a 100644
--- a/code/game/machinery/scan_gate.dm
+++ b/code/game/machinery/scan_gate.dm
@@ -184,7 +184,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "scanner_gate", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "ScannerGate", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/scanner_gate/ui_data()
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index 888e627482e..b9632c9a6a6 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -174,7 +174,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "space_heater", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "SpaceHeater", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/space_heater/ui_data()
diff --git a/code/game/machinery/stasis.dm b/code/game/machinery/stasis.dm
index da8111f5714..102466666fb 100644
--- a/code/game/machinery/stasis.dm
+++ b/code/game/machinery/stasis.dm
@@ -21,7 +21,7 @@
/obj/machinery/stasis/Initialize()
. = ..()
- for(var/direction in GLOB.cardinals)
+ for(var/direction in GLOB.alldirs)
op_computer = locate(/obj/machinery/computer/operating, get_step(src, direction))
if(op_computer)
op_computer.sbed = src
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 9ab6c8ec855..c6e97bc2b64 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -438,7 +438,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "suit_storage_unit", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "SuitStorageUnit", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/suit_storage_unit/ui_data()
diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm
index b9d3912852c..36f17f281c1 100644
--- a/code/game/mecha/mech_bay.dm
+++ b/code/game/mecha/mech_bay.dm
@@ -94,7 +94,7 @@
/obj/machinery/computer/mech_bay_power_console/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "mech_bay_power_console", "Mech Bay Power Control Console", ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "MechBayPowerConsole", "Mech Bay Power Control Console", ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/mech_bay_power_console/ui_act(action, params)
diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm
index 3a9cb26f50e..9c52797129e 100644
--- a/code/game/mecha/mecha_control_console.dm
+++ b/code/game/mecha/mecha_control_console.dm
@@ -12,7 +12,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "exosuit_control_console", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "ExosuitControlConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/mecha/ui_data(mob/user)
diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm
index de7f7984847..f72a8189e63 100644
--- a/code/game/objects/items/RPD.dm
+++ b/code/game/objects/items/RPD.dm
@@ -248,7 +248,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
var/datum/asset/assets = get_asset_datum(/datum/asset/spritesheet/pipes)
assets.send(user)
- ui = new(user, src, ui_key, "rpd", name, 425, 515, master_ui, state)
+ ui = new(user, src, ui_key, "RapidPipeDispenser", name, 425, 515, master_ui, state)
ui.open()
/obj/item/pipe_dispenser/ui_data(mob/user)
diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm
index 75f36289907..94fd0a910dd 100644
--- a/code/game/objects/items/airlock_painter.dm
+++ b/code/game/objects/items/airlock_painter.dm
@@ -200,7 +200,7 @@
/obj/item/airlock_painter/decal/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "decal_painter", name, 500, 400, master_ui, state)
+ ui = new(user, src, ui_key, "DecalPainter", name, 500, 400, master_ui, state)
ui.open()
/obj/item/airlock_painter/decal/ui_data(mob/user)
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index a1e9542e97e..f2bf9c12f9a 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -485,7 +485,7 @@ update_label()
registered_name = "Syndicate"
assignment = "Syndicate Operative"
icon_state = "syndie"
- access = list(ACCESS_SYNDICATE)
+ access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS)
uses_overlays = FALSE
/obj/item/card/id/syndicate_command/captain_id
@@ -495,7 +495,7 @@ update_label()
registered_name = "Syndicate"
assignment = "Syndicate Ship Captain"
icon_state = "syndie"
- access = list(ACCESS_SYNDICATE)
+ access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS)
uses_overlays = FALSE
/obj/item/card/id/captains_spare
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index 5819474f5a8..db1bd6e3f1f 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -498,6 +498,21 @@
/obj/item/stack/cable_coil = 3)
needs_anchored = FALSE
+/obj/item/circuitboard/machine/electrolyzer
+ name = "Electrolyzer (Machine Board)"
+ icon_state = "generic"
+ build_path = /obj/machinery/electrolyzer
+ req_components = list(
+ /obj/item/stock_parts/micro_laser = 2,
+ /obj/item/stock_parts/capacitor = 1,
+ /obj/item/stack/cable_coil = 3,
+ /obj/item/stack/sheet/glass = 1,
+ /obj/item/stack/sheet/mineral/gold = 1,
+ /obj/item/stack/sheet/mineral/silver = 1)
+
+ needs_anchored = FALSE
+
+
/obj/item/circuitboard/machine/techfab
name = "\improper Techfab (Machine Board)"
icon_state = "generic"
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 1d8dafd4ff9..8fab41ecf24 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -149,7 +149,7 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "crayon", name, 600, 600,
+ ui = new(user, src, ui_key, "Crayon", name, 600, 600,
master_ui, state)
ui.open()
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index 5500bcd1ab1..ee9730d8601 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -58,7 +58,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "intellicard", name, 500, 500, master_ui, state)
+ ui = new(user, src, ui_key, "Intellicard", name, 500, 500, master_ui, state)
ui.open()
/obj/item/aicard/ui_data()
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index de4623298cb..f574aaea16b 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -89,7 +89,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "electropack", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Electropack", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/electropack/ui_data(mob/user)
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 14801f6f496..ea218cd5146 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -118,7 +118,7 @@
ui_height += 6 + channels.len * 21
else
ui_height += 24
- ui = new(user, src, ui_key, "radio", name, ui_width, ui_height, master_ui, state)
+ ui = new(user, src, ui_key, "Radio", name, ui_width, ui_height, master_ui, state)
ui.open()
/obj/item/radio/ui_data(mob/user)
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 1be9024bcb2..d16cb5aa181 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -116,7 +116,7 @@ effective or pretty fucking useless.
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "radioactive_microlaser", "Radioactive Microlaser", ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "RadioactiveMicrolaser", "Radioactive Microlaser", ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/healthanalyzer/rad_laser/ui_data(mob/user)
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 6258d0d41c6..a800a9e49fb 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -197,7 +197,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "transfer_valve", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "TransferValve", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/transfer_valve/ui_data(mob/user)
diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm
index 210c0846307..775fdd04468 100644
--- a/code/game/objects/items/eightball.dm
+++ b/code/game/objects/items/eightball.dm
@@ -196,7 +196,7 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "eightball", name, 400, 600, master_ui, state)
+ ui = new(user, src, ui_key, "EightBallVote", name, 400, 600, master_ui, state)
ui.open()
/obj/item/toy/eightball/haunted/ui_data(mob/user)
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index ca938d6bf77..66ff1004b36 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -632,6 +632,10 @@
. = ..()
host = loc
+/obj/item/borg/projectile_dampen/cyborg_unequip(mob/user)
+ deactivate_field()
+ . = ..()
+
/obj/item/borg/projectile_dampen/on_mob_death()
deactivate_field()
. = ..()
diff --git a/code/game/objects/items/stacks/ammonia_crystals.dm b/code/game/objects/items/stacks/ammonia_crystals.dm
new file mode 100644
index 00000000000..ff26c60b73f
--- /dev/null
+++ b/code/game/objects/items/stacks/ammonia_crystals.dm
@@ -0,0 +1,9 @@
+/obj/item/stack/ammonia_crystals
+ name = "Ammonia Crystals"
+ singular_name = "Ammonia Crystal"
+ icon = 'icons/obj/stack_objects.dmi'
+ icon_state = "ammonia_crystal"
+ w_class = WEIGHT_CLASS_TINY
+ resistance_flags = FLAMMABLE
+ max_amount = 50
+ grind_results = list(/datum/reagent/ammonia = 10)
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index 83fc337a3a4..8f2a23df9e0 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -302,6 +302,7 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
GLOBAL_LIST_INIT(titanium_recipes, list ( \
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), \
+ new/datum/stack_recipe("shuttle seat", /obj/structure/chair/comfy/shuttle, 2, one_per_turf = TRUE, on_floor = TRUE), \
))
/obj/item/stack/sheet/mineral/titanium/get_main_recipes()
@@ -476,3 +477,23 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \
/obj/item/stack/sheet/mineral/coal/ten
amount = 10
+
+//Metal Hydrogen
+GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
+ new /datum/stack_recipe("incomplete servant golem shell", /obj/item/golem_shell/servant, req_amount=20, res_amount=1),
+ ))
+
+/obj/item/stack/sheet/mineral/metal_hydrogen
+ name = "Metal Hydrogen"
+ icon_state = "sheet-metalhydrogen"
+ item_state = "sheet-metalhydrogen"
+ singular_name = "Metal Hydrogen sheet"
+ w_class = WEIGHT_CLASS_NORMAL
+ resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE
+ point_value = 100
+ custom_materials = list(/datum/material/metalhydrogen=MINERAL_MATERIAL_AMOUNT)
+ merge_type = /obj/item/stack/sheet/mineral/metal_hydrogen
+
+/obj/item/stack/sheet/mineral/metal_hydrogen/get_main_recipes()
+ . = ..()
+ . += GLOB.metalhydrogen_recipes
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index a1be6255d58..92863243f6b 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -40,7 +40,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
new/datum/stack_recipe("rack parts", /obj/item/rack_parts), \
new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
null, \
- new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
+ new/datum/stack_recipe("canister frame", /obj/structure/canister_frame/machine/frame_tier_0, 5, time = 8, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \
new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index a75b7205df4..e6e8f5977d9 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -200,6 +200,7 @@
/obj/item/seeds,
/obj/item/grown,
/obj/item/reagent_containers/honeycomb,
+ /obj/item/graft,
))
////////
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index d2dd01fa76a..18265244f6b 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -672,3 +672,30 @@
/obj/item/storage/belt/sabre/PopulateContents()
new /obj/item/melee/sabre(src)
update_icon()
+
+/obj/item/storage/belt/plant
+ name = "botanical belt"
+ desc = "A belt used to hold most hydroponics supplies. Suprisingly, not green."
+ icon_state = "plantbelt"
+ item_state = "plantbelt"
+ content_overlays = TRUE
+
+/obj/item/storage/belt/plant/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ STR.max_items = 6
+ STR.max_w_class = WEIGHT_CLASS_NORMAL
+ STR.set_holdable(list(
+ /obj/item/reagent_containers/spray/plantbgone,
+ /obj/item/plant_analyzer,
+ /obj/item/seeds,
+ /obj/item/reagent_containers/glass/bottle,
+ /obj/item/reagent_containers/glass/beaker,
+ /obj/item/cultivator,
+ /obj/item/reagent_containers/spray/pestspray,
+ /obj/item/hatchet,
+ /obj/item/graft,
+ /obj/item/secateurs,
+ /obj/item/geneshears,
+ /obj/item/shovel/spade
+ ))
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 5985436b18c..3f9980da836 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -200,7 +200,6 @@
/obj/item/storage/box/syringes/variety/PopulateContents()
new /obj/item/reagent_containers/syringe(src)
new /obj/item/reagent_containers/syringe/lethal(src)
- new /obj/item/reagent_containers/syringe/noreact(src)
new /obj/item/reagent_containers/syringe/piercing(src)
new /obj/item/reagent_containers/syringe/bluespace(src)
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index dc5f0a5d86a..27cbb24615f 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -165,7 +165,7 @@
new /obj/item/assembly/signaler(src) // 0 tc
new /obj/item/storage/toolbox/syndicate(src) // 1 tc
new /obj/item/pen/edagger(src)
- new /obj/item/gun/energy/wormhole_projector(src)
+ new /obj/item/gun/energy/wormhole_projector/core_inserted(src)
new /obj/item/gun/energy/decloner/unrestricted(src)
if("bee")
diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm
index 015add093bc..5803882e3be 100644
--- a/code/game/objects/items/tanks/tanks.dm
+++ b/code/game/objects/items/tanks/tanks.dm
@@ -145,7 +145,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "tanks", name, 400, 120, master_ui, state)
+ ui = new(user, src, ui_key, "Tank", name, 400, 120, master_ui, state)
ui.open()
/obj/item/tank/ui_data(mob/user)
diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm
index 8f120e3d309..627a41349eb 100644
--- a/code/game/objects/structures/artstuff.dm
+++ b/code/game/objects/structures/artstuff.dm
@@ -80,7 +80,7 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "canvas", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Canvas", name, ui_x, ui_y, master_ui, state)
ui.set_autoupdate(FALSE)
ui.open()
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 2826174b747..3938ec2795b 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -202,6 +202,7 @@
name = "shuttle seat"
desc = "A comfortable, secure seat. It has a more sturdy looking buckling system, for smoother flights."
icon_state = "shuttle_chair"
+ buildstacktype = /obj/item/stack/sheet/mineral/titanium
/obj/structure/chair/comfy/shuttle/GetArmrest()
return mutable_appearance('icons/obj/chairs.dmi', "shuttle_chair_armrest")
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index acbcac4579c..0daf7d7e05f 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -653,6 +653,13 @@
flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Fix the ship, find a way to power it and follow your captain's orders."
important_info = "Obey orders given by your captain. DO NOT let the ship fall into enemy hands."
outfit = /datum/outfit/syndicatespace/syndicrew
+ assignedrole = "Cybersun Crewmember"
+
+/obj/effect/mob_spawn/human/syndicatespace/Initialize(mapload)
+ . = ..()
+ var/policy = get_policy(ROLE_SYNDICATE_CYBERSUN)
+ if(policy)
+ important_info = policy
/datum/outfit/syndicatespace/syndicrew/post_equip(mob/living/carbon/human/H)
H.faction |= ROLE_SYNDICATE
@@ -660,11 +667,6 @@
/obj/effect/mob_spawn/human/syndicatespace/special(mob/living/new_spawn)
new_spawn.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND)
-/obj/effect/mob_spawn/human/syndicatespace/Destroy()
- new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src))
- return ..()
-
-
/obj/effect/mob_spawn/human/syndicatespace/captain
name = "Syndicate Ship Captain"
roundstart = FALSE
@@ -674,8 +676,14 @@
short_desc = "You are the captain of an old ship, stuck in hostile space."
flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Command your crew and turn your ship into the most protected fortress."
important_info = "Protect the ship and secret documents in your backpack with your own life. DO NOT let the ship fall into enemy hands."
- mob_gender = "male"
outfit = /datum/outfit/syndicatespace/syndicaptain
+ assignedrole = "Cybersun Captain"
+
+/obj/effect/mob_spawn/human/syndicatespace/syndicaptain/Initialize(mapload)
+ . = ..()
+ var/policy = get_policy(ROLE_SYNDICATE_CYBERSUN_CAPTAIN)
+ if(policy)
+ important_info = policy
/datum/outfit/syndicatespace/syndicaptain/post_equip(mob/living/carbon/human/H)
H.faction |= ROLE_SYNDICATE
@@ -706,7 +714,7 @@
glasses = /obj/item/clothing/glasses/night
mask = /obj/item/clothing/mask/gas/syndicate
head = /obj/item/clothing/head/HoS/beret/syndicate
- ears = /obj/item/radio/headset/syndicate/alt
+ ears = /obj/item/radio/headset/syndicate/alt/leader
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
back = /obj/item/storage/backpack
diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm
index 570f26cf71d..91ea8cbb1da 100644
--- a/code/game/objects/structures/railings.dm
+++ b/code/game/objects/structures/railings.dm
@@ -47,7 +47,8 @@
/obj/structure/railing/CanPass(atom/movable/mover, turf/target)
..()
if(get_dir(loc, target) & dir)
- return !density
+ var/checking = UNSTOPPABLE | FLYING | FLOATING
+ return !density || mover.movement_type & checking
return TRUE
/obj/structure/railing/corner/CanPass()
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index d46caf30fc7..2bd552bf19b 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -526,7 +526,7 @@
/obj/structure/table/optable/Initialize()
. = ..()
- for(var/direction in GLOB.cardinals)
+ for(var/direction in GLOB.alldirs)
computer = locate(/obj/machinery/computer/operating, get_step(src, direction))
if(computer)
computer.table = src
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index cc76a9975e3..1988510b7b8 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -71,7 +71,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "tank_dispenser", name, 275, 103, master_ui, state)
+ ui = new(user, src, ui_key, "TankDispenser", name, 275, 103, master_ui, state)
ui.open()
/obj/structure/tank_dispenser/ui_data(mob/user)
diff --git a/code/modules/NTNet/relays.dm b/code/modules/NTNet/relays.dm
index 43c6334d65b..6289158901e 100644
--- a/code/modules/NTNet/relays.dm
+++ b/code/modules/NTNet/relays.dm
@@ -69,7 +69,7 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "ntnet_relay", "NTNet Quantum Relay", ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "NtnetRelay", "NTNet Quantum Relay", ui_x, ui_y, master_ui, state)
ui.open()
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index bece9ff11c0..3a8730a39af 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -633,9 +633,10 @@ GLOBAL_PROTECT(admin_verbs_hideable)
holder.deactivate()
- to_chat(src, "You are now a normal player.", confidential = TRUE)
- log_admin("[src] deadmined themself.")
- message_admins("[src] deadmined themself.")
+
+ to_chat(src, "You are now a normal player.")
+ log_admin("[src] deadminned themselves.")
+ message_admins("[src] deadminned themselves.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Deadmin")
/client/proc/readmin()
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index bac573b6e08..3a51fa91ad8 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -51,6 +51,7 @@
Make all areas powered
Make all areas unpowered
Power all SMES
+ Anonymous Names (needs to be used in the lobby)
Triple AI mode (needs to be used in the lobby)
Everyone is the traitor
Summon Guns
@@ -304,6 +305,12 @@
var/mob/living/carbon/human/H = i
H.set_species(newtype)
+ if("anon_name")
+ if(!check_rights(R_FUN))
+ return
+ usr.client.anon_names()
+ SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Anonymous Names"))
+
if("tripleAI")
if(!check_rights(R_FUN))
return
diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm
index 9e19e61ccb2..f112759944a 100644
--- a/code/modules/admin/sql_message_system.dm
+++ b/code/modules/admin/sql_message_system.dm
@@ -106,6 +106,7 @@
var/text
var/user_key_name = key_name(usr)
var/user_name_admin = key_name_admin(usr)
+ var/deleted_by_ckey = sanitizeSQL(usr.ckey)
var/datum/DBQuery/query_find_del_message = SSdbcore.NewQuery("SELECT type, IFNULL((SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), targetckey), text FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0")
if(!query_find_del_message.warn_execute())
qdel(query_find_del_message)
@@ -115,7 +116,7 @@
target_key = query_find_del_message.item[2]
text = query_find_del_message.item[3]
qdel(query_find_del_message)
- var/datum/DBQuery/query_del_message = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET deleted = 1 WHERE id = [message_id]")
+ var/datum/DBQuery/query_del_message = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET deleted = 1, deleted_ckey = '[deleted_by_ckey]' WHERE id = [message_id]")
if(!query_del_message.warn_execute())
qdel(query_del_message)
return
diff --git a/code/modules/admin/verbs/anonymousnames.dm b/code/modules/admin/verbs/anonymousnames.dm
new file mode 100644
index 00000000000..9b36e887f01
--- /dev/null
+++ b/code/modules/admin/verbs/anonymousnames.dm
@@ -0,0 +1,65 @@
+/client/proc/anon_names()
+ set category = "Admin - Events"
+ set name = "Setup Anonymous Names"
+
+
+ if(SSticker.current_state > GAME_STATE_PREGAME)
+ to_chat(usr, "This option is currently only usable during pregame.")
+ return
+
+ if(SSticker.anonymousnames)
+ SSticker.anonymousnames = ANON_DISABLED
+ to_chat(usr, "Disabled anonymous names.")
+ message_admins("[key_name_admin(usr)] has disabled anonymous names.")
+ return
+ var/list/names = list("Cancel", ANON_RANDOMNAMES, ANON_EMPLOYEENAMES)
+ var/result = input(usr, "Choose an anonymous theme","going dark") as null|anything in names
+ if(!usr || !result || result == "Cancel")
+ return
+ if(SSticker.current_state > GAME_STATE_PREGAME)
+ to_chat(usr, "You took too long! The game has started.")
+ return
+
+ SSticker.anonymousnames = result
+ to_chat(usr, "Enabled anonymous names. THEME: [SSticker.anonymousnames].")
+ message_admins("[key_name_admin(usr)] has enabled anonymous names. THEME: [SSticker.anonymousnames].")
+
+/**
+ * anonymous_name: generates a corporate random name. used in admin event tool anonymous names
+ *
+ * first letter is always a letter
+ * Example name = "Employee Q5460Z"
+ * Arguments:
+ * * M - mob for preferences and gender
+ */
+/proc/anonymous_name(mob/M)
+ switch(SSticker.anonymousnames)
+ if(ANON_RANDOMNAMES)
+ return M.client.prefs.pref_species.random_name(M.gender,1)
+ if(ANON_EMPLOYEENAMES)
+ var/name = "Employee "
+
+ for(var/i in 1 to 6)
+ if(prob(30) || i == 1)
+ name += ascii2text(rand(65, 90)) //A - Z
+ else
+ name += ascii2text(rand(48, 57)) //0 - 9
+ return name
+
+/**
+ * anonymous_ai_name: generates a corporate random name (but for sillycones). used in admin event tool anonymous names
+ *
+ * first letter is always a letter
+ * Example name = "Employee Assistant Assuming Delta"
+ * Arguments:
+ * * is_ai - boolean to decide whether the name has "Core" (AI) or "Assistant" (Cyborg)
+ */
+/proc/anonymous_ai_name(is_ai = FALSE)
+ switch(SSticker.anonymousnames)
+ if(ANON_RANDOMNAMES)
+ return pick(GLOB.ai_names)
+ if(ANON_EMPLOYEENAMES)
+ var/verbs = capitalize(pick(GLOB.ing_verbs))
+ var/phonetic = pick(GLOB.phonetic_alphabet)
+
+ return "Employee [is_ai ? "Core" : "Assistant"] [verbs] [phonetic]"
diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm
index 671db413779..cbee1a066a5 100644
--- a/code/modules/admin/verbs/borgpanel.dm
+++ b/code/modules/admin/verbs/borgpanel.dm
@@ -36,7 +36,7 @@
/datum/borgpanel/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.admin_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "borgopanel", "Borg Panel", 700, 700, master_ui, state)
+ ui = new(user, src, ui_key, "BorgPanel", "Borg Panel", 700, 700, master_ui, state)
ui.open()
/datum/borgpanel/ui_data(mob/user)
diff --git a/code/modules/admin/verbs/tripAI.dm b/code/modules/admin/verbs/tripAI.dm
index c74bc7b13d1..5efa306e317 100644
--- a/code/modules/admin/verbs/tripAI.dm
+++ b/code/modules/admin/verbs/tripAI.dm
@@ -1,20 +1,15 @@
-/client/proc/triple_ai()
- set category = "Admin - Events"
- set name = "Create AI Triumvirate"
-
- if(SSticker.current_state > GAME_STATE_PREGAME)
- to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.", confidential = TRUE)
- return
-
- var/datum/job/job = SSjob.GetJob("AI")
- if(!job)
- to_chat(usr, "Unable to locate the AI job", confidential = TRUE)
- return
- if(SSticker.triai)
- SSticker.triai = 0
- to_chat(usr, "Only one AI will be spawned at round start.", confidential = TRUE)
- message_admins("[key_name_admin(usr)] has toggled off triple AIs at round start.")
- else
- SSticker.triai = 1
- to_chat(usr, "There will be an AI Triumvirate at round start.", confidential = TRUE)
- message_admins("[key_name_admin(usr)] has toggled on triple AIs at round start.")
+/client/proc/triple_ai()
+ set category = "Admin - Events"
+ set name = "Toggle AI Triumvirate"
+
+ if(SSticker.current_state > GAME_STATE_PREGAME)
+ to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.", confidential = TRUE)
+ return
+
+ var/datum/job/job = SSjob.GetJob("AI")
+ if(!job)
+ to_chat(usr, "Unable to locate the AI job", confidential = TRUE)
+ return
+ SSticker.triai = !SSticker.triai
+ to_chat(usr, "There will [SSticker.triai ? "" : "not"] be an AI Triumvirate at round start.")
+ message_admins("[key_name_admin(usr)] has toggled [SSticker.triai ? "on" : "off"] triple AIs at round start.")
diff --git a/code/modules/antagonists/changeling/cellular_emporium.dm b/code/modules/antagonists/changeling/cellular_emporium.dm
index 57346397c7b..bc433ef0cbb 100644
--- a/code/modules/antagonists/changeling/cellular_emporium.dm
+++ b/code/modules/antagonists/changeling/cellular_emporium.dm
@@ -16,7 +16,7 @@
/datum/cellular_emporium/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.always_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "cellular_emporium", name, 900, 480, master_ui, state)
+ ui = new(user, src, ui_key, "CellularEmporium", name, 900, 480, master_ui, state)
ui.open()
/datum/cellular_emporium/ui_data(mob/user)
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index eee48826e86..2e0f3412e70 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -843,7 +843,7 @@ structure_check() searches for nearby cultist structures required for the invoca
notify_ghosts("Manifest rune invoked in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src, header = "Manifest rune")
var/list/ghosts_on_rune = list()
for(var/mob/dead/observer/O in T)
- if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !QDELETED(O))
+ if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !(IsAdminGhost(O) && (O.client.prefs.toggles & ADMIN_IGNORE_CULT_GHOST)) && !QDELETED(O))
ghosts_on_rune += O
if(!ghosts_on_rune.len)
to_chat(user, "There are no spirits near [src]!")
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index c49c8f2621e..cc67881e715 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -7,7 +7,6 @@
density = TRUE
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
- ui_style = "nanotrasen"
ui_x = 350
ui_y = 442
@@ -264,8 +263,7 @@
/obj/machinery/nuclearbomb/ui_interact(mob/user, ui_key="main", datum/tgui/ui=null, force_open=0, datum/tgui/master_ui=null, datum/ui_state/state=GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "nuclear_bomb", name, ui_x, ui_y, master_ui, state)
- ui.set_style(ui_style)
+ ui = new(user, src, ui_key, "NuclearBomb", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/nuclearbomb/ui_data(mob/user)
diff --git a/code/modules/antagonists/traitor/equipment/module_picker.dm b/code/modules/antagonists/traitor/equipment/module_picker.dm
index 738bf46aab2..1185c0b60e0 100644
--- a/code/modules/antagonists/traitor/equipment/module_picker.dm
+++ b/code/modules/antagonists/traitor/equipment/module_picker.dm
@@ -34,13 +34,13 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.always_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "malfunction_module_picker", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "MalfunctionModulePicker", name, ui_x, ui_y, master_ui, state)
ui.open()
/datum/module_picker/ui_data(mob/user)
var/list/data = list()
- data["processing_time"] = processing_time
- data["compact_mode"] = compact_mode
+ data["processingTime"] = processing_time
+ data["compactMode"] = compact_mode
return data
/datum/module_picker/ui_static_data(mob/user)
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 4cbd667f600..9e5da7038bb 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -192,7 +192,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "infrared_emitter", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "InfraredEmitter", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/assembly/infra/ui_data(mob/user)
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index 2bc4c3e19fc..285d9c3599e 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -119,7 +119,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "proximity_sensor", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "ProximitySensor", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/assembly/prox_sensor/ui_data(mob/user)
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 7da4fb7bbc9..c4108e061f1 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -73,7 +73,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "signaler", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Signaler", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/assembly/signaler/ui_data(mob/user)
diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm
index 6dda7ff00e0..2ebc929eb65 100644
--- a/code/modules/assembly/timer.dm
+++ b/code/modules/assembly/timer.dm
@@ -94,7 +94,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "timer", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Timer", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/assembly/timer/ui_data(mob/user)
diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm
index 53fc478c617..19f8bd81c5e 100644
--- a/code/modules/asset_cache/asset_list_items.dm
+++ b/code/modules/asset_cache/asset_list_items.dm
@@ -4,10 +4,6 @@
assets = list(
"tgui.bundle.js" = 'tgui/packages/tgui/public/tgui.bundle.js',
"tgui.bundle.css" = 'tgui/packages/tgui/public/tgui.bundle.css',
- "shim-html5shiv.js" = 'tgui/packages/tgui/public/shim-html5shiv.js',
- "shim-ie8.js" = 'tgui/packages/tgui/public/shim-ie8.js',
- "shim-dom4.js" = 'tgui/packages/tgui/public/shim-dom4.js',
- "shim-css-om.js" = 'tgui/packages/tgui/public/shim-css-om.js',
)
/datum/asset/group/tgui
diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm
index d1a9212f0b4..6fe4fb0310b 100644
--- a/code/modules/atmospherics/environmental/LINDA_fire.dm
+++ b/code/modules/atmospherics/environmental/LINDA_fire.dm
@@ -23,16 +23,18 @@
var/tox = . ? .[MOLES] : 0
. = air_gases[/datum/gas/tritium]
var/trit = . ? .[MOLES] : 0
+ . = air_gases[/datum/gas/hydrogen]
+ var/h2 = . ? .[MOLES] : 0
if(active_hotspot)
if(soh)
- if(tox > 0.5 || trit > 0.5)
+ if(tox > 0.5 || trit > 0.5 || h2 > 0.5)
if(active_hotspot.temperature < exposed_temperature)
active_hotspot.temperature = exposed_temperature
if(active_hotspot.volume < exposed_volume)
active_hotspot.volume = exposed_volume
return
- if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && (tox > 0.5 || trit > 0.5))
+ if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && (tox > 0.5 || trit > 0.5 || h2 > 0.5))
active_hotspot = new /obj/effect/hotspot(src, exposed_volume*25, exposed_temperature)
@@ -171,12 +173,12 @@
qdel(src)
return
- if(!location.air || (INSUFFICIENT(/datum/gas/plasma) && INSUFFICIENT(/datum/gas/tritium)) || INSUFFICIENT(/datum/gas/oxygen))
+ if(!location.air || (INSUFFICIENT(/datum/gas/plasma) && INSUFFICIENT(/datum/gas/tritium) && INSUFFICIENT(/datum/gas/hydrogen)) || INSUFFICIENT(/datum/gas/oxygen))
qdel(src)
return
//Not enough to burn
- if(((!location.air.gases[/datum/gas/plasma] || location.air.gases[/datum/gas/plasma][MOLES] < 0.5) && (!location.air.gases[/datum/gas/tritium] || location.air.gases[/datum/gas/tritium][MOLES] < 0.5)) || location.air.gases[/datum/gas/oxygen][MOLES] < 0.5)
+ if(((!location.air.gases[/datum/gas/plasma] || location.air.gases[/datum/gas/plasma][MOLES] < 0.5) && (!location.air.gases[/datum/gas/tritium] || location.air.gases[/datum/gas/tritium][MOLES] < 0.5) && (!location.air.gases[/datum/gas/hydrogen] || location.air.gases[/datum/gas/hydrogen][MOLES] < 0.5)) || location.air.gases[/datum/gas/oxygen][MOLES] < 0.5)
qdel(src)
return
diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm
index 36e0565891b..1b0228b7d51 100644
--- a/code/modules/atmospherics/gasmixtures/gas_types.dm
+++ b/code/modules/atmospherics/gasmixtures/gas_types.dm
@@ -163,6 +163,13 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
fusion_power = -5
rarity = 10
+/datum/gas/hydrogen
+ id = "hydrogen"
+ specific_heat = 15
+ name = "Hydrogen"
+ dangerous = TRUE
+ rarity = 700
+
/obj/effect/overlay/gas
icon = 'icons/effects/atmospherics.dmi'
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm
index 723c0d8a80a..cc3b6510841 100644
--- a/code/modules/atmospherics/gasmixtures/reactions.dm
+++ b/code/modules/atmospherics/gasmixtures/reactions.dm
@@ -1,4 +1,22 @@
//All defines used in reactions are located in ..\__DEFINES\reactions.dm
+/*priority so far, check this list to see what are the numbers used. please use a different priority if the reaction doesn't work (higher number are done first)
+miaster = -10 (this should always be under all other fires)
+freonfire = -4
+plasmafire = -3
+h2fire = -2
+tritfire = -1
+nitrous_decomp = 0
+water_vapor = 1
+fusion = 2
+nitrylformation = 3
+bzformation = 4
+freonformation = 5
+stimformation = 5
+nobiliumformation = 6
+stimball = 7
+ammoniacrystals = 8
+nobiliumsuppression = INFINITY
+*/
/proc/init_gas_reactions()
. = list()
@@ -65,9 +83,10 @@
if (air.temperature <= WATER_VAPOR_FREEZE)
if(location && location.freon_gas_act())
. = REACTING
- else if(location && location.water_vapor_gas_act())
- air.gases[/datum/gas/water_vapor][MOLES] -= MOLES_GAS_VISIBLE
- . = REACTING
+ else if(air.temperature <= T20C + 10)
+ if(location && location.water_vapor_gas_act())
+ air.gases[/datum/gas/water_vapor][MOLES] -= MOLES_GAS_VISIBLE
+ . = REACTING
//tritium combustion: combustion of oxygen and tritium (treated as hydrocarbons). creates hotspots. exothermic
/datum/gas_reaction/nitrous_decomp
@@ -165,7 +184,7 @@
//plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic
/datum/gas_reaction/plasmafire
- priority = -2 //fire should ALWAYS be last, but plasma fires happen after tritium fires
+ priority = -3 //fire should ALWAYS be last, but plasma fires happen after tritium fires
name = "Plasma Combustion"
id = "plasmafire"
@@ -215,7 +234,9 @@
cached_gases[/datum/gas/tritium][MOLES] += plasma_burn_rate
else
ASSERT_GAS(/datum/gas/carbon_dioxide,air)
+ ASSERT_GAS(/datum/gas/water_vapor,air)
cached_gases[/datum/gas/carbon_dioxide][MOLES] += plasma_burn_rate
+ cached_gases[/datum/gas/water_vapor][MOLES] += plasma_burn_rate * 0.25
energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate)
@@ -240,7 +261,7 @@
//freon reaction (is not a fire yet)
datum/gas_reaction/freonfire
- priority = -3
+ priority = -4
name = "Freon combustion"
id = "freonfire"
@@ -291,6 +312,90 @@ datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
air.temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity
+/datum/gas_reaction/h2fire
+ priority = -2 //fire should ALWAYS be last, but tritium fires happen before plasma fires
+ name = "Hydrogen Combustion"
+ id = "h2fire"
+
+/datum/gas_reaction/h2fire/init_reqs()
+ min_requirements = list(
+ "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST,
+ /datum/gas/hydrogen = MINIMUM_MOLE_COUNT,
+ /datum/gas/oxygen = MINIMUM_MOLE_COUNT
+ )
+
+/datum/gas_reaction/h2fire/react(datum/gas_mixture/air, datum/holder)
+ var/energy_released = 0
+ var/old_heat_capacity = air.heat_capacity()
+ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow
+ var/temperature = air.temperature
+ var/list/cached_results = air.reaction_results
+ cached_results["fire"] = 0
+ var/turf/open/location = isturf(holder) ? holder : null
+ var/burned_fuel = 0
+ if(cached_gases[/datum/gas/oxygen][MOLES] < cached_gases[/datum/gas/hydrogen][MOLES] || MINIMUM_H2_OXYBURN_ENERGY > air.thermal_energy())
+ burned_fuel = cached_gases[/datum/gas/oxygen][MOLES]/HYDROGEN_BURN_OXY_FACTOR
+ cached_gases[/datum/gas/hydrogen][MOLES] -= burned_fuel
+ else
+ burned_fuel = cached_gases[/datum/gas/hydrogen][MOLES]*HYDROGEN_BURN_H2_FACTOR
+ cached_gases[/datum/gas/hydrogen][MOLES] -= cached_gases[/datum/gas/hydrogen][MOLES]/HYDROGEN_BURN_H2_FACTOR
+ cached_gases[/datum/gas/oxygen][MOLES] -= cached_gases[/datum/gas/hydrogen][MOLES]
+
+ if(burned_fuel)
+ energy_released += (FIRE_HYDROGEN_ENERGY_RELEASED * burned_fuel)
+
+ ASSERT_GAS(/datum/gas/water_vapor, air) //oxygen+more-or-less hydrogen=H2O
+ cached_gases[/datum/gas/water_vapor][MOLES] += burned_fuel/HYDROGEN_BURN_OXY_FACTOR
+
+ cached_results["fire"] += burned_fuel
+
+ if(energy_released > 0)
+ var/new_heat_capacity = air.heat_capacity()
+ if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
+ air.temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity
+
+ //let the floor know a fire is happening
+ if(istype(location))
+ temperature = air.temperature
+ if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
+ location.hotspot_expose(temperature, CELL_VOLUME)
+ for(var/I in location)
+ var/atom/movable/item = I
+ item.temperature_expose(air, temperature, CELL_VOLUME)
+ location.temperature_expose(air, temperature, CELL_VOLUME)
+
+ return cached_results["fire"] ? REACTING : NO_REACTION
+
+/datum/gas_reaction/ammoniacrystals
+ priority = 8
+ name = "Ammonia crystals formation"
+ id = "nh4crystals"
+
+/datum/gas_reaction/ammoniacrystals/init_reqs()
+ min_requirements = list(
+ /datum/gas/hydrogen = MINIMUM_MOLE_COUNT,
+ /datum/gas/nitrogen = MINIMUM_MOLE_COUNT
+ )
+
+/datum/gas_reaction/ammoniacrystals/react(datum/gas_mixture/air, datum/holder)
+ var/energy_released = 0
+ var/old_heat_capacity = air.heat_capacity()
+ var/list/cached_gases = air.gases
+ var/temperature = air.temperature
+ var/turf/open/location = isturf(holder) ? holder : null
+ var/consumed_fuel = 0
+ if(temperature > 150 && temperature < T0C && cached_gases[/datum/gas/nitrogen][MOLES] > cached_gases[/datum/gas/hydrogen][MOLES])
+ consumed_fuel = (cached_gases[/datum/gas/hydrogen][MOLES] / AMMONIA_FORMATION_FACTOR)
+ cached_gases[/datum/gas/nitrogen][MOLES] -= consumed_fuel
+ cached_gases[/datum/gas/hydrogen][MOLES] -= consumed_fuel * 4
+ if(prob(30 * consumed_fuel))
+ new /obj/item/stack/ammonia_crystals(location)
+ energy_released += consumed_fuel * AMMONIA_FORMATION_ENERGY
+ if(energy_released > 0)
+ var/new_heat_capacity = air.heat_capacity()
+ if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
+ air.temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity
+
//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again). Again!
//Fusion Rework Counter: Please increment this if you make a major overhaul to this system again.
//6 reworks
@@ -306,7 +411,7 @@ datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
"TEMP" = FUSION_TEMPERATURE_THRESHOLD,
/datum/gas/tritium = FUSION_TRITIUM_MOLES_USED,
/datum/gas/plasma = FUSION_MOLE_THRESHOLD,
- /datum/gas/carbon_dioxide = FUSION_MOLE_THRESHOLD)
+ /datum/gas/hydrogen = FUSION_MOLE_THRESHOLD)
/datum/gas_reaction/fusion/react(datum/gas_mixture/air, datum/holder)
var/list/cached_gases = air.gases
@@ -322,7 +427,7 @@ datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
var/old_heat_capacity = air.heat_capacity()
var/reaction_energy = 0 //Reaction energy can be negative or positive, for both exothermic and endothermic reactions.
var/initial_plasma = cached_gases[/datum/gas/plasma][MOLES]
- var/initial_carbon = cached_gases[/datum/gas/carbon_dioxide][MOLES]
+ var/initial_hydrogen = cached_gases[/datum/gas/hydrogen][MOLES]
var/scale_factor = (air.volume)/(PI) //We scale it down by volume/Pi because for fusion conditions, moles roughly = 2*volume, but we want it to be based off something constant between reactions.
var/toroidal_size = (2*PI)+TORADIANS(arctan((air.volume-TOROID_VOLUME_BREAKEVEN)/TOROID_VOLUME_BREAKEVEN)) //The size of the phase space hypertorus
var/gas_power = 0
@@ -331,16 +436,16 @@ datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
var/instability = MODULUS((gas_power*INSTABILITY_GAS_POWER_FACTOR)**2,toroidal_size) //Instability effects how chaotic the behavior of the reaction is
cached_scan_results[id] = instability//used for analyzer feedback
- var/plasma = (initial_plasma-FUSION_MOLE_THRESHOLD)/(scale_factor) //We have to scale the amounts of carbon and plasma down a significant amount in order to show the chaotic dynamics we want
- var/carbon = (initial_carbon-FUSION_MOLE_THRESHOLD)/(scale_factor) //We also subtract out the threshold amount to make it harder for fusion to burn itself out.
+ var/plasma = (initial_plasma-FUSION_MOLE_THRESHOLD)/(scale_factor) //We have to scale the amounts of hydrogen and plasma down a significant amount in order to show the chaotic dynamics we want
+ var/hydrogen = (initial_hydrogen-FUSION_MOLE_THRESHOLD)/(scale_factor) //We also subtract out the threshold amount to make it harder for fusion to burn itself out.
//The reaction is a specific form of the Kicked Rotator system, which displays chaotic behavior and can be used to model particle interactions.
- plasma = MODULUS(plasma - (instability*sin(TODEGREES(carbon))), toroidal_size)
- carbon = MODULUS(carbon - plasma, toroidal_size)
+ plasma = MODULUS(plasma - (instability*sin(TODEGREES(hydrogen))), toroidal_size)
+ hydrogen = MODULUS(hydrogen - plasma, toroidal_size)
cached_gases[/datum/gas/plasma][MOLES] = plasma*scale_factor + FUSION_MOLE_THRESHOLD //Scales the gases back up
- cached_gases[/datum/gas/carbon_dioxide][MOLES] = carbon*scale_factor + FUSION_MOLE_THRESHOLD
+ cached_gases[/datum/gas/hydrogen][MOLES] = hydrogen*scale_factor + FUSION_MOLE_THRESHOLD
var/delta_plasma = initial_plasma - cached_gases[/datum/gas/plasma][MOLES]
reaction_energy += delta_plasma*PLASMA_BINDING_ENERGY //Energy is gained or lost corresponding to the creation or destruction of mass.
@@ -351,18 +456,17 @@ datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
if(air.thermal_energy() + reaction_energy < 0) //No using energy that doesn't exist.
cached_gases[/datum/gas/plasma][MOLES] = initial_plasma
- cached_gases[/datum/gas/carbon_dioxide][MOLES] = initial_carbon
+ cached_gases[/datum/gas/hydrogen][MOLES] = initial_hydrogen
return NO_REACTION
cached_gases[/datum/gas/tritium][MOLES] -= FUSION_TRITIUM_MOLES_USED
//The decay of the tritium and the reaction's energy produces waste gases, different ones depending on whether the reaction is endo or exothermic
if(reaction_energy > 0)
- air.assert_gases(/datum/gas/oxygen,/datum/gas/nitrous_oxide)
- cached_gases[/datum/gas/oxygen][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)
- cached_gases[/datum/gas/nitrous_oxide][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)
+ air.assert_gases(/datum/gas/carbon_dioxide,/datum/gas/water_vapor)
+ cached_gases[/datum/gas/carbon_dioxide][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)
+ cached_gases[/datum/gas/water_vapor][MOLES] += (FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)) * 0.25
else
- air.assert_gases(/datum/gas/bz,/datum/gas/nitryl)
- cached_gases[/datum/gas/bz][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT)
- cached_gases[/datum/gas/nitryl][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT)
+ air.assert_gases(/datum/gas/carbon_dioxide)
+ cached_gases[/datum/gas/carbon_dioxide][MOLES] += FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT)
if(reaction_energy)
if(location)
@@ -483,6 +587,44 @@ datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
air.temperature = max(((temperature*old_heat_capacity + energy_released)/new_heat_capacity),TCMB)
return REACTING
+/datum/gas_reaction/metalhydrogen
+ priority = 9
+ name = "Metal Hydrogen formation"
+ id = "metalhydrogen"
+
+/datum/gas_reaction/metalhydrogen/init_reqs()
+ min_requirements = list(
+ /datum/gas/hydrogen = 100,
+ /datum/gas/bz = 5,
+ "TEMP" = METAL_HYDROGEN_MINIMUM_HEAT
+ )
+
+/datum/gas_reaction/metalhydrogen/react(datum/gas_mixture/air, datum/holder)
+ var/list/cached_gases = air.gases
+ var/temperature = air.temperature
+ var/old_heat_capacity = air.heat_capacity()
+ ///the more heat you use the higher is this factor
+ var/increase_factor = min((temperature / METAL_HYDROGEN_MINIMUM_HEAT), 5)
+ ///the more moles you use and the higher the heat, the higher is the efficiency
+ var/heat_efficency = cached_gases[/datum/gas/hydrogen][MOLES] * 0.01 * increase_factor
+ var/pressure = air.return_pressure()
+ var/energy_used = heat_efficency * METAL_HYDROGEN_FORMATION_ENERGY
+ var/turf/open/location = isturf(holder) ? holder : null
+
+ if(pressure >= METAL_HYDROGEN_MINIMUM_PRESSURE && temperature >= METAL_HYDROGEN_MINIMUM_HEAT)
+ cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.01
+ if (prob(20 * increase_factor))
+ cached_gases[/datum/gas/hydrogen][MOLES] -= heat_efficency * 10
+ if (prob(50 / increase_factor))
+ new /obj/item/stack/sheet/mineral/metal_hydrogen(location)
+ SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min((heat_efficency * increase_factor), METAL_HYDROGEN_RESEARCH_MAX_AMOUNT))
+
+ if(energy_used > 0)
+ var/new_heat_capacity = air.heat_capacity()
+ if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
+ air.temperature = max(((temperature * old_heat_capacity - energy_used) / new_heat_capacity),TCMB)
+ return REACTING
+
/datum/gas_reaction/freonformation
priority = 5
name = "Freon formation"
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index e721f32f393..1a0765d85a1 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -102,7 +102,8 @@
/datum/gas/stimulum = new/datum/tlv/dangerous,
/datum/gas/nitryl = new/datum/tlv/dangerous,
/datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires
- /datum/gas/freon = new/datum/tlv/dangerous
+ /datum/gas/freon = new/datum/tlv/dangerous,
+ /datum/gas/hydrogen = new/datum/tlv/dangerous
)
/obj/machinery/airalarm/server // No checks here.
@@ -122,7 +123,8 @@
/datum/gas/stimulum = new/datum/tlv/no_checks,
/datum/gas/nitryl = new/datum/tlv/no_checks,
/datum/gas/pluoxium = new/datum/tlv/no_checks,
- /datum/gas/freon = new/datum/tlv/no_checks
+ /datum/gas/freon = new/datum/tlv/no_checks,
+ /datum/gas/hydrogen = new/datum/tlv/no_checks
)
/obj/machinery/airalarm/kitchen_cold_room // Kitchen cold rooms start off at -80°C or 193.15°K.
@@ -142,7 +144,8 @@
/datum/gas/stimulum = new/datum/tlv/dangerous,
/datum/gas/nitryl = new/datum/tlv/dangerous,
/datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires
- /datum/gas/freon = new/datum/tlv/dangerous
+ /datum/gas/freon = new/datum/tlv/dangerous,
+ /datum/gas/hydrogen = new/datum/tlv/dangerous
)
/obj/machinery/airalarm/unlocked
@@ -244,7 +247,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "airalarm", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AirAlarm", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/airalarm/ui_data(mob/user)
@@ -531,7 +534,8 @@
/datum/gas/bz,
/datum/gas/stimulum,
/datum/gas/pluoxium,
- /datum/gas/freon
+ /datum/gas/freon,
+ /datum/gas/hydrogen
),
"scrubbing" = 1,
"widenet" = 1
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
index 75061a4aa2d..35a8e33deda 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
@@ -28,13 +28,13 @@ Passive gate is similar to the regular pump except:
ui_x = 335
ui_y = 115
-
+
/obj/machinery/atmospherics/components/binary/passive_gate/CtrlClick(mob/user)
if(can_interact(user))
on = !on
update_icon()
return ..()
-
+
/obj/machinery/atmospherics/components/binary/passive_gate/AltClick(mob/user)
if(can_interact(user))
target_pressure = MAX_OUTPUT_PRESSURE
@@ -106,7 +106,7 @@ Passive gate is similar to the regular pump except:
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_pump", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosPump", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/binary/passive_gate/ui_data()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
index 9d6f6b82cab..b300cadbdfe 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
@@ -100,7 +100,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_pump", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosPump", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/binary/pump/ui_data()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
index c33336758f4..65891612503 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
@@ -113,7 +113,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_pump", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosPump", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/binary/volume_pump/ui_data()
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
index 75bb2355414..f1fc9ee0b67 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
@@ -123,7 +123,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_filter", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosFilter", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/trinary/filter/ui_data()
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
index 326c978f308..83de28843fc 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
@@ -129,7 +129,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_mixer", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosMixer", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/trinary/mixer/ui_data()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index b3eb35e2ef8..56376e1bdfc 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -333,7 +333,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "cryo", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Cryo", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/unary/cryo_cell/ui_data()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index c3ffa680239..6d0d3b4c4b1 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -25,7 +25,7 @@
ui_x = 310
ui_y = 115
-
+
/obj/machinery/atmospherics/components/unary/outlet_injector/CtrlClick(mob/user)
if(can_interact(user))
on = !on
@@ -146,7 +146,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_pump", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "AtmosPump", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/unary/outlet_injector/ui_data()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index 267530f10a7..53325f5a6dd 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -127,7 +127,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "thermomachine", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "ThermoMachine", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/unary/thermomachine/ui_data(mob/user)
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index f386d5f9bef..ca1959f2459 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -1,4 +1,8 @@
-#define CAN_DEFAULT_RELEASE_PRESSURE (ONE_ATMOSPHERE)
+#define CAN_DEFAULT_RELEASE_PRESSURE (ONE_ATMOSPHERE)
+///Used when setting the mode of the canisters, enabling us to switch the overlays
+#define CANISTER_TIER_1 1
+#define CANISTER_TIER_2 2
+#define CANISTER_TIER_3 3
/obj/machinery/portable_atmospherics/canister
name = "canister"
@@ -18,6 +22,10 @@
var/release_pressure = ONE_ATMOSPHERE
var/can_max_release_pressure = (ONE_ATMOSPHERE * 10)
var/can_min_release_pressure = (ONE_ATMOSPHERE / 10)
+ ///Max amount of heat allowed inside of the canister before it starts to melt (different tiers have different limits)
+ var/heat_limit = 5000
+ ///Max amount of pressure allowed inside of the canister before it starts to break (different tiers have different limits)
+ var/pressure_limit = 50000
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 50)
max_integrity = 250
@@ -34,6 +42,8 @@
var/maximum_timer_set = 300
var/timing = FALSE
var/restricted = FALSE
+ ///Set the tier of the canister and overlay used
+ var/mode = CANISTER_TIER_1
req_access = list()
var/update = 0
@@ -53,7 +63,8 @@
"pluoxium" = /obj/machinery/portable_atmospherics/canister/pluoxium,
"caution" = /obj/machinery/portable_atmospherics/canister,
"miasma" = /obj/machinery/portable_atmospherics/canister/miasma,
- "freon" = /obj/machinery/portable_atmospherics/canister/freon
+ "freon" = /obj/machinery/portable_atmospherics/canister/freon,
+ "hydrogen" = /obj/machinery/portable_atmospherics/canister/hydrogen
)
/obj/machinery/portable_atmospherics/canister/interact(mob/user)
@@ -63,6 +74,11 @@
return
..()
+/obj/machinery/portable_atmospherics/canister/examine(user)
+ . = ..()
+ if(mode)
+ . += "This canister is tier [mode]."
+
/obj/machinery/portable_atmospherics/canister/nitrogen
name = "n2 canister"
desc = "Nitrogen gas. Reportedly useful for something."
@@ -155,13 +171,24 @@
gas_type = /datum/gas/freon
filled = 1
+/obj/machinery/portable_atmospherics/canister/hydrogen
+ name = "hydrogen canister"
+ desc = "Hydrogen, highly flammable"
+ icon_state = "grey"
+ gas_type = /datum/gas/hydrogen
+ filled = 1
+
+
/obj/machinery/portable_atmospherics/canister/fusion_test
name = "fusion test canister"
desc = "Don't be a badmin."
+ heat_limit = 1e12
+ pressure_limit = 1e14
+ mode = CANISTER_TIER_3
/obj/machinery/portable_atmospherics/canister/fusion_test/create_gas()
- air_contents.add_gases(/datum/gas/carbon_dioxide, /datum/gas/plasma, /datum/gas/tritium)
- air_contents.gases[/datum/gas/carbon_dioxide][MOLES] = 500
+ air_contents.add_gases(/datum/gas/hydrogen, /datum/gas/plasma, /datum/gas/tritium)
+ air_contents.gases[/datum/gas/hydrogen][MOLES] = 500
air_contents.gases[/datum/gas/plasma][MOLES] = 500
air_contents.gases[/datum/gas/tritium][MOLES] = 350
air_contents.temperature = 15000
@@ -202,6 +229,32 @@
filled = 1
release_pressure = ONE_ATMOSPHERE*2
+/obj/machinery/portable_atmospherics/canister/tier_1
+ name = "Tier 1 canister"
+ heat_limit = 5000
+ pressure_limit = 50000
+ mode = CANISTER_TIER_1
+
+/obj/machinery/portable_atmospherics/canister/tier_2
+ name = "Tier 2 canister"
+ heat_limit = 500000
+ pressure_limit = 5e6
+ volume = 3000
+ max_integrity = 300
+ can_max_release_pressure = (ONE_ATMOSPHERE * 30)
+ can_min_release_pressure = (ONE_ATMOSPHERE / 30)
+ mode = CANISTER_TIER_2
+
+/obj/machinery/portable_atmospherics/canister/tier_3
+ name = "Tier 3 canister"
+ heat_limit = 1e12
+ pressure_limit = 1e14
+ volume = 5000
+ max_integrity = 500
+ can_max_release_pressure = (ONE_ATMOSPHERE * 30)
+ can_min_release_pressure = (ONE_ATMOSPHERE / 50)
+ mode = CANISTER_TIER_3
+
/obj/machinery/portable_atmospherics/canister/Initialize(mapload, datum/gas_mixture/existing_mixture)
. = ..()
if(existing_mixture)
@@ -212,6 +265,7 @@
pump.on = TRUE
pump.machine_stat = 0
pump.build_network()
+ update_overlays()
/obj/machinery/portable_atmospherics/canister/Destroy()
qdel(pump)
@@ -251,9 +305,16 @@
. += "can-o1"
else if(pressure >= 10)
. += "can-o0"
+ ///Function is used to actually set the overlays
+ if(mode == CANISTER_TIER_1)
+ . += "tier1-o"
+ else if(mode == CANISTER_TIER_2)
+ . += "tier2-o"
+ else if(mode == CANISTER_TIER_3)
+ . += "tier3-o"
/obj/machinery/portable_atmospherics/canister/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > temperature_resistance)
+ if(exposed_temperature > (temperature_resistance * mode))
take_damage(5, BURN, 0)
@@ -336,12 +397,18 @@
pump.airs[2] = null
update_icon()
+ var/pressure = air_contents.return_pressure()
+ var/temperature = air_contents.return_temperature()
+ ///function used to check the limit of the canisters and also set the amount of damage that the canister can recieve, if the heat and pressure are way higher than the limit the more damage will be done
+ if(temperature > heat_limit || pressure > pressure_limit)
+ take_damage(clamp((temperature/heat_limit) * (pressure/pressure_limit), 5, 50), BURN, 0)
+ return
/obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "canister", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Canister", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/portable_atmospherics/canister/ui_data()
diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm
index d3768d3d216..decfcbcc404 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -11,6 +11,12 @@
ui_x = 300
ui_y = 315
+ max_integrity = 250
+ ///Max amount of heat allowed inside of the canister before it starts to melt (different tiers have different limits)
+ var/heat_limit = 5000
+ ///Max amount of pressure allowed inside of the canister before it starts to break (different tiers have different limits)
+ var/pressure_limit = 50000
+
var/on = FALSE
var/direction = PUMP_OUT
var/obj/machinery/atmospherics/components/binary/pump/pump
@@ -43,6 +49,14 @@
/obj/machinery/portable_atmospherics/pump/process_atmos()
..()
+
+ var/pressure = air_contents.return_pressure()
+ var/temperature = air_contents.return_temperature()
+ ///function used to check the limit of the pumps and also set the amount of damage that the pump can recieve, if the heat and pressure are way higher than the limit the more damage will be done
+ if(temperature > heat_limit || pressure > pressure_limit)
+ take_damage(clamp((temperature/heat_limit) * (pressure/pressure_limit), 5, 50), BURN, 0)
+ return
+
if(!on)
pump.airs[1] = null
pump.airs[2] = null
@@ -87,7 +101,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "portable_pump", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "PortablePump", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/portable_atmospherics/pump/ui_data()
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index 9729f6c4980..da4b57532e9 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -3,7 +3,13 @@
icon_state = "pscrubber:0"
density = TRUE
ui_x = 320
- ui_y = 335
+ ui_y = 350
+
+ max_integrity = 250
+ ///Max amount of heat allowed inside of the canister before it starts to melt (different tiers have different limits)
+ var/heat_limit = 5000
+ ///Max amount of pressure allowed inside of the canister before it starts to break (different tiers have different limits)
+ var/pressure_limit = 50000
var/on = FALSE
var/volume_rate = 1000
@@ -11,7 +17,7 @@
var/use_overlays = TRUE
volume = 1000
- var/list/scrubbing = list(/datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitryl, /datum/gas/tritium, /datum/gas/hypernoblium, /datum/gas/water_vapor, /datum/gas/freon)
+ var/list/scrubbing = list(/datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitryl, /datum/gas/tritium, /datum/gas/hypernoblium, /datum/gas/water_vapor, /datum/gas/freon, /datum/gas/hydrogen)
/obj/machinery/portable_atmospherics/scrubber/Destroy()
var/turf/T = get_turf(src)
@@ -33,6 +39,14 @@
/obj/machinery/portable_atmospherics/scrubber/process_atmos()
..()
+
+ var/pressure = air_contents.return_pressure()
+ var/temperature = air_contents.return_temperature()
+ ///function used to check the limit of the scrubbers and also set the amount of damage that the scrubber can recieve, if the heat and pressure are way higher than the limit the more damage will be done
+ if(temperature > heat_limit || pressure > pressure_limit)
+ take_damage(clamp((temperature/heat_limit) * (pressure/pressure_limit), 5, 50), BURN, 0)
+ return
+
if(!on)
return
@@ -78,7 +92,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "portable_scrubber", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "PortableScrubber", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/portable_atmospherics/scrubber/ui_data()
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 0164d188d36..2f7ae0f9065 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -279,7 +279,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
. = ..()
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "gateway", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Gateway", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/gateway_control/ui_data(mob/user)
diff --git a/code/modules/cargo/blackmarket/blackmarket_uplink.dm b/code/modules/cargo/blackmarket/blackmarket_uplink.dm
index 35ba17e2418..3833b0505a5 100644
--- a/code/modules/cargo/blackmarket/blackmarket_uplink.dm
+++ b/code/modules/cargo/blackmarket/blackmarket_uplink.dm
@@ -4,7 +4,7 @@
icon_state = "uplink"
// UI variables.
- var/ui_x = 720
+ var/ui_x = 600
var/ui_y = 480
var/viewing_category
var/viewing_market
@@ -58,7 +58,7 @@
/obj/item/blackmarket_uplink/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "blackmarket_uplink", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "BlackMarketUplink", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/item/blackmarket_uplink/ui_data(mob/user)
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index 52310187939..7c6aa16c5dd 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -56,7 +56,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "centcom_podlauncher", "Config/Launch Supplypod", 700, 700, master_ui, state)
+ ui = new(user, src, ui_key, "CentcomPodLauncher", "Config/Launch Supplypod", 700, 700, master_ui, state)
ui.open()
/datum/centcom_podlauncher/ui_data(mob/user) //Sends info about the pod to the UI.
diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm
index e8bf847b499..c07abe8f104 100644
--- a/code/modules/cargo/console.dm
+++ b/code/modules/cargo/console.dm
@@ -68,7 +68,7 @@
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "cargo", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "Cargo", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/cargo/ui_data()
diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm
index 9373e6b8514..69291461a93 100644
--- a/code/modules/cargo/exports/large_objects.dm
+++ b/code/modules/cargo/exports/large_objects.dm
@@ -139,4 +139,5 @@
worth += gases[/datum/gas/tritium][MOLES]*5
worth += gases[/datum/gas/pluoxium][MOLES]*5
worth += gases[/datum/gas/freon][MOLES]*15
+ worth += gases[/datum/gas/hydrogen][MOLES]*25
return worth
diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm
index a79123591c8..34cb5b8674e 100644
--- a/code/modules/cargo/exports/materials.dm
+++ b/code/modules/cargo/exports/materials.dm
@@ -107,3 +107,9 @@
message = "cm3 of Hot Ice"
material_id = /datum/material/hot_ice
export_types = /obj/item/stack/sheet/hot_ice
+
+/datum/export/material/metal_hydrogen
+ cost = 550
+ unit_name = "of metallic hydrogen"
+ material_id = /datum/material/metalhydrogen
+ export_types = /obj/item/stack/sheet/mineral/metal_hydrogen
diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm
index ef779eb3c73..93b60c7b880 100644
--- a/code/modules/cargo/exports/sheets.dm
+++ b/code/modules/cargo/exports/sheets.dm
@@ -99,6 +99,11 @@
unit_name = "cable piece"
export_types = list(/obj/item/stack/cable_coil)
+/datum/export/stack/ammonia_crystals
+ cost = 25
+ unit_name = "of ammonia crystal"
+ export_types = list(/obj/item/stack/ammonia_crystals)
+
// Weird Stuff
/datum/export/stack/abductor
diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm
index af01a824684..440c0dcbcd4 100644
--- a/code/modules/cargo/expressconsole.dm
+++ b/code/modules/cargo/expressconsole.dm
@@ -91,7 +91,7 @@
/obj/machinery/computer/cargo/express/ui_interact(mob/living/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) // Remember to use the appropriate state.
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "cargo_express", name, ui_x, ui_y, master_ui, state)
+ ui = new(user, src, ui_key, "CargoExpress", name, ui_x, ui_y, master_ui, state)
ui.open()
/obj/machinery/computer/cargo/express/ui_data(mob/user)
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 2c01ac1d231..eb0b0a9efa5 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -2538,7 +2538,7 @@
/datum/supply_pack/misc/religious_supplies
name = "Religious Supplies Crate"
desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets."
- cost = 4000 // it costs so much because the Space Church is ran by Space Jews
+ cost = 4000 // it costs so much because the Space Church needs funding to build a cathedral
contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater,
/obj/item/reagent_containers/food/drinks/bottle/holywater,
/obj/item/storage/book/bible/booze,
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 62f42ecf1fa..18768d1135c 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -659,35 +659,40 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Hide Dead Chat: [(chat_toggles & CHAT_DEAD)?"Shown":"Hidden"]
"
dat += "Hide Radio Messages: [(chat_toggles & CHAT_RADIO)?"Shown":"Hidden"]
"
dat += "Hide Prayers: [(chat_toggles & CHAT_PRAYER)?"Shown":"Hidden"]
"
+ dat += "Ignore Being Summoned as Cult Ghost: [(toggles & ADMIN_IGNORE_CULT_GHOST)?"Don't Allow Being Summoned":"Allow Being Summoned"]
"
if(CONFIG_GET(flag/allow_admin_asaycolor))
dat += "
"
dat += "ASAY Color: Change
"
//deadmin
dat += "